分布式系统设计指南

目录

一、分布式简介

二、分布式系统核心概念

        2.1 CAP 理论

        2.2 BASE 原理

三、分布式系统设计

        3.1 微服务拆分

        3.2 通信模型

        3.3 负载均衡

        3.4 数据一致性

        3.5 容错限流

        3.6 扩展性

        3.7 监控预警

        3.8 自动化运维


一、分布式简介

        分布式系统是由单体应用发展而来的,单体应用是将所有的业务功能维护在一个巨无霸的服务中,业务初期可能还能接受,但随着业务发展,单体应用中要维护的代码越来越多,这就导致了代码膨胀、维护成本高、不能快速迭代回滚、沟通成本高、业务耦合互相影响、部署繁琐等问题的出现。为了解决这些问题开始寻求将单体应用进行拆分,按业务模块将单体应用拆分成更小、更容易管理的若干个小服务。

        从单体应用发展为分布式系统是对技术、组织结构、开发流程等多方面的全面改革。那什么是分布式系统呢?

        分布式系统是一种由多台计算机(节点)通过网络互相连接,协同工作以完成共同任务的计算模型。这些节点共享资源并协作处理任务,从用户角度来看,整个系统表现得仍然像一个单体应用。

二、分布式系统核心概念

        分布式系统设计中,有两个核心概念,分别为 CAP 理论和 BASE 原理,他们指导着分布式系统如何在复杂环境下做出权衡和设计决策。

        2.1 CAP 理论

        CAP 理论指出在分布式系统设计中,有三个基本要求,但在任何系统中最多只能满足其中的两个,这三个基本要求为:

  • 一致性(Consistency):所有节点在同一时间看到的数据是一致的,即数据更新后,所有访问都会返回最新的值。
  • 可用性(Availability):每个请求都能在有限时间内得到响应,无论成功还是失败。
  • 分区容错性(Partition tolerance):即使系统中部分网络不可用,系统仍然能够继续运行。

        在实际应用中,由于网络分区是不可避免的,所以通常需要再一致性和可用性之间做出选择。那什么是网络分区呢?在分布式系统中,多个节点之间的网络原本是连通的,但因为某些故障某些节点直接不能连通了,整个网络就被分割成几个区域,这就叫做网络分区。

                                   

        在实际应用中,一些中心化组件都会在 CAP 中进行取舍,如 ZooKeeper 为了保证数据的一致性结果,保证了 CP。在 Nacos 中服务注册发现保证了 AP,配置中心保证了 CP。

        2.2 BASE 原理

        BASE 原理是对 CAP 理论中一致性和可用性权衡的一种应用哲学,在无法保证强一致性的情况下,应该如何设计系统,BASE 原理由三部分组成:

  • 基本可用(Basically Available):系统出现故障时,允许部分功能不可用,但核心功能仍然能正常工作。
  • 软状态(Soft State):系统可以有一段时间内的中间状态,这个状态可能与最终状态不一致,但在一段时间后会达到一致。
  • 最终一致性(Eventual Consistency):系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超越不平凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值