假设我使用LRU Cache或类似的东西在每个服务器上都有一个本地缓存.如果我在一个节点上使对象无效,那么应该注意其他节点.我已经看到这用jgroups实现了.
我想知道使用jms(比如说ActiveMQ)的"缓存失效队列"是否适合应用程序.不确定响应时间等等.
这取决于您的约束,即您可以承受陈旧读取的时间长度(即缓存返回过时的数据).
如果这根本不会造成伤害,JMS是一种通知所有成员的好方法,因为很容易确保每个成员最终获得"刷新"消息.
如果需要确保立即刷新过时的数据,可以使用JMS通过向游戏添加事务和请求/响应周期来协调刷新.但这意味着如果你不小心,你可能会陷入死锁或饥饿的过程 - 这是你必须为同步付出的代价.
如果这让您感到困扰,那么问题就是您可以使用其他技术来实现相同的结果.您可以使用RMI或套接字但是,您必须重新发明轮子(这意味着您将花费大量时间来获取JMS已经存在的位置).但这只会替换另一种传输技术 - 它对同步问题没有帮助.
或者您可以使用支持群集的缓存.您可以尝试使用Terracotta的Enterprise Ehcache,但它会使用类似的技术来保持缓存同步.最大的优点是Ehcache已经使用(=调试)多年了,所以你只会遇到众所周知的问题.
| 归档时间: |
|
| 查看次数: |
670 次 |
| 最近记录: |