连接到Cassandra集群的最快方法是什么?

时间:2015-10-11 20:33:56

标签: cassandra network-programming server

我有一台HTTP服务器一直在接收新的客户端连接。每次,我都必须重新连接到Cassandra集群(每个客户端都通过fork()调用连接到一个新进程。)

我有两个问题:

  • 速度:我想尽快使用连接;

  • 健壮性:任何一个Cassandra节点都可能关闭。

我认为最好的机制适用于任何集群,而不仅仅是Cassandra。

我们使用thrift进行连接,虽然我们稍后可能会改变它。无论哪种方式,就网络连接而言,我们只需执行常规的socket()bind()connect()来电。

我见过处理类似问题的大部分代码都非常串行:它会尝试连接到主机1,如果超时,请再次尝试使用主机2等,直到所有主机都用完为止。

我原本以为我可以为每个连接尝试创建一个线程(具有某种限制,如3,4或5次并行尝试 - 数量将取决于Cassandra集群的大小。)但是,我虽然我认为如果所有连接成功,我可能会在集群方面浪费大量时间......

这种事情是否有特定的解决方式?

1 个答案:

答案 0 :(得分:1)

  1. Cassandra的DataStax驱动程序中提供了大多数(如果不是全部)这些功能(故障转移,智能请求例程,重试)。
  2. 如果可能的话,你应该远离Thrift。
  3. 如果你真的需要(请考虑花时间在已经弃用了很长时间的协议上开发和维护这个解决方案)创建自己的,你可以从DataStax驱动程序中获得一些灵感。