cassandra - Cassandra 最佳实践:在 Cassandra 前面添加 Ha Proxy 是个好主意吗?
问题描述
据我了解,Datastax 驱动程序是TokenAware
:
令牌感知策略用于通过直接向拥有数据的节点发送请求来尽可能减少网络跳数。
驱动程序也有一些DCAwareRoundRobinPolicy
,以便在需要时查询其他数据中心,并重新分配负载:
该策略提供对本地数据中心节点的循环查询。它还包括在查询计划中返回的远程数据中心中可配置数量的主机
问题 :
似乎通过客户端驱动程序配置,已经可以进行 HighAvailability、LoadBalancing 和 TokenAware。
关于这些元素,您认为
HaProxy
在 Cassandra 之上添加仍然是一个好习惯吗?如果第一个问题是,我可以放弃
TokenAware
财产吗?如果第一个问题是,联络点是否会继续向 java 驱动程序发送正确的拓扑(节点的 IP/主机列表)?
谢谢
解决方案
通常不建议在 Cassandra 之前使用代理 - TokenAware 负载平衡策略将开箱即用(如果您使用准备好的语句)。除了选择正确的副本外,它还会考虑节点的状态等。
代理的问题是,在第一次联系之后,驱动程序会收到集群中所有节点的列表,所以驱动程序无论如何都会尝试使用这些节点,而不是代理节点(直到你使用白名单代码负载均衡策略,或者您实现了地址转换功能)。
推荐阅读
- c - 如何让doxygen通过函数引用而不是通过include头文件来显示目录依赖?
- javascript - 为什么在再次为生成器设置变量后为生成器设置变量?(本案例不同于普通的生成器示例)
- php - 从 MYSQL 中提取数据并将其存储到 PHP 中的变量中
- compression - zlib inflate 错误:收到的数据包乱序或丢失时出现 Z_DATA_ERROR
- data-structures - 如何从警察和强盗问题中构建图表?
- php - 在 LARAVEL 6 的前端刀片中使用登录用户 ID 设置 URL
- python-3.x - urllib3 和 python-telegram-bot API 出错
- bixby - 有意选择卡片后的额外布局
- vtk - 什么是 CellArray.GetNumberOfCells()?
- aem - AEM 6.5 在 cq 对话框中预填充 fileUpload 图像字段