【发布时间】:2015-07-16 14:10:52
【问题描述】:
我们有两个应用服务器。一个是应用服务器,另一个是 API 服务器。两者都有不同的缓存系统。如果一个数据库发生变化,另一个数据库不会被知道。下面是我们架构的图像,我们使用 spring 框架(Ehcache)进行缓存。
我们的项目中也有实体监听器。如果一个流程更改了数据库,那么其他流程不会受到影响。 我们如何同步应用服务器和缓存?请帮忙。
【问题讨论】:
-
如果两个应用程序缓存完全相同类的实例,您可以简单地集群 EHCACHE 实例。一台服务器上的更改将反映在另一台服务器上。您必须确保两台服务器缓存完全相同的实体,以便没有人绕过缓存直接更新数据库。您可以通过在两个应用中使用相同的 EHCACHE 配置来实现这一点。
-
您也可以考虑将所有可缓存的实体类与必要的缓存配置一起打包到一个 JAR 中。然后,所有应用程序都将使用这个单一的 JAR。将来,如果您为 Web 应用程序或 API 添加更多应用程序服务器,则所有服务器将继续使用相同的缓存配置。这将提供的另一个优势是在需要时可以灵活地切换缓存实现。
-
感谢 Manish 建议 Ehcache 集群。我们在 API 服务器中创建了一个实体侦听器,用于 Web 通知。如果应用服务器更改实体,则 API(Web)服务器不知道。我们可以为两台服务器或两台服务器的一个配置集群 spring 配置。如果是,请您建议我们如何实现这一点。提前致谢。
-
如果缓存相同类的实例并且使用相同的缓存名称,则集群配置可以跨机器相同。 EHCACHE 文档中提供了有关集群配置的详细信息。
标签: database spring jakarta-ee application-server distributed-system