Configuration 系统配置和系统状态之间有什么区别?

Configuration 系统配置和系统状态之间有什么区别?,configuration,state,Configuration,State,今天在一次设计会议上,我们讨论了在何处存储分布式应用程序的配置和状态的主题 事实证明,在那个次会议上,一些开发人员在听到配置或状态时理解了不同的事情。有些人甚至认为配置和状态是完全相同的 我很快总结出的理解是,配置描述了您希望系统的行为方式,系统应该解析该配置并采取措施以达到某种状态,该状态反映了该配置的实现和整合 例如,Apache服务器可能有一个配置,告诉它有15到30个工作进程。当服务器启动时,它很可能会启动其中的15个进程,达到有15个工作进程的状态。当请求传入时,它可能会更改其状态,使

今天在一次设计会议上,我们讨论了在何处存储分布式应用程序的配置和状态的主题

事实证明,在那个次会议上,一些开发人员在听到配置或状态时理解了不同的事情。有些人甚至认为配置和状态是完全相同的

我很快总结出的理解是,配置描述了您希望系统的行为方式,系统应该解析该配置并采取措施以达到某种状态,该状态反映了该配置的实现和整合

例如,Apache服务器可能有一个配置,告诉它有15到30个工作进程。当服务器启动时,它很可能会启动其中的15个进程,达到有15个工作进程的状态。当请求传入时,它可能会更改其状态,使其最多有30个活动工作进程

然而,我无法说服有问题的开发人员这两个概念是不同的,谷歌也没有给我提供比我能更好地解释我几乎是显而易见的区别是什么的更有说服力的参考资料


关于如何更好地解释这一点,有什么建议或链接吗?还是我错了?

您可以重置系统,从而丢失所有状态。它的配置仍然存在。

可以将“配置”视为包括应用程序的预期终身状态——无论是否有任何事情要做,该状态都存在;表示非硬编码内容如何发生的内部值。它通常是从一些外部源(如配置文件)获取的,但配置实际上不是文件本身,甚至不是该文件的内容——一旦该文件的内容被解析和应用,这就是应用程序的行为。

根据Merriam Webster(emphasis mine):

状态名词,通常为定语

1A:模式或 存在(状态)的状态 准备就绪)

con·fig·u·ra·tion 名词

一, a:零件或元件的相对排列:as(1):形状(2):土地轮廓(3):功能排列(最简单配置的小型商业计算机系统)

b:由于零件或部件的特殊排列而产生的东西(如图形、轮廓、图案或装置)


我知道你会如何将配置的(b)含义与状态联系起来,但这不是我在讨论系统配置时通常想到的定义。状态描述特定时刻的行为/属性,而我认为配置是指系统意味着初始化为行为的状态。

从理论角度来看,配置和从外部提供给程序的其他数据之间没有区别。两者都被归类为输入。我认为,任何将“配置”定义为特殊事物的尝试都会遇到无休止的边缘案例和例外,因此这不是一个自然的类别

另一方面,输入和状态之间有着明显的区别。输入是从外部提供的,而状态是内部的

考虑到这一点,考虑到一些应用程序被设计为在任何时候停止并重新启动以执行一个非常长的运行过程。对于这些应用程序,输入和状态之间的区别被最小化,因为总的程序状态必须被序列化到持久性介质,以便允许程序在将来继续它停止的地方。这在分布式应用程序中尤其常见


对于您正在处理的特定应用程序,配置和状态之间可能没有区别。

如果我们谈论的是系统,那么系统的状态就是某个时间点上系统所有变量的值,当系统执行其功能时,状态预计会发生变化;这就是一个系统的工作方式

另一方面,配置是系统拥有的状态变量的列表(或者更好,是一组),可以更改值或状态

因此,配置变量可能是温度,而该温度变量的对应状态是30度


现在,对于系统来说,这变得有点复杂,因为系统是一组(或至少是一组)组件,它们一起运行以实现功能或任务。我们希望每个组件配置变量的值处于良好状态(即,为其变量设置适当的值)

一两天前,我刚刚进行了同样的对话,并因此登上了这篇文章。我认为我能想出的区分这两者的最好办法是:

状态是系统设置为自身输入的东西

配置由用户设置为系统的输入

请注意,这些不是这两个术语的定义,而是区分它们的东西。这两个术语都意味着它们可以改变并在系统中产生不同的行为。我会考虑一些临时文件,编程编写的数据库条目,以及在这个过程中共享状态的内存,命令标志、配置文件和常量是“配置”。 我认为这符合@djna的观察,重置系统会清除状态,但不会清除配置

不管怎样,很抱歉挖掘了一个8年前的话题