面试题答案
一键面试RabbitMQ
- 策略
- 镜像队列:通过将队列镜像到多个节点,确保在某个节点因网络分区不可达时,其他镜像节点仍可提供服务。主节点处理写入操作,并将数据同步到镜像节点。
- 自动恢复机制:当网络分区恢复后,RabbitMQ 会尝试自动恢复连接和消息传递,重新同步数据以保持一致性。
- 权衡点
- 资源消耗:镜像队列需要在多个节点间同步数据,增加了网络带宽和存储资源的消耗。
- 性能影响:由于同步操作,写入性能可能会受到一定影响,特别是在网络不稳定时。
Kafka
- 策略
- 多副本机制:每个分区有多个副本,其中一个为领导者副本,负责处理读写请求,其他为追随者副本。领导者副本会将数据同步给追随者副本。当领导者副本所在节点因网络分区不可用时,会从追随者副本中选举新的领导者。
- ISR(In - Sync Replicas)机制:只有与领导者副本保持一定程度同步的追随者副本才会被包含在 ISR 集合中。选举新领导者时,只会从 ISR 集合中选择,保证了数据的一致性。
- 权衡点
- 延迟问题:为了保证副本同步,可能会引入一定的消息传递延迟,特别是在网络分区导致副本同步延迟增大时。
- 选举复杂性:选举新领导者的过程需要一定的时间和资源,可能导致短暂的服务不可用。同时,如果 ISR 集合中的副本都不可用,可能会面临数据丢失风险(取决于配置)。