C++ 我是否应该担心Cassandra C++;司机?
我有一个小小的Cassandra集群,其中有4个节点运行Cassandra 3.9 我将4个IP地址传递给C++ 我是否应该担心Cassandra C++;司机?,c++,networking,cassandra,cassandra-3.0,C++,Networking,Cassandra,Cassandra 3.0,我有一个小小的Cassandra集群,其中有4个节点运行Cassandra 3.9 我将4个IP地址传递给connect()函数,当我使用netstat-a4n | grep9042检查连接时,我可以看到它们都已连接。请注意,无论我将1个IP还是4个IP传递给connect(),完全连接后的结果都是相同的,包括到10.0.1.1节点的双重连接。。。(10.0.1.1和10.0.1.3是种子,但不知怎么的,只有10.0.1.1有双重连接,所以我不太清楚为什么会发生这种情况,我尝试重新排列用于连接的
connect()
函数,当我使用netstat-a4n | grep9042
检查连接时,我可以看到它们都已连接。请注意,无论我将1个IP还是4个IP传递给connect()
,完全连接后的结果都是相同的,包括到10.0.1.1节点的双重连接。。。(10.0.1.1和10.0.1.3是种子,但不知怎么的,只有10.0.1.1有双重连接,所以我不太清楚为什么会发生这种情况,我尝试重新排列用于连接的IP列表,最后也没什么不同。)
当我查看nodetool status
的输出时,它看起来非常好:
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 10.0.1.1 7.92 MiB 256 76.1% (id) rack1
UN 10.0.1.4 12.26 MiB 256 77.7% (id) rack1
UN 10.0.1.3 10.08 MiB 256 72.2% (id) rack1
UN 10.0.1.2 8.77 MiB 256 74.0% (id) rack1
(注意:我删除了ID,它们在这里没有用处)
然而,就网络而言,当我看到传输到这些机器的数据量时,我看到了巨大的差异。我使用了iptables-L-nvx
命令,令我惊讶的是,我向第一个Cassandra节点发送了大约3倍的数据包和将近20倍的数据:
6856 13581751 RETURN all -- eth1 * 10.0.1.1 0.0.0.0/0
2736 816810 RETURN all -- eth1 * 10.0.1.2 0.0.0.0/0
2831 807426 RETURN all -- eth1 * 10.0.1.3 0.0.0.0/0
2745 806023 RETURN all -- eth1 * 10.0.1.4 0.0.0.0/0
(6856/2736=2.51和13581751/806023=16.85)
我想,在某种程度上,只要节点不忙,这并不重要,但我仍然想知道为什么我会看到如此巨大的差异?为什么所有4个连接不能以类似的级别参与?驱动程序将使用这些接触点作为初始连接点来设置连接池。在此之后,将根据模式拓扑、本地平衡策略和池选项创建池。此处提供一些有用的文档供参考(如果您已经看到这些文档,请抱歉): 额外的流量很可能是驱动程序使用的控制连接,它使自身与模式拓扑保持最新,以帮助驱动程序工作:
最后一个链接很有趣。我们使用代理,所以我们只连接一次,但我注意到第一次连接可能非常慢。
6856 13581751 RETURN all -- eth1 * 10.0.1.1 0.0.0.0/0
2736 816810 RETURN all -- eth1 * 10.0.1.2 0.0.0.0/0
2831 807426 RETURN all -- eth1 * 10.0.1.3 0.0.0.0/0
2745 806023 RETURN all -- eth1 * 10.0.1.4 0.0.0.0/0