分布式系统的实体监听器和缓存
Entity Listener and caching for distributed system
我们有两个应用程序 server.One 是 App 服务器,另一个是 API 服务器。两者都有不同的缓存 system.If 一个改变了数据库,另一个没有得到 known.Below 是我们架构的图像,我们使用 spring 框架(Ehcache)进行缓存。
我们的项目中也有实体监听器。如果一个流程更改了数据库,那么其他流程不会受到影响。
我们如何同步应用服务器和缓存?请帮忙解决这个问题。
我可以想到几个方法来做到这一点。
1.带复制的集群: 如果你想使用 Spring 开箱即用的缓存提供程序,即 Ehcache,这实际上意味着你的缓存是节点级缓存,需要复制。检查以下 link 以使用 Terracotta 配置 ehcache 集群
http://ehcache.org/documentation/2.6/configuration/distributed-cache-configuration
2。集中式缓存服务器 我个人的选择是集中式缓存,如果需要,它可以通过自己的集群提供开箱即用的水平扩展支持。这将涉及从节点级别删除缓存,而不是将其集中在缓存服务器上。所以基本上你的缓存服务器位于你的数据库和你的应用程序节点之间。你可以看看 Memcached、Aerospike 和 Redis。
- Memcached 似乎有一个 Spring 集成
https://code.google.com/p/simple-spring-memcached/
- Aerospike 也可以与 Spring 数据项目集成,名为 spring-data-aerospike
我们有两个应用程序 server.One 是 App 服务器,另一个是 API 服务器。两者都有不同的缓存 system.If 一个改变了数据库,另一个没有得到 known.Below 是我们架构的图像,我们使用 spring 框架(Ehcache)进行缓存。
我们的项目中也有实体监听器。如果一个流程更改了数据库,那么其他流程不会受到影响。 我们如何同步应用服务器和缓存?请帮忙解决这个问题。
我可以想到几个方法来做到这一点。
1.带复制的集群: 如果你想使用 Spring 开箱即用的缓存提供程序,即 Ehcache,这实际上意味着你的缓存是节点级缓存,需要复制。检查以下 link 以使用 Terracotta 配置 ehcache 集群 http://ehcache.org/documentation/2.6/configuration/distributed-cache-configuration
2。集中式缓存服务器 我个人的选择是集中式缓存,如果需要,它可以通过自己的集群提供开箱即用的水平扩展支持。这将涉及从节点级别删除缓存,而不是将其集中在缓存服务器上。所以基本上你的缓存服务器位于你的数据库和你的应用程序节点之间。你可以看看 Memcached、Aerospike 和 Redis。
- Memcached 似乎有一个 Spring 集成 https://code.google.com/p/simple-spring-memcached/
- Aerospike 也可以与 Spring 数据项目集成,名为 spring-data-aerospike