分布式技术架构原理解析之序篇

1 前言

分布式技术概念繁多、知识庞杂、新兴技术层出不穷,令许多新手望而却步。即使接触了一段时间分布式系统,仍然是经常各种概念、名词张冠李戴,傻傻的分不清楚;甚至是做了多年技术,也参与了很多分布式技术实践,却无法回答工作中各种分布式技术、组件、框架选型背后的根源。究其原因,主要是知识碎片化、不成体系、见树不见林。小编我就是这样之前作为传统存储工程师只了解产品层面的技术,目前转型分布式系统需要挑战非常陡峭的学习曲线。所幸在极客时间学习了一门《分布式技术原理与算法解析》的课程,终于对分布式系统有了一个相对整体的认识。从今天开始我就按照章节把我的学习心得(笔记)分享给大家,希望对和我一样的初学者有所启迪。

2 分布式“四纵四横”知识体系

2.1 分布式系统学习思路

学习分布式技术关键要掌握分布式的核心技术体系,因为很多新技术、新框架、新组件只不过是‘新瓶装旧酒’,将分布式核心技术进行了再包装、再组合,至多也就是做了一点延伸而已。”按照**“四纵四横”**的分布式核心技术知识体系,从这个纵横的技术体系中抽取最核心、最普适的技术思想以及概念,结合各种适用场景各个击破,达到事半功倍的效果。

2.2 那么何为“四纵四横”呢?

分布式四纵四横知识体系图

  • 按照业务架构层次栈分出“四横”:**首先自底向上按照资源、通信、数据与计算的维度,梳理出了 4 个技术层次:
  • 分布式资源池化
  • 分布式通信
  • 分布式数据存储与管理
  • 分布式计算
  • 把“四横”比作派生类,则“四纵”就是其基类:**:在分布式环境下,无论是资源、通信、数据还是计算,都需要去解决协同、调度、追踪高可用,还有部署的问题。因此,从横向的技术层次中,提炼出了4 个纵向技术线。
  • 分布式协同
  • 分布式调度
  • 分布式追踪与高可用
  • 分布式部署

3 分布式的起源和发展

3.1 单机模式

3.1.1 定义

所谓单机模式是指,所有应用程序数据均部署在一台电脑或服务器上,由一台计算机完成所有的处理。

3.1.2 举例说明

以铁路售票系统为例,业务系统包括用户管理火车票管理订单管理等模块,数据包括用户数据火车票数据订单数据等,在单机模式中所有的模块和数据均会部署在同一台计算机上,也就是说数据存储、请求处理均由该计算机完成。单机模式的示意图,如下所示:
本文的所有示意图中,紫色虚线表示在一台计算机内
单机模式

3.1.3 优缺点

优点 :功能、代码和数据集中,便于维护、管理和执行;
缺点 :性能受限、存在单点失效问题;

3.2 数据并行或数据分布式模式

3.2.1 定义

数据并行(也叫作数据分布式)模式,采用消息共享模式使用多台计算机并行运行或执行多项任务,核心原理是:每台计算机上执行相同的程序,将数据进行拆分放到不同的计算机上进行计算
并行计算强调的是对数据进行拆分,任务程序在每台机器上运行。首先要把单机模式中的应用和数据分离,才可能实现对数据的拆分。
这里的应用就是执行任务的程序,任务就是提交的请求

3.2.2 举例说明

以铁路售票系统为例,运行在服务器上的用户管理火车票管理订单管理等程序就是应用,用户提交的查询火车票购买火车票的请求就是任务
主要包括两个步骤,如下所示:
**- 第一步,**将应用与数据分离,分别部署到不同的服务器上:

应用与数据分离
**- 第二步,**对数据进行拆分,比如把同一类型的数据拆分到两个甚至更多的数据库中,这样应用服务器上的任务就可以针对不同数据并行执行了。

对于铁路售票系统来说,根据线路将用户、火车票和订单数据拆分到不同的数据库中,部署到不同的服务器上,比如京藏线的数据放在数据库服务器 1 上的数据库中,沪深线的数据放在数据库服务器 2 上的数据库中。
数据并行(数据分布式)模式

3.2.3 优缺点

优点: 多台计算机并行处理多个请求,在相同时间内完成更多请求处理,解决了单机模式的计算效率瓶颈问题;
缺点: 如果单个请求特别复杂,数据并行模式的整体计算效率还是不够高,即对提升单个任务的执行性能及降低时延无效

3.3 任务并行或任务分布式模式

3.3.1 定义

任务并行指的是,将单个复杂的任务拆分为多个子任务,从而使得多个子任务可以在不同的计算机上并行执行

3.3.2 举例说明

仍以铁路售票系统为例,任务并行首先是对应用进行拆分,比如按照领域模型将用户管理、火车票管理、订单管理拆分成多个子系统分别运行在不同的计算机或服务器上。换句话说,原本包括用户管理、火车票管理和订单管理的一个复杂任务,被拆分成了多个子任务在不同计算机或服务器上执行,如下图所示:
任务并行或任务分布式模式
任务并行模式完成一项复杂任务主要有两个核心步骤

  1. 首先将单任务拆分成多个子任务;
  2. 然后让多个子任务并行执行;

3.3.3 优缺点

优点: 提供了更好的性能、扩展性、可维护性;
缺点: 系统设计复杂性问题;

3 什么是分布式系统

分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。从这个定义来看,数据并行、任务并行其实都可以算作是分布式的一种形态。
在数据并行和任务并行这两个模式的使用上,一个简单的原则就是:

  • 任务执行时间短,数据规模大、类型相同且无依赖,则可采用数据并行;
  • 如果任务复杂、执行时间长,且任务可拆分为多个子任务,则考虑任务并行。
  • 在实际业务中,通常是这两种模式并用。

4 各场景下分布式系统的指标要求

典型的电商、IoT、电信、HPC(高性能计算)、大数据、云计算、区块链等业务或系统对不同指标的诉求。

  • 电商系统:对于一个电商系统而言,系统设计者最看重的是吞吐量,为的是处理更多的用户访问或订单业务。
    - IoT:对于一个 IoT 系统而言,设计者最看重的是资源占用指标,因为在一些功能极简的 IoT 设备上 RAM、ROM 的可用资源通常都是 KB级的。
  • 电信业务:对于电信业务而言,最重要的无疑是响应时间、完成时间,以及可用性
  • HPC:系统最显著的特点是任务执行时间极长,一个天体物理任务的分析和计算通常耗时数周甚至数月。因此,通过水平扩展来提高系统的加速比,是 HPC系统设计者需要关注的。
  • 大数据:任务的处理时间可能相对 HPC系统来讲比较短,但常见的完成时间也达到了小时级,所以扩展性也是大数据系统首先要考虑的。
  • **云计算:**对于一个云计算系统而言,常见任务是虚拟主机或容器的创建、资源调整、销毁等操作,如何减少这些操作的完成时间,从而提升用户体验是设计者们要重点关注的。另外,云计算系统本质上卖的是资源,那么降低系统本身的资源开销,也是系统设计的重中之重。
  • 区块链:区块链的吞吐量比较低,比特币的TPS 只有 7 次每秒,单平均一次交易的确认就需要 10 分钟左右,因此吞吐量完成时间通常是区块链系统设计者的首要目标。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值