我有一台HTTP服务器一直在接收新的客户端连接。每次,我都必须重新连接到Cassandra集群(每个客户端都通过fork()调用连接到一个新进程。)
我有两个问题:
速度:我想尽快使用连接;
健壮性:任何一个Cassandra节点都可能关闭。
我认为最好的机制适用于任何集群,而不仅仅是Cassandra。
我们使用thrift进行连接,虽然我们稍后可能会改变它。无论哪种方式,就网络连接而言,我们只需执行常规的socket()
,bind()
和connect()
来电。
我见过处理类似问题的大部分代码都非常串行:它会尝试连接到主机1,如果超时,请再次尝试使用主机2等,直到所有主机都用完为止。
我原本以为我可以为每个连接尝试创建一个线程(具有某种限制,如3,4或5次并行尝试 - 数量将取决于Cassandra集群的大小。)但是,我虽然我认为如果所有连接成功,我可能会在集群方面浪费大量时间......
这种事情是否有特定的解决方式?
答案 0 :(得分:1)