分布式架构学习(一)-分布式系统基本介绍

Scroll Down

分布式架构学习(一)-分布式系统基本介绍

分布式系统的概念

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统

严格地讲,同一个分布式系统中的计算机在空间部署上是可以随意分布的,这些计算机可能被放在不同的机柜上,也可能在不同的机房中,甚至分布在不同的城市。

分布式和集群的区别

分布式

  • 多个人在一起做不同的事

集群

  • 多个人在一起做相同的事

image-20200630181756759

分布式系统的特征

分布性

  • 分布式系统中的多台计算机都会在空间上随意分布,同时,机器的分布情况也会随时变动。

对等性

  • 分布式系统中的计算机没有主/从之分,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的。副本(Replica)是分布式系统最常见的概念之一,指的是分布式系统对数据和服务提供的一种冗余方式。在常见的分布式系统中,为了对外提供高可用的服务,我们往往会对数据和服务进行副本处理。数据副本是指在不同的节点上持久化同一份数据,当某一个节点上存储的数据丢失时,可以从副本上读取到该数据,这是解决分布式系统数据丢失问题最为有效的手段。另一类副本是服务副本,指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理。

并发性

  • 在“问题的提出”部分,我们已经提到过与“更新的并发性”相关的内容。在一个计算机网络中,程序运行过程中的并发性操作是非常常见的行为,例如同一个分布式系统中的多个节点,可能会并发地操作一些共享的资源,诸如数据库或分布式存储等,如何准确并高效地协调分布式并发操作也成为了分布式系统架构与设计中最大的挑战之一。

缺乏全局时钟

  • 分布式系统缺乏一个全局的时钟序列控制

故障总会发生

  • 任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生,并且,在系统实际运行过程中还会遇到很多在设计时未能考虑到的异常故障

分布式系统的演变过程

  • 阶段一:单体单应用架构

image-20200630183250588

  • 阶段二:应用服务器与数据库服务器进行分离

image-20200630183323665

  • 阶段三:应用服务器扩展为集群

image-20200630183353413

  • 阶段四:应用服务器使用负载均衡

image-20200630183423593

  • 阶段五:数据库服务器采用读写分离

image-20200630183449190

  • 阶段六:添加搜索引擎减少读库的压力

image-20200630183525125

  • 阶段七:添加缓存减少数据库的压力

image-20200630183555169

  • 阶段八:数据库水平/垂直拆分

image-20200630183621634

  • 阶段九:不同的应用拆分到不同的服务集群中

image-20200630183740010

  • 阶段十:微服务化

image-20200630183812540

分布式系统面临的问题

通信异常

  • 分布式的环境下需要在各个节点之间使用网络通信,由于网络的不可靠性,每次节点之前进行网络通信都带来了网络不可用的风险(光纤,路由器,DNS服务器等设备是否可用)都会导致分布式系统网络通信失败,而使用网络通信的延迟大约是单机内存访问的100倍以上,因此分布式系统上出现通信异常变的非常普遍

网络分区

  • 由于网络出现异常的情况,导致分布式系统中部分节点的网络延迟不断增大,最终只有部分节点能够正常通信,而其他节点则不能,这种现象称为网络分区或者称为**“脑裂”**,当网络分区后,分布式系统会产生局部的小集群,在极端情况下,这些小集群会独立完成原本需要整个分布式系统才能完成的功能,包括数据的事务处理,这就对分布式一致性提出非常大的挑战。

三态

  • 每次网络通信都伴随着三种状态,成功,失败或者超时,超时一般是由于下列两种情况导致的

    • 由于网络原因,请求并未被成功的发送到接收方,在发送过程中就发生了消息丢失现象
    • 请求成功的被接收方接收后,并进行了处理,但是在将响应反馈给发送方的过程中,发生了消息丢失现象
  • 当出现这样的超时现象后,网络通信的发起方是无法确认当前请求是否被成功处理的

节点故障

  • 节点故障则是分布式环境下另一个比较常见的问题,指的是组成分布式系统的服务器节点出现的宕机或“僵死”现象