检测Galera集群DB(mysql)中的更改.实现应用程序缓存失效

fon*_*kap 9 java mysql distributed caching galera

我想为使用Galera集群(mysql)作为DB的分布式应用程序添加缓存.每个应用程序节点(java)都有一个本地缓存,用于读取和与数据库节点通信.

问题是当集群中的另一个节点修改了条目时,我不知道如何使缓存中的条目无效.
我的第一次尝试是使用数据库触发器,但我很快就意识到复制更新不会引发触发器.
其他想法是监视网络流量搜索修改或观看DB的binlog,但它们似乎都很难实现.

问题是:是否有任何实用的方法来检测复制中来自另一个节点的变化?
实现缓存失效的其他想法?

我想我也可以使用通过应用程序节点传递更改的分布式缓存,但我更喜欢在每个应用程序节点中使用隔离缓存,并将节点之间的数据同步委托给数据库集群.我认为缓存通信是冗余的网络流量......

提前致谢.

Ric*_*mes 4

坦率地说,你对系统进行了过度设计。

每个 Java 客户端“附近”都有一个集群节点,对吗?即每个数据中心有一个Node加上一个或多个Java客户端?

那时,Java 和数据之间几乎不需要额外的缓存;只需重新请求数据并让 MySQL 进行缓存即可。

如果您的查询速度很慢,那么让我们讨论一下它们,看看是否可以加快它们的速度。

我描述的设置应该能够每秒处理数百个甚至数千个查询。你的要求比这更严格吗?

请参阅wsrep_sync_wait以处理因果关系检查。