《分布式架构知识体系必读》阅读心得

      最近阅读文章经常看到分布式架构,今天我看到的这篇文章全面地讲述了分布式架构知识。

     分布式架构是 分布式计算技术的应用和工具,目前成熟的技术包括J2EE, CORBA和.NET(DCOM)。SOA面向服务架构是由于业务发展到一定层度后,需要对服务进行解耦,进而把一个单一的大系统按逻辑拆分成不同的子系统,通过服务接口来通讯,面向服务的设计模式,最终需要总线集成服务,而且大部分时候还共享数据库,出现单点故障的时候会导致总线层面的故障,更进一步可能会把数据库拖垮,所以才有了更加独立的设计方案的出现。后来出现了MSA微服务架构。微服务是真正意义上的独立服务,从服务入口到数据持久层,逻辑上都是独立隔离的,无需服务总线来接入,但同时增加了整个分布式系统的搭建和管理难度,需要对服务进行编排和管理,所以伴随着微服务的兴起,微服务生态的整套技术栈也需要无缝接入,才能支撑起微服务的治理理念。

     布式架构中的节点也就是一台单体的物理机,所有的服务都揉进去包括服务和数据库;随着虚拟化的发展,单台物理机往往可以分成多台虚拟机,实现资源利用的最大化,节点的概念也变成单台虚拟机上面服务;分布式架构的根基就是网络,网络消息异步网络的传播有先后,消息丢失和延迟是经常发生的事情,因此定义了三种网络工作模式:同步网络,半同步网络,TCP协议,UDP协议。

     时间对于分布式来说也很重要。,我们要协调不同节点之间的先来后到关系,但是不同节点本身承认的时间又不同。网络时间协议(NTP)试图来解决不同节点之间的标准时间,但是NTP本身表现并不如人意,所以我们又构造除了逻辑时钟,最后改进为向量时。分布式环境下,我们无法保证网络的正常连接和信息的传送,于是发展出了CAP/FLP/DLS这三个重要的理论:(1)CAP:分布式计算系统不可能同时确保一致性、可用性和分区容忍性。(2)FLP:在异步环境中,如果节点间的网络延迟没有上限,只要有一个恶意的节点存在,就没有算法能在有限的时间内达成共识。(3)DLS:在一个部分同步网络的模型。多数情况下,其实我们也并非一定要求强一致性,部分业务可以容忍一定程度的延迟一致,所以为了兼顾效率,发展出来了最终一致性理论BASE,BASE是指基本可用、软状态、最终一致性。

      分布式就够可以应用的几类场景:(1)文件系统。单台计算机的存储始终有上限,随着网络的出现,多台计算机协作存储文件的方案也相继被提出来。(2)数据库。数据库当然也是属于文件系统,主数据增加了事务,检索,擦除等高级特性,所以复杂度又增加了,既要考虑数据一致性也得保证足够的性能。(3)计算。分布式计算系统构建在分布式存储的基础上,充分发挥分布式系统的数据冗余灾备,多副本高效获取数据的特性,进而并行计算,把原本需要长时间计算的任务拆分成多个任务并行处理,从而提高了计算效率。(4)缓存。缓存作为提升性能的利器无处不在,小到CPU缓存架构,大道分布式应用存储。(5)消息。分布式消息队列系统是消除异步带来一系列的复杂步骤的一大利器,多线程高并发场景先我们常常要谨慎的去设计业务代码,来保证多线程并发情况下不出现资源竞争导致的死锁问题。(6)监控。分布式系统从单机到集群的形态发展,复杂度也大大提高,所以对整个系统的监控也是必不可少。(7)应用。分布式系统的核心模块就是在应用如何处理业务逻辑,应用直接的调用依赖于特定的协议来通信,有基于RPC协议的也有基于通用的HTTP协议。(8)日志。错误对应分布式系统是家常便饭,而且我们设计系统的时候本身就需要把容错作为普遍存在的现象来考虑。

    不同场景需要选择合作设计模式,来减少试错的成本,设计分布式系统需要考虑以下的问题:可用性,数据管理,设计与实现,消息,管理与监控,性能与扩展,弹性,安全。

     这篇文章力从分布式基础理论,架构设计模式,工程应用,部署运维,业界方案这几大方面,介绍基于MSA(微服务架构)的分布式的知识体系大纲。让我对SOA到MSA进化有了一个立体的认识,从概念上和工具应用上更近一步了解微服务分布式的本质。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/wl2017/p/11045240.html