java-如何处理Cassandra中的竞赛条件?
我正在使用Cassandra db开发一个简单的Spring Boot微服务. 我的服务器在Subscription类中的主要实体如下:
我的存储库使用Subscription对象并将其持久化. >一个订阅将被保留 解决该问题的正确方法是什么? 值得一提的是:用户的顺序无关紧要.如果要持久保留用户“ 1”和“ 2”的订阅,则必须不存在用户“ 1”和“ 2”或“ 2”和“ 1”的其他订阅. UPD:考虑@bhspencer的答案,我可以提出另一种情况(我还需要强制状态保持一致): >一个订阅将与firstUserStatus =“ ISSUED”和secondUserStatus =“ WAITING_ACTION”一起保留 最佳答案
将对象的ID设置为firstUser secondUser的串联.将id用作确保您的订阅唯一的主键.
由于您的订购要求,您应该首先对firstUser和secondUser进行排序,然后将它们按排序顺序进行连接.这样做意味着generateId(“ 1”,“ 2”)和generateId(“ 2”.“ 1”)都将生成相同的ID“ 1-2”.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |