有没有使用Cassandra内置函数同步客户端的方法?
我需要执行一些操作,并且这些操作需要与所有其他客户端进行同步(互斥)。
在关系型数据库中,我可以锁定整个表或准备特殊表以用于同步目的,并在其上使用SELECT ... FOR UPDATE。
如果没有第三方应用程序,我能否使用Cassandra实现这一点? 如果不能,最好的方法是什么?首选语言为Java和Python。
有没有使用Cassandra内置函数同步客户端的方法?
我需要执行一些操作,并且这些操作需要与所有其他客户端进行同步(互斥)。
在关系型数据库中,我可以锁定整个表或准备特殊表以用于同步目的,并在其上使用SELECT ... FOR UPDATE。
如果没有第三方应用程序,我能否使用Cassandra实现这一点? 如果不能,最好的方法是什么?首选语言为Java和Python。
如果没有第三方库(例如Apache ZooKeeper),无法锁定整个列族或其子集。
在开始自己的分布式锁定机制之前,我可能会首先查看Domic Williams的cages。
如果您更新列族中的一行数据,它是原子性的。但它不会像选择更新那样工作。您可能需要重新考虑数据模型并更多地解决冗余问题,这样您就不必担心同步问题了。
我也在寻找一种与cassandra同步的方法,但据我所知,它没有提供实现互斥锁的机制。
然而,memcached具有原子cas(检查并设置)操作,可以用于实现互斥锁。它还有python和java客户端。
因此,您可以使用memcached来实现同步的互斥锁,使用quorum一致性级别在cassandra中进行读/写数据,以确保返回的始终是最新的写入。
有人有使用memcached实现互斥锁的经验吗?