我们正在使用Apache Cassandra3.x。
基于微服务的应用程序将根据用户输入执行JDBC alter或插入DDL语句,它们将到达一个节点,该节点上的架构将被更新,然后相同的更改将被传播到其他节点。
同时,如果其他应用程序节点(微服务)之一也收到用户的更改,则这很可能是更改同一张表或创建另一张表。
Cassandra应该可以很好地处理这种情况,但是在这种情况下,我们看到schema_versions不匹配,并且群集变成了非操作模式。
解决此类问题的最佳解决方案是什么?这是个常见的问题吗?
一个可能是在执行DDL之前检查本地和对等架构版本,但这也是检查版本的竞争条件。
select schema_version from system.local;
select schema_version from system.peers;