Asynchronous 异步cassandra查询
我一直在尝试更新一个应用程序以提高性能,它使用Datastax Cassandra Java驱动程序提供DAL服务 现在,我需要将同步查询转换为异步查询,对于我的疑问,我没有找到令人满意的答案(至少在我访问的网页上没有) 任何人都可以回答下面的问题或参考一个链接,我可以得到答案 1> 在将synced executes更改为ansync execs之前,我需要担心哪些可能的问题场景 2> 读和写的行为如何,我可以在不担心任何问题的情况下更改其中一个吗Asynchronous 异步cassandra查询,asynchronous,cassandra,cassandra-2.0,datastax-java-driver,Asynchronous,Cassandra,Cassandra 2.0,Datastax Java Driver,我一直在尝试更新一个应用程序以提高性能,它使用Datastax Cassandra Java驱动程序提供DAL服务 现在,我需要将同步查询转换为异步查询,对于我的疑问,我没有找到令人满意的答案(至少在我访问的网页上没有) 任何人都可以回答下面的问题或参考一个链接,我可以得到答案 1> 在将synced executes更改为ansync execs之前,我需要担心哪些可能的问题场景 2> 读和写的行为如何,我可以在不担心任何问题的情况下更改其中一个吗 提前谢谢 有几件事你需要考虑: 您需要对代
提前谢谢 有几件事你需要考虑:
- 您需要对代码进行分级限制-默认情况下,每个连接只有1024个请求,因此您可能需要这样做。但是,即使每个连接的请求数量增加,也很容易使Cassandra过载,因此您仍然需要使用以下方法来控制它:李>
- 您需要正确地处理错误-您可能需要添加错误处理程序来保证返回的错误,并做出相应的反应李>
- 您需要正确地创建语句-例如,不要重用相同的
,因为它不是线程安全的李>BoundStatement
- 不要重复使用作为参数传递的相同列表/集/映射实例等
executeAsync
的使用方式与execute
的使用方式相同……太棒了!非常清楚,在我的例子中,批处理是针对多个表的,所以我认为使用executeAsync是无用的。为什么,它仍然有用,因为您仍然可以并行执行,而无需添加更多线程。但是您确实需要考虑批处理的使用——它们非常昂贵,并且应该只在有限数量的情况下使用。使用批处理可以确保事务的原子性。我编写的初始代码是以异步方式处理批处理。我有多个事务,每个事务都有一组upserts。因此,我尝试对每个批使用异步来获得更好的性能,而不是以同步的方式对每个批执行批处理。有道理,对吧?