《从0开始学架构》笔记:集群架构与高可用设计

需积分: 10 17 下载量 6 浏览量 更新于2024-09-08 收藏 44KB DOCX 举报
"李运华老师的《从0开始学架构》笔记,主要涵盖了架构设计模板,包括总体方案、架构总揽、架构关键设计点、核心流程、详细设计等,重点讨论了高可用设计,如消息发送可靠性、消息存储可靠性和消息读取可靠性。" 在架构设计中,整体方案是至关重要的,它定义了整个系统的结构和组成部分。在这个案例中,采用了数据分散的集群架构,集群中的服务器被分组,每组负责存储一部分消息数据。为了确保高可用性,每个分组包含一台主MySQL和一台备MySQL,主备之间进行数据复制,但分组间数据不同步。正常运行时,主服务器处理消息的写入和读取,而备服务器仅在主服务器故障时接管读取服务。 架构总揽进一步细化了架构图及描述,明确了各个模块或子系统的职责,比如这里的主服务器和备服务器的角色分配,以及客户端如何通过轮询策略进行消息的发送与接收。虽然消息发送和读取的具体流程没有在此处详述,但在实际设计中,这些流程应当详细描述,包括异常处理和错误恢复机制。 在详细设计阶段,高可用性是重点关注的方面。对于消息发送,系统内置的SDK支持轮询重试策略,当主服务器无法发送时,SDK会尝试其他主服务器,直到发送成功。如果所有主服务器都无法发送,SDK可以根据配置选择缓存消息或直接丢弃。然而,业务服务器的重启可能导致缓存消息丢失,对此SDK并不负责,业务方需自行处理关键消息的存储。 消息存储的可靠性依赖于MySQL的主备复制,确保消息的高可用存储。主备MySQL之间的复制延迟需要监控,一旦延迟超过30秒,应当触发告警并进行干预,以防止数据丢失。 消息读取的可靠性体现在主备服务器的切换机制上。利用Zookeeper进行状态监测和决策,主服务器故障时,备服务器自动接管读取服务。主备服务器的配置和角色通过Zookeeper进行管理和更新,保证了故障切换的无缝衔接。 这个架构设计模板展示了如何构建一个高可用、可扩展的消息处理系统,涵盖了从总体方案到详细设计的关键步骤,并突出了在消息发送、存储和读取过程中的可靠性设计。这样的架构能够有效地应对潜在的故障,保障系统的稳定运行。