ray-note/极客时间学习/Java 实战训练营/分布式服务/分布式服务.md

1.8 KiB

分布式服务体系

单体系统的问题

  1. 业务扩展性 -- 任何业务的调整都需要发布整个系统
  2. 性能伸缩性 -- 动态扩容对单体系统而言效率低下
  3. 代码复杂度 -- 修改一处代码容易引发连锁问题
  • 系统扩展性
    当前系统的业务需求发生变化时,对现在的系统改动程度的一种控制能力。改动程度越大,扩展性越差
  • 伸缩性
    伸缩性,对系统性能的一种控制能力。如果通过简单扩容就能确保系统的性能得到等比例的提升,就认为系统具备较好的伸缩性。

分布式系统

将整个系统拆分成多个能够独立运行的服务,这些服务再物理机上是隔离的,相互之间基于网络进行通信和协调

单体系统的拆分策略

  • 纵向拆分:根据业务内容进行拆分,每一个服务都是单独的业务
  • 横向拆分:粒度更细,复用和组合业务能力

分布式系统的固有特性

  • 网络传输的三态性 -- 成功、失败、超时
  • 请求的容错性 -- 调用链路上的异常扩散,雪崩效应
  • 系统的异构性 -- 多种不同的技术体系
  • 数据的一致性 -- 传统的事务机制无法生效 (什么是传统的事务机制)

分布式核心技术点

  • 可用 -- 降级、限流、集群和负载均衡
  • 扩展 -- SPI机制、异步消息
  • 性能 -- 异步化、资源重用
  • 治理 -- 服务注册与发现机制

分布式系统组成结构

  • 功能性组件
    • 网络通信
    • 序列化
    • 传输协议
    • 服务调用
  • 非功能性组件
    • 服务治理
    • 服务路由
    • 服务容错
    • 服务监控

RPC架构

remote process call, 远程过程调用,分布式的基础 分布式系统基本功能组件:

  • 网络通信
  • 序列化/反序列化
  • 传输协议
  • 服务调用