【问题标题】:What is the difference between system configuration and system state?系统配置和系统状态有什么区别?
【发布时间】:2011-04-13 09:48:11
【问题描述】:

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

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

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

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

然而,我无法说服相关开发人员相信这两个概念是不同的,而且谷歌搜索并没有给我提供比我能更好地解释我几乎显而易见的区别的更有说服力的参考资料。

关于如何更好地解释这一点的任何建议或链接?还是我错了?

【问题讨论】:

    标签: configuration state


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      “配置”可以包含应用程序的预期终生状态——无论有没有事可做的状态;说明非硬编码的东西如何发生的内部值。它通常是从某个外部来源(如配置文件)获取的,但配置实际上并不是文件本身,甚至不是该文件的内容——它是该文件的内容被解析和应用后应用程序的行为。

      【讨论】:

        【解决方案3】:

        根据 Merriam-Webster (强调我的)

        状态名词,通常是定语

        1 a : 模式或 存在的状态(一种状态 准备好了)

        配置·fig·u·ra·tion 名词

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

        b : 某物(如图形、轮廓、图案或装置)源自零件或组件的特定排列

        我可以看到您如何将 configuration 的 (b) 含义与 state 联系起来,但这不是我在讨论系统配置时通常会想到的定义。状态描述特定时刻的行为/属性,而我认为配置是指系统打算初始化的状态> 行为。

        【讨论】:

          【解决方案4】:

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

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

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

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

          【讨论】:

            【解决方案5】:

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

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

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

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

            【讨论】:

              【解决方案6】:

              我在一两天前刚刚进行了同样的对话,并因此而结束了这篇文章。我认为区分两者的最佳方法是:

              状态是由系统设置为自身的输入。

              配置是用户设置的作为系统输入的东西。

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

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

              无论如何,抱歉挖掘了一个 8 年前的话题!

              【讨论】:

                猜你喜欢
                • 2018-08-11
                • 2019-08-29
                • 1970-01-01
                • 2011-07-23
                • 2014-02-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多