gpt4 book ai didi

c++ - Cassandra session 线程安全吗? (使用 cpp 驱动程序)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:04 24 4
gpt4 key购买 nike

我正在开发一个多线程应用程序并使用 Cassandra 作为后端。

之前,我为每个子线程创建了一个单独的 session ,并在线程执行结束前关闭 session 。但后来我认为这可能是一项昂贵的工作,所以我现在将其设计为在服务器启动时打开一个 session ,任意数量的客户端都可以使用该 session 进行查询。

问题:我只想知道这是否正确,或者有更好的方法吗?我知道连接池是一种选择,但在这种情况下真的需要吗?

最佳答案

它在 Java 驱动程序中肯定是线程安全的,所以我假设 C++ 驱动程序是相同的。

我们鼓励您只创建一个 session 并让您的所有线程都使用它,这样驱动程序就可以有效地维护一个到集群的连接池并异步处理来自您的客户端线程的命令。

如果您在一台客户端计算机上创建多个 session 或不断打开和关闭 session ,您将迫使驱动程序不断建立和删除与集群的连接,这会浪费资源。

引用 this Datastax blog post使用 Cassandra 的 DataStax 驱动程序时的大约 4 个简单规则:

  1. Use one Cluster instance per (physical) cluster (per application lifetime)
  2. Use at most one Session per keyspace, or use a single Session and explicitely specify the keyspace in your queries
  3. If you execute a statement more than once, consider using a PreparedStatement
  4. You can reduce the number of network roundtrips and also have atomic operations by using Batches

关于c++ - Cassandra session 线程安全吗? (使用 cpp 驱动程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27919923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com