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

时间:2010-09-16 19:38:33

标签: configuration state

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

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

我很快总结的理解是配置描述了您希望系统如何运行,系统应解析该配置并采取措施以达到反映该配置的实施和合并的特定状态。

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

然而,我不能说服有问题的开发人员这两个概念是不同的,谷歌搜索并没有给我更多有说服力的参考资料,这些参考资料比我能更好地解释了我几乎所有的差异。

有关如何更好地解释这一点的任何建议或链接?或者我错了吗?

6 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

“配置”可以包括应用程序的预期终身状态 - 在那里是否有任何事情要做的状态;说明非硬编码内容如何发生的内部值。它通常从一些外部源(如配置文件)获得,但配置实际上不是文件本身,甚至不是该文件的内容 - 一旦解析并应用了该文件的内容,它就是应用程序的行为。

答案 2 :(得分:0)

根据Merriam-Webster (强调我的)

  

名词,通常是定语

     

1 a:模式或   存在的状况(状态)   就绪)

     

<强> CON·无花果·U·ラ·灰   名词

     

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

     

b:特定部件或组件排列产生的东西(如图形,轮廓,图案或设备)

我可以看到如何将(b)配置的含义与 state 相关联,但这不是我在讨论系统配置时通常会想到的定义。 State描述特定时刻的行为/属性,而我将配置表示系统意味着初始化为表现。

答案 3 :(得分:0)

从理论上讲,配置与从外部提供给程序的其他数据之间没有区别。两者都归类为输入。我认为任何将“配置”定义为特殊事物的尝试都会遇到无穷无尽的边缘情况和异常,所以这不是一个自然类别。

另一方面,输入和状态之间存在明显差异。输入是从外部提供的,而State是内部的。

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

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

答案 4 :(得分:0)

如果我们谈论系统,那么系统的状态恰好是系统在某个时间点的所有变量的值,状态随着系统执行它而发生变化;这就是系统如何开展业务。

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

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

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

答案 5 :(得分:0)

我只是在一两天前进行了相同的对话,因此就因此而发表在此帖子上。我认为我能想到的最好的区别是:

  

状态是系统自行设置的输入。

     

配置是用户设置为系统输入的内容。

请注意,这些不是这两个术语的定义,而是区别它们的内容。这两个术语都暗示它们可以更改并在系统中产生不同的行为。通过这种区别,我认为诸如临时文件,以编程方式编写的数据库条目以及进程之间共享的内存之类的东西将成为状态,而命令标志,配置文件和常量则为“配置”。

我认为这符合@djna的观察,即重置系统会擦除状态,但不会擦除配置。

无论如何,对不起,我挖掘了一个已有8年历史的主题!