【发布时间】:2013-02-26 13:22:34
【问题描述】:
系统包含一个管理控制台和一个工作服务器集群。应用程序状态存储在数据库中。用户可以从管理控制台添加新作业、监控正在运行的作业等。工作服务器从 db 获取作业并进行处理。
现在,一些配置也存储在数据库中。配置也会加载到每个工作服务器上,并且大部分都被缓存,因为配置不会经常更改。
管理员能够更改配置(从管理控制台)。更改存储在数据库中。将更改推送到工作服务器的最佳方式是什么?
到目前为止我的想法:
在更新/删除/插入时在配置表上添加触发器并更新某些辅助表中的时间戳。每个工作服务器在访问缓存之前都会检查此辅助表是否有更改。 缺点:仍在访问数据库。
从管理控制台向所有工作服务器发送请求,配置已更改,下次调用时必须从数据库中读取。 缺点:引入了管理员和服务器之间的 http 通信 - 迄今为止不存在的新层 - 并且它的可靠性值得怀疑。
有这方面的经验吗?
【问题讨论】:
-
为什么管理控制台无法启动更新?
-
它安装在单独的计算机实例上,不在工作计算机的集群中。所以基本上想法 #2 是管理控制台启动更新的地方。将澄清我的问题。
-
使数据库关闭所有连接并告诉服务器在发生这种情况时重新配置。
标签: java database architecture