分布式架构知识体系(摘抄)

0.摘抄来源

分布式架构知识体系

1.问题

    1. 何为分布式何为微服务
    1. 为什么需要分布式
    1. 分布式核心理论基础、节点、网络、时间、顺序、一致性
    1. 分布式系统有哪些设计模式
    1. 分布式有哪些类型
    1. 如何实现分布式

2.关键词

节点、时间、一致性、CAP、ACID、BASE、P2P、机器伸缩、网络变更、负载均衡、限流、鉴权、服务发现、服务编排、降级、熔断、幂等、分库分表、分片分区、自动运维、容错处理、全栈监控、故障恢复、性能调优

3.全文概要

随着移动互联网的发展智能终端的普及,计算机系统早就从单机独立工作过渡到多机器协作工作。计算机以集群的方式存在,按照分布式理论的指导构建出庞大复杂的应用服务,也已经深入人心。本文力求从分布式基础理论,架构设计模式,工程应用,部署运维,业界方案这几大方面,介绍基于MSA(微服务架构)的分布式的知识体系大纲。从而对SOA到MSA进化有个立体的认识,从概念和工具应用上更进一步了解微服务分布式的本质,身临其境的感受如何搭建全套微服务架构的过程。

4.基础理论

4.1 SOA到MSA的进化

SOA面向服务架构
由于业务发展到一定程度后,需要对服务进行解耦,从而把一个单一的大系统按逻辑拆分为不同的子系统,通过服务接口来通讯,面向服务的设计模式,最终需要总线集成服务,而且大部分时候还共享数据库,出现单点故障的时候会导致总线层面的故障,更进一步可能会把数据库拖垮,所有才有了更加独立的设计

MSA微服务架构
微服务是真正意义上的独立服务,从服务入口到数据持久层,逻辑上都是独立隔离的,无需服务总线来接入,但同时增加了整个分布式系统的搭建和管理难度,需要对服务进行编排和管理,所以伴随着微服务的兴起,微服务生态的整套技术栈也需要无缝接入,才能支撑起微服务的治理理念。

4.2 节点与网络

节点
传统的节点也就是一台单体的物理机,所有的服务都揉进去,包括服务于数据库;随着虚拟化的发展,单台物理机往往可以分成多台虚拟机,实现资源利用的最大化,节点的概念也变成单台虚拟机上面服务;近几年容器技术逐渐成熟后,服务已经彻底容器化,也就是节点只是轻量级的容器服务。总体来说,节点就是能提供单位服务的逻辑计算资源的集合。

网络
分布式架构的根基就是网络,不管是局域网还是公网,没有网络就无法把计算机联合在一起工作,但是网络也带来了一系列的问题。网络消息的传播有先后,消息丢失和延迟是经常发生的事情,我们定义了三种网络工作模式:

同步网络

  • 节点同步执行、消息延迟有限、高效全局锁
    半同步网络
  • 锁范围放宽
    异步网络
  • 节点独立执行、消息延迟无上限、无全局锁、部分算法不可行

4.3 时间和顺序

时间
慢速物理时空中,时间独自在流淌着,对于串行的事务来说,很简单的就是跟着时间的脚步走就可以,先来后到的发生。而后我们发明了时钟来刻画以往发生的时间点,时钟让这个世界井然有序。但是对于分布式世界来说,跟时间打交道是一件痛苦的事情。分布式世界里面,我们要协调不同节点之间的先来后到关系,但是不同节点本身承认的时间又各执己见,于是我们创造了网络时间协议(NTP)视图来解决不同节点之间的标准时间,但是NTP本身表现不尽如人意,所以我们又构造出了逻辑时钟,最后改进为向量时钟:
NTP的一些缺点,无法完全满足分布式下并发任务的协调问题

  • 节点间时间不同步
  • 硬件时钟漂移
  • 线程可能休眠
  • 操作系统休眠
  • 硬件休眠