Erlang: 如何重新加载应用程序环境配置?

5

如何重新加载应用程序的配置?或者说,有哪些管理动态应用程序配置的好策略?

例如,假设我有日志级别,并且我想在运行时更改它们。另外,假设这是许多类似选项之一。是否有意义建立一个“配置服务器”,保存其他部分应用程序要查询的配置状态?人们是否这样做过,还是我自己瞎编的?

2个回答

0

我相信将所有配置数据存储在存储库(如Subversion,Mercurial等)中并在应用程序每次启动或尝试重新加载其配置选项时下载它是合理的。这是集中化方法 - 但是您可以有多个配置服务器以避免 SPOF,并且它:

  • 允许您跟踪更改,以便您知道谁何时放置了这些更改(没有人想负责不正确的配置);
  • 使您能够在整个网络中为所有应用程序使用相同的配置;
  • 更改的易于性:您只需修改配置并使用gen_server:abcast调用或其他手段通知相关应用程序即可。

proplists(3) 在读取配置时非常有用。


0

如果我理解正确,问题如下:

您想创建一个分布式、可扩展的系统,当然Erlang是首选,因为它是为这些目的而设计的。

  • 您将有几个节点,这些节点将运行本地应用程序和分布式应用程序。

  • 这里最简单的层次结构是为每个主要功能设置热备份。

  • 这可以通过实现分布式应用程序控制器来实现。

    • 最简单的例子是在一个节点上启动服务器,同时在伙伴节点上同时启动从服务器。

    • 分布式应用程序控制器有许多优点。

      • 简单的例子是通过引入新消息来不同地处理node_up消息,这些消息表明节点不仅准备好了erlang VM,而且所有重要的应用程序都在运行。这样,伙伴节点就可以确信备用节点已经准备好并可以开始同步。

如果我误解了什么,请详细说明或评论。 祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接