我有5个节点集群,其中2个Cassandra,2个solr和1个带有DSE4.5的EC2上的hadoop。 我的要求是我不想在请求从群集读/写时硬编码节点IP地址。我必须开发Web服务,通过哪个请求者可以向我的集群发送读/写请求,Web服务必须确定以下
1)将读取请求路由到适当的节点。 2)将写入请求路由到适当的节点。
如果有任何写请求,则应根据密钥空间和复制因子指向Cassandra节点。如果它是一个读请求,那么请求应该路由到Solr节点(因为我在solr上完成索引),如果有任何分析查询,那么请求应该路由到hadoop。 如果任何节点发生故障,那么响应将不会影响。 除了专门的请求,有没有办法请求群集? 通过专用意味着给出读写的特定IP地址。
DSE中是否存在任何方法或算法?或者是否有任何可用的工具?
答案 0 :(得分:0)
Java驱动程序应该为您处理所有这些:
例如:
节点发现:驱动程序自动发现并使用Cassandra集群的所有节点,包括新引导的节点
可配置的负载平衡:驱动程序允许对Cassandra节点的查询进行自定义路由和负载平衡。开箱即用,循环法提供可选的数据中心感知(只查询来自本地数据中心的节点(并保持连接))和可选的令牌感知(即,更喜欢副本的能力)查询为协调员。)
透明故障转移:如果Cassandra节点出现故障或无法访问,驱动程序会自动透明地尝试其他节点并安排重新连接到后台的死节点。
在Solr查询方面,您可以使用SolrJ负载均衡器,但您必须硬连接要用作协调节点的节点列表,但SolrJ将为您循环。