Cassandra中的同步与异步写入/删除

Cassandra中的同步与异步写入/删除,cassandra,datastax,Cassandra,Datastax,Cassandra中同步和异步写/删除的区别是什么 如果我使用executeAsynchronously()而不是CqlOperation类(datastax驱动程序)的execute()方法,它会提高吞吐量(TPS)方面的性能吗?在我的应用程序中,我执行单次插入/删除以及批量插入。 到目前为止,我只使用了execute方法(同步),我正在考虑使用异步执行来提高应用程序在TPS方面的性能 它肯定会提高性能。 我还没有试过,但下面的链接也是这么说的 同步写入(或删除)到cassandra将阻止代

Cassandra中同步和异步写/删除的区别是什么

如果我使用
executeAsynchronously()
而不是
CqlOperation
类(datastax驱动程序)的
execute()
方法,它会提高吞吐量(TPS)方面的性能吗?在我的应用程序中,我执行单次插入/删除以及批量插入。
到目前为止,我只使用了
execute
方法(同步),我正在考虑使用异步执行来提高应用程序在TPS方面的性能

它肯定会提高性能。 我还没有试过,但下面的链接也是这么说的

同步写入(或删除)到cassandra将阻止代码执行,直到客户端收到基于一致性级别的操作已完成的确认

另一方面,异步写入(或删除)将向cassandra发送查询,然后继续执行代码(不会阻塞)。现在,您必须注册某种回调,它将通知您(异步地)写操作已经完成


所有的阻塞加起来会减慢应用程序的速度。因为异步查询会立即进行,所以它们允许您在之后立即发送更多的异步查询,而不是等待第一个查询完成。这就是性能提高的地方,特别是当您向cassandra发送大量查询时。

异步写入提供了更好的每工作者性能,但它增加了回调和错误处理的开销

我最近做了一个测试,以发现性能优势,以及使用单个工作进程(异步写入1M条记录)进行错误处理的回调实现速度是同步记录的4倍<代码>飞行中查询被限制为1000,该数字可根据环境条件进行相应调整(您希望在线路上建立的连接数,例如,在200毫秒网络延迟和1毫秒服务器响应时间的情况下,您可能需要在飞行中设置200个查询,而同步呼叫会让服务器在200毫秒中释放199ms,在这种情况下,服务器几乎一直在处理至少一个查询)但如果没有限制,它将导致网络拥塞,并可能导致性能下降

在某些情况下,同步查询可能更合适,尤其是在继续执行程序之前查询结果很关键的情况下。但在大多数情况下,异步查询就足够了

简而言之,您的问题的答案是肯定的-我已经测试了TPS增加4倍


参考-

在读取批之前,请仔细阅读它们。批不会提高性能