在所有实例中从数据库自动刷新

时间:2019-04-11 18:02:13

标签: java spring

在我的java / spring应用程序中,数据库记录是在服务器初始化时获取的,并存储为静态字段。当前,我们进行mbean刷新以刷新所有实例中的数据库值。还有其他方法可以通过编程方式刷新服务器所有实例上的数据库值吗?我正在阅读有关EntityManager刷新的信息。它将在所有实例中正常工作吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

例如,您可以每5分钟schedule重新加载。

或者您可以发送events,所有实例都对该事件做出反应。

答案 1 :(得分:0)

到目前为止,数据库与服务器之间的通信是单方面的,即应用服务器从数据库中请求数据。这通常会导致问题,并且正如您提到的,如果应用程序以集群模式运行,则所有应用程序服务器都无法知道数据库更改。

当前的解决方案包括不时地刷新字段(基于轮询的技术)。
为了使它成为基于推送的模型,我们可以在数据库上创建包装器API,并让这些包装器API将更改传递给所有应用程序服务器。

我的意思是,不要直接从一个应用程序服务器更新数据库值,而是在更新请求上将此更改请求发送到另一应用程序,该应用程序跟踪您的应用程序服务器并推送事件(通过API调用或队列)用于刷新传递的数据库表。

幸运的是,如果您使用的是一些新数据库(例如MongoDB),它们现在可以立即向应用服务器提供此更新推送。