hen*_*nry 15 java cassandra cassandra-2.0
在Java中,我连接到Cussandra集群,如下所示:
Cluster cluster = Cluster.builder().addContactPoints("host-001","host-002").build();
Run Code Online (Sandbox Code Playgroud)
我是否需要在那里指定群集的所有主机?如果我有一个1000个节点的集群怎么办?我随机选择几个吗?有多少,我真的随机做了吗?
Ale*_*scu 10
我会说配置您的客户端使用与您配置Cassandra使用的种子节点列表相同的节点列表将为您提供最佳结果.
如您所知,Cassandra节点使用种子节点找到彼此并发现环的拓扑.驱动程序将仅使用列表中提供的一个节点来建立控制连接,用于发现集群拓扑的控制连接,但为客户端提供种子节点将增加客户端继续运行的机会,节点故障.
Car*_*ini 10
我的方法是尽可能多地添加节点 - 原因很简单:种子只对群集启动是必要的,但是一旦群集启动并且运行种子只是常见节点 - 仅使用种子可能导致连接不可能在一个工作集群中 - 所以我给自己提供了连接到集群的最佳机会,保持了超过合理数量的节点 - 这足以让一个工作节点获得当前的集群配置.
public Cluster.Builder addContactPoint(String address)
Run Code Online (Sandbox Code Playgroud)
添加联系点.
联系点是驱动程序用于发现集群拓扑的Cassandra节点的地址.只需要一个联系点(驱动程序将自动检索其他节点的地址),但通常最好提供多个联系点,因为如果该单个联系点不可用,则驱动程序无法正确初始化.
请注意,默认情况下(即,除非您使用
withLoadBalancingPolicy(com.datastax.driver.core.policies.LoadBalancingPolicy)此构建器的方法),第一个成功联系的主机将用于定义客户端的本地数据中心.如果您在多数据中心设置中运行Cassandra,则最好只提供与客户端位于同一数据中心的联系点,或者手动提供适合您需要的负载平衡策略.
Parameters:
address - the address of the node to connect to
Returns:
this Builder.
Throws:
IllegalArgumentException - if no IP address for address could be found
SecurityException - if a security manager is present and permission to resolve the host name is denied.
Run Code Online (Sandbox Code Playgroud)
根据我的理解,你应该只添加一个联系点,驱动程序将发现其余的.希望有所帮助.我个人使用hector你也应该调查一下.
我读了一篇关于 Netflix 及其Cassandra 安装的有趣文章。
他们提到,他们使用Gorilla系统关闭了 33% 的 Cassandra 集群,并发现他们的系统仍然按预期工作。
他们有大约 2,000 个 Cassandra 节点,宕机了 33%。这意味着,三分之一的节点消失了。(Netflix 大约 660 个节点)
如果你真的很不幸,你指定的所有连接都是 660 个节点的一部分......哎呀。
不过,如果您只使用足够的节点,并且从未预料到会发生导致超过 33% 的网络出现故障的戏剧性事件,那么您应该能够使用相当小的数量,例如 6 个节点,因为这样的节点数数字,你应该总是至少击中 4 个......
现在,如果可能的话,当然应该进行战略选择。也就是说,当您有 6 个不同的机架时,如果您选择 6 个节点都在同一个机架中,那么您可能选择错误。相反,您可能希望为每个机架指定 1 个节点。(当然,那是当你成长到那么大的时候。)
请注意,如果您的复制因子为 5 并且 33% 的 Cassandra 节点出现故障,那么您无论如何都会遇到麻烦。在这种情况下,许多节点无法以 QUORUM 方式访问数据库。请注意 Netflix 对此进行了讨论。他们的复制因子只有3!(1/3 = 0.33即1/5 = 0.220%,小于 33%。)
最后,我不知道Java驱动程序,我使用C++驱动程序。当它失败时,我会被告知。所以我能做的是如果有必要的话尝试使用另一组IP,直到它工作...我的系统有一个在客户端访问之间保持连接的连接,所以这是一个一次性过程,我可以转发这个服务器的事实连接到 Cassandra,因此可以接受客户端连接。如果每次客户端向您发送请求时您都重新连接到 Cassandra,那么最好不要发送太多 IP。
| 归档时间: |
|
| 查看次数: |
16957 次 |
| 最近记录: |