面试题答案
一键面试配置节点间通信
- IP 地址配置:每个 Cassandra 节点需要配置正确的 IP 地址,确保节点之间能够相互通信。一般在
cassandra.yaml
配置文件中,通过listen_address
配置本节点对外监听的 IP 地址,通过broadcast_address
配置广播给其他节点的 IP 地址(若网络存在 NAT 等情况,broadcast_address
需配置为公网可访问的地址)。 - 端口配置:
- 7000 端口:用于节点间内部通信(默认),在
cassandra.yaml
中通过internode_compression
配置项可设置节点间通信的压缩方式,影响网络带宽使用。若启用压缩(如lz4
等),可减少数据传输量,但会增加 CPU 开销。 - 7001 端口:用于 SSL 加密的节点间通信(若启用 SSL),配置 SSL 相关参数(如密钥、证书路径等)可保障通信安全,但同样会增加计算开销。
- 9042 端口:客户端与 Cassandra 集群通信的端口,配置时要确保防火墙等安全策略允许客户端访问此端口,其性能影响主要体现在网络延迟对客户端读写操作的影响。
- 7000 端口:用于节点间内部通信(默认),在
网络相关参数及对集群性能影响
rpc_address
:指定 Cassandra 接受客户端连接的地址,若配置不当可能导致客户端无法连接。若设置为0.0.0.0
表示接受所有地址的连接,但从安全性角度可能存在风险。对性能影响不大,主要影响连接可用性。broadcast_rpc_address
:用于向客户端广播的 RPC 地址,类似broadcast_address
对于节点间通信,在网络存在 NAT 等情况时很重要,若配置错误客户端可能无法正确连接。对性能影响主要在连接建立阶段。num_tokens
:该参数决定每个节点拥有的 token 数量,token 用于数据分区。更多的num_tokens
可使数据分布更均匀,但会增加节点间状态同步等通信开销,影响集群性能,特别是在集群规模较大时。partitioner
:数据分区策略,不同的分区策略(如 Murmur3Partitioner 等)对数据分布和节点间通信负载有影响。合理的分区策略能使数据在节点间均匀分布,减少热点数据,提升整体性能。若分区不合理,可能导致部分节点负载过高,影响集群读写性能。heartbeat_interval
:节点间心跳检测间隔时间,默认 1 秒。较短的心跳间隔能更快检测节点故障,但会增加网络流量;较长的心跳间隔可能导致节点故障检测延迟。需要根据网络环境和对故障检测及时性的要求进行调整。read_request_timeout_in_ms
、write_request_timeout_in_ms
等超时参数:决定读写操作等待的最长时间。若设置过短,可能导致操作因超时而失败,但设置过长可能使客户端长时间等待,影响用户体验。合适的超时设置要结合网络延迟和集群负载情况进行调整。