面试题答案
一键面试通信协议
- HTTP/HTTPS:简单通用,在网络分区时,客户端请求可能超时。可通过设置合理超时时间、重试机制来应对。如电商下单场景,超时后客户端可重试订单提交请求,但要防止重复提交。
- gRPC:基于HTTP/2,高效且支持双向流。网络分区时,其连接多路复用和头部压缩特性可减少网络开销。如实时数据推送场景,gRPC能更高效维持连接状态。
一致性算法
- Paxos:通过多轮消息传递达成共识。在网络分区时,可能出现脑裂,导致不同分区独立达成共识。需仔细配置节点数与投票机制,如超过半数节点同意才生效,以降低脑裂影响。适用于对数据一致性要求极高的金融交易场景。
- Raft:相对简单,有明确Leader选举机制。网络分区时,若Leader所在分区与其他分区隔离,原Leader继续服务本分区,新Leader在其他分区选出。待网络恢复,需进行数据同步。如日志管理系统,Raft能快速恢复一致性。
服务发现与容错机制
- 服务发现:采用如Consul、Eureka等工具。网络分区时,各分区内服务可在本分区内的服务发现组件注册与发现,确保本分区内服务通信。如微服务架构下,每个分区内服务可通过本地服务发现组件找到依赖服务。
- 容错机制:
- 冗余部署:在不同分区部署相同服务实例,提高可用性。但需处理数据同步问题,如数据库读写分离架构中,多个从库在不同分区冗余。
- 熔断与降级:网络分区导致部分服务不可用时,熔断机制切断故障服务调用,降级则提供兜底方案。如在线旅游预订,酒店查询服务不可用时,可降级显示热门酒店推荐。
一致性和可用性平衡对业务影响
- 强一致性优先:业务场景如银行转账,确保数据一致性避免资金错误,但网络分区时部分服务可能不可用,影响客户操作及时性。
- 高可用性优先:如社交平台动态展示,保证用户随时能查看动态,允许一定时间内数据不一致,如动态点赞数可能短暂显示不准确,但不影响用户体验整体流畅性。