## 分布式服务体系 #### 单体系统的问题 1. 业务扩展性 -- 任何业务的调整都需要发布整个系统 2. 性能伸缩性 -- 动态扩容对单体系统而言效率低下 3. 代码复杂度 -- 修改一处代码容易引发连锁问题 - ##### 系统扩展性 当前系统的业务需求发生变化时,对现在的系统改动程度的一种控制能力。改动程度越大,扩展性越差 - ##### 伸缩性 伸缩性,对系统性能的一种控制能力。如果通过简单扩容就能确保系统的性能得到等比例的提升,就认为系统具备较好的伸缩性。 #### 分布式系统 将整个系统拆分成多个能够独立运行的服务,这些服务再物理机上是隔离的,相互之间基于网络进行通信和协调 #### 单体系统的拆分策略 - 纵向拆分:根据业务内容进行拆分,每一个服务都是单独的业务 - 横向拆分:粒度更细,复用和组合业务能力 #### 分布式系统的固有特性 - 网络传输的三态性 -- 成功、失败、超时 - 请求的容错性 -- 调用链路上的异常扩散,雪崩效应 - 系统的异构性 -- 多种不同的技术体系 - 数据的一致性 -- 传统的事务机制无法生效 (什么是传统的事务机制) #### 分布式核心技术点 - 可用 -- 降级、限流、集群和负载均衡 - 扩展 -- SPI机制、异步消息 - 性能 -- 异步化、资源重用 - 治理 -- 服务注册与发现机制 #### 分布式系统组成结构 - 功能性组件 - 网络通信 - 序列化 - 传输协议 - 服务调用 - 非功能性组件 - 服务治理 - 服务路由 - 服务容错 - 服务监控 ## RPC架构 `remote process call`, 远程过程调用,分布式的基础 分布式系统基本功能组件: - 网络通信 - 序列化/反序列化 - 传输协议 - 服务调用