分布式系统(一):概念辨析与逻辑梳理

51 篇文章 30 订阅
订阅专栏
18 篇文章 1 订阅
订阅专栏

分布式系统领域的相关知识是每个后端开发人员都会遇到的,并且是很重要的一环。但是最关键的矛盾点在于:

分布式系统领域概念繁杂,新接触的同学或者已经接触一段时间的同学都会被这些概念困扰。

那么解决办法是什么呢?我认为有三点:

  1. 从“点”出发,去理清概念
  2. 从“线”出发,理解相关知识点
  3. 从系统性梳理出发,构建属于自己的分布式领域的知识树

本系列文章,就是围绕这三点而来,当然第3点肯定是靠自己整理的。


说到分布式,大家一定会想到单体应用、集群等等。我们来看看并分析几组名词。

分布式与集群

我们直接下一个通俗的定义:

集群:多台服务器对外提供同样的功能,即每台对外提供的都是相同的功能,所以他们组成了一个集群

分布式系统:多台服务器组合起来对外提供一类功能

这是他们之间的区别,那么联系呢?

集群是分布式系统中的组成部分

再来一组类比即可结束该组概念:

分布式系统可以看做一个公司整体,集群又可以看做是公司中的研发部、市场部、行政部等等部分。研发部对外提供完成需求的功能,市场部对外提供需求对接的功能,而公司作为一个整体,对客户提供服务。

站在客户的视角,他并不需要管你公司是什么架构,只要完成他的需求即可。所谓公司各部门组合起来实现客户需求。

最后,还是上一张图来有个感性认知吧(图拿以前画过的,凑乎用下)

他们组合起来成为了一个简单的分布式系统。

高可用、高性能、伸缩性、可扩展

这四个常见于分布式系统的描述中,我们来看看:

  • 高可用:我想一直用
  • 高性能:我想用的爽
  • 伸缩性:我想邀请更多人来用
  • 可扩展:我想提需求(实际可扩展主要说软件设计上)

其中,高可用、高性能、伸缩性这三个特性我们主要用在分布式系统的“物理结构上”,而可扩展性则更多的用在软件设计上。

这几个名词不再多说,因为下面的概念会直接关联,放在一起说更好。

无状态服务和有状态服务

个人认为,这是最关键的概念区分,可以解决后面很多的问题。

分布式系统中的所有组件都可以划分到这两个概念中

那么,什么是有状态服务呢?

举例:在上图中,我们看到的数据库、缓存都属于有状态服务

那么,什么是无状态服务呢?

举例:在上图中,我们看到的业务服务器和负载均衡都属于无状态服务。

但是,业务服务器真的是无状态的吗?是不是也可以变成有状态的呢?所以,关键点在于二者的区分,如何区分:

首先判断该服务是否存储数据,如果不存储,则一定是无状态的。

如果存储,则假设再来一台同样的设备,他们组成一个集群后,在保证业务正确的前提下,存储的数据是否需要在二者之间进行同步。

应用一下:

对于负载均衡器来说,本身不存储业务数据,所以一定是无状态的。

对于数据库来说,本身存储数据,再增加一台数据库组成集群,那么数据肯定要进行同步,所以一定是有状态的。

对于业务服务器来说,在有的场合下,本身需要将数据存储在内存中,比如一些用户的登录状态。则此时再加入一台业务服务器组成集群,那么登录状态肯定要进行数据同步,所以这种场合下属于有状态的业务服务器。

实际上,有状态和无状态的区分基本一眼就可以看出来,不是一个难点。关键是知道概念即可。

服务状态和分布式系统特性

可靠性

系统可靠性分成两大块,一块是对于有状态服务的可靠性设计,比如数据库系统;一块是针对无状态服务的可靠性设计,比如我们的业务程序。

但是,可靠性的核心解决方案无一例外都是:冗余,各种冗余

其中,有状态服务的难点在于他们之间的数据同步。有状态服务可靠性的实现归纳起来就是通过两个方面:

  1. 复制集群
  2. 独立分片
  3. 将1和2组合实现

复制集群指的是比如搭建两个数据库,他们之间同步备份,其中一个对外提供读写能力,另外一个对外提供读能力(或者只备份)。

独立分片指的是比如搭建两个数据库,一个数据库存储用户ID小于1000的,另外一个存储用户ID大于1000的数据。

不论关系型还是非关系型数据库,或者缓存,都是这样的思路。


而无状态的服务的可靠性,则是依靠负载均衡或者是负载均衡的变种(后面会提到,也即服务治理这一块)来实现的,并且可以分为服务端负载均衡和客户端负载均衡。负载均衡本身又会有单点故障的隐患,所以又有专门的高可用软件保障负载均衡整体的高可靠。

高性能

性能的提升无非是两个方面:

  • 提升单体的性能
  • 通过增加节点并协作提升整体的性能。

这点不论是有状态服务或者无状态服务都是从这两个方面入手,需要具体情况具体说明。

伸缩性

伸缩性的设计就是整体系统对外部压力的自适应表现。

当外部压力过大时,系统可以自动扩容,当外部压力恢复时,系统又可以自动回收多余的节点。这属于自动化的伸缩,云端的弹性伸缩或者Kubernetes集群都可以做到这个要求,这也是为什么Kubernetes是未来云端操作系统的一个重要原因。

如果手动扩容的话,对于无状态服务还是要基于负载均衡及其变种。

但是针对有状态服务,伸缩性就没那么简单了,因为要涉及到数据的同步或者分片存储。

无状态服务的典型分布式结构

前一小节可以看到,一个无状态单体服务想要实现可靠性、伸缩性、高性能就需要进行结构划分。这里的划分分为两种:水平和垂直。水平划分类似下图:

其中,服务器ABC的业务功能都相同。

垂直类似下图:

其中,服务器ABC业务功能不同。

有状态服务的典型分布式结构

有状态单体服务的垂直划分类似于这样:

比如 memcached 缓存,它的分布式结构就是这种垂直拆分,服务节点之间的数据不进行同步。也就是可靠性中提到的独立分片结构。

有状态服务的水平划分当然是可靠性中提到的 复制集群结构,如下图:

服务器ABC之间的数据要进行同步,比如数据库主备等结构。数据的同步由于网络延迟或者节点故障等原因,很难保证节点之间的数据是时时刻刻完全一致的。

有状态服务之间的数据同步处理,即涉及到 CAP 定理等各种分布式的定理。

小结

本篇主要阐述分布式系统的重要概念,可以看到关于可扩展性并没有进行说明。由于可扩展性和业务强相关,所以放到下一篇专门进行阐述。

分布式原理
qi5652077的博客
03-10 1588
分布式系统是一个硬件和软件系统分布在不同的网络计算机,批次之间仅仅通过消息传递进行通讯和协调的系统。在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息的交换。 为为什么会出现分布式应用? 为提高系统处理能力,我们首先想到的扩展方式就是升级系统配置,8核cpu升级为32核, 64核,内存64G升级为128G,256H,带宽上万兆,十万兆,这就叫垂直扩展,但这样的...
分布式理论、架构设计
LiangKe_GLX的博客
08-11 378
分布式系统面临的问题 1)通信异常 网络本身的不可靠性,因此每次网络通信都会伴随着网络不可用的风险(光纤、路由、DNS等硬件设备或系统的不 可用),都会导致最终分布式系统无法顺利进行一次网络通信,另外,即使分布式系统各节点之间的网络通信能够 正常执行,其延时也会大于单机操作,存在巨大的延时差别,也会影响消息的收发过程,因此消息丢失和消息延迟 变的非常普遍。 2)网络分区 网络之间出现了网络不连通,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干个 孤立的区域,分布式系统就会出现局部小
分布式系统逻辑
程序员的痛苦人生
02-25 174
1 用一个Agent实例处理所有的逻辑,其他Agent只做服务 2 所有Agent都是逻辑的一部分,用Queue总线来交互 这两种方案,孰优孰劣?
梳理业务系统的业务逻辑的步骤和方法
最新发布
哆啦星星的博客
05-09 1883
根据收集和整理的资料,分析和理解业务逻辑中的各种业务规则和业务功能,以及它们之间的关系和依赖。梳理业务系统的业务逻辑,就是分析和理解业务系统中的各种业务规则和业务功能,以及它们之间的关系和依赖。根据分析和理解的结果,归纳和总结业务逻辑中的主要特点和规律,以及存在的问题和改进点。梳理业务系统的业务逻辑,有助于提高业务系统的质量和效率,促进业务系统的优化和改进,以及支持业务系统的维护和升级。根据梳理的目标和范围,收集和整理相关资料,例如需求文档,设计文档,代码文档,测试用例,用户反馈等。
分布式系统(Distributed Systems)概述
云原生Java Web领域技术博客
11-05 8611
随着互联网的持续发展(以Web应用为代表)、计算机应用的深入、分布式系统构建技术的日益成熟,分布式系统逐渐深入到人们的日常生活,并渗透到社会、经济、文化生活的各个方面。现如今,分布式系统已成为主流的软件系统。本文主要介绍下分布式系统的特征和在进行分布式系统设计过程中所必须解决的问题:可伸缩性、异构性、安全性和故障处理等。
动力分布式集中供热系统中背压概念辨析.pdf
08-09
#资源达人分享计划#
教育领域中的人工智能:概念辨析、应用隐忧与解决途径.zip
10-16
教育领域中的人工智能:概念辨析、应用隐忧与解决途径
教育领域中的人工智能:概念辨析、应用隐忧与解决途径.pdf
06-28
教育领域中的人工智能:概念辨析、应用隐忧与解决途径.pdf
2020中考语文复习方案第一部分积累与运用专题三蹭与标点:蹭辨析
09-09
【标题】和【描述】提到的是2020年中考语文复习方案中关于"病句与标点"的专题,主要涉及的是辨析并改正语病的训练。 【标签】"资料"表明这是用于学习和备考的参考资料。 【部分内容】列举了多个病句辨析的例题,...
常见存储器概念辨析
08-20
常见存储器概念辨析 在计算机系统中,存储器是非常重要的组件之一,它可以存储数据和程序,使计算机能够正确地运行。常见的存储器概念包括RAM、SRAM、SDRAM、ROM、EPROM、EEPROM、Flash存储器等,每种存储器都有...
什么是分布式系统
脚踏实地
01-29 2万+
CAP CAP 理论的定义很简单,CAP 三个字母分别代表了分布式系统中三个相互矛盾的属性: Consistency (一致性):CAP 理论中的副本一致性特指强一致性(1.3.4 ); Availiablity(可用性):指系统在出现异常时已经可以提供服务; Tolerance to the partition of network (分区容忍):指系统可以对网络分区(1.1.4.2 )这种异...
什么是分布式系统
helloworld工程师的博客
11-23 4060
什么是分布式系统? 要理解分布式系统,主要需要明白一下2个方面: 1.分布式系统一定是由多个节点组成的系统。 其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。 2.这些连通的节点上部署了我们的节点,并且相互的操作会有协同。 分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,而实际上这些服务是通过背后的众多服务器组成的一个分布式系统,因此分布式系统看起来像是一个超级计算机一样。 例如淘宝,平时大家都会使用,它本身就是一个分布式系统,我们通过浏览器访问淘宝
分布式计算、并行计算及集群、网格、云计算的区别
热门推荐
courage的专栏
08-19 2万+
转自: http://blog.163.com/litianyichuanqi@126/blog/static/1159794412012387453794/ 并行计算:并行计算是相对于串行计算来说的。可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。例如基于CUDA编程。并行计算的目的就是提供单处理器无法提供的性能(处
分布式架构实现
跨语言,跨平台,跨应用
06-01 1万+
每当太阳西沉,我坐在河边破旧的码头上,遥望新泽西上方辽阔的天空,我感到似乎有未经开垦的土地,所有的道路,所有的人都在不可思议地走向西部海岸。直到现在我才知道,在衣阿华,小伙子们总是不停地骚动喧闹,因为是那片土地使他们如此无法平静。——《在路上》 1、概述在传统的B/S 架构的系统里,技术架构往往是一个工程项目,各个逻辑分层都是该工程的业务逻辑模块,但是有些网站,如电商系统或全国性服务平台,用户群庞大
分布式数据库 逻辑表支持哪几种类型
DDMMAN
08-15 1604
目录 福利发放 逻辑表类型 福利发放 目前华为云分布式数据库中间件DDM有试用体验活动,申请华为云账号后可以单击如下图片一键体验: 逻辑表类型 DDM逻辑表支持分片表、全局表、单表和普通表四种类型。 分片表 DDM实例在RDS实例上创建多个物理库,每一个物理库称为分片,在分片上建立的表,叫分片表(不包括单表和全局表)。数据按照分片规则被分配到不同的分片上,分片上的数据支持...
分布式锁(逻辑时钟)原理 Leslie Lamport论文笔记
JKerving的博客
10-24 2255
分布式系统中的时间、时钟和事件顺序 论文笔记 这篇笔记主要是用于记录阅读《Time, Clocks, and the Ordering of Events in a Distributed System》论文的要点以及我自己对于分布式系统时钟的理解。之前已经阅读过这篇文章几次了,每次阅读都对自己很有帮助。因此写下这篇论文笔记可以帮助自己进一步加深理解。 1978年Lamport在这篇论文中主要讨论...
分布式处理
qq_41626229的博客
01-07 1237
什么是分布式系统? 分布式系统大致可分为松散耦合的、自治的计算机的集合或网络,具有以下特点: 。节点是相对松散耦合的。 。每个节点都是一个独立的计算机,具有自己的外围设备。 。该系统可以在各种类型的节点和网络故障下生存。 。节点可以执行逻辑上独立的计算,尽管这些计算可能与节点上的并发计算有关。 。系统是异步的。 客户机-服务器 基于资源不对等,且为实现共享提出来的 C/S软件体系结构定义了工作站...
Java同学找工作最懵圈的问题:到底啥是分布式系统开发经验?
D.K专栏
03-26 2613
目录 1、从单块系统说起 2、团队越来越大,业务越来越复杂 3、分布式出现:庞大系统分而治之 4、分布式系统所带来的技术问题 5、一句话总结:什么是分布式系统设计和开发经验 6、补充说明:中间件系统及大数据系统 前言 现在有很多Java技术方向的同学在找工作的时候,肯定都会去招聘网站上找职位投递简历。 但是在很多职位JD上往往会有这样的一个要求:熟悉分布式系统理论、设计和开发,具...
梳理操作系统概论
weixin_34195364的博客
03-09 59
1 用一张图总结操作系统的结构、功能特征、采用的技术和提供服务方式等。 2用一张图描述CPU的工作原理 3 用一张图描述系统程序与应用程序、特权指令与非特权指令、CPU状态、PSW及中断是如何协同工作的? 转载于:https://www.cnblogs.com/czmn/p/10503567.html...
南京晓庄操作系统习题解析与概念辨析
操作系统虚拟机与裸机在逻辑功能上有本质区别,虚拟机虽然提供了抽象的执行环境,但它不具有物理实体,这是另一个被纠正的观点。操作系统作为系统的核心组件,既是用户与机器交互的界面,也是管理系统资源的高效工具...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Win10+Ubuntu双系统安装教程 62367
  • 数据表设计与mysql入门(一) 27331
  • java后端开发(三):开发框架解读 16578
  • 后端开发教程系列-java向 11422
  • yapi 接口管理平台手册 9930

分类专栏

  • 故障经验 2篇
  • 数据库 18篇
  • java后端开发教程 51篇
  • netty 5篇
  • 计算机与操作系统 6篇
  • 消息队列 5篇
  • 分布式系统 18篇
  • K8S 1篇
  • 技术漫谈 2篇
  • 中间件 5篇
  • 物联网平台 1篇
  • Linux 1篇
  • contiki 2篇
  • TCP-IP 1篇
  • 总结 3篇
  • Spring 1篇
  • 算法
  • 3篇
  • 思想感悟 1篇

最新评论

  • mysql指引(十三):innodb中的锁

    m0_61721701: 补充下死锁解决方案:1.避免嵌套锁 2.超时放弃 3.使用死锁检测算法(如银行家算法分配资源) 4.使用锁的替代方案如Semaphore、Mutex、ReaderWriterLock等。

  • mysql指引(五):join关联查询底层原理(下)

    oatlmy: 比如从磁盘中加载出一个数据页(消耗磁盘IO),数据页中的记录是顺序的。所以按顺序可以更好的利用这次IO获取到的数据页

  • mysql指引(五):join关联查询底层原理(下)

    m0_61721701: T1表的数据已经被缓存在joinbuffer了为什么还要利用MRR去顺序读?

  • java后端开发(七):数据库连接池及mybatis原生关键流程解析

    KEY的航行日记: 你好 大神 我也仰慕你很久了表情包

  • tun/tap虚拟网卡收发机制解析

    Seaving: 请问下,如果服务端是要转发到百度或者谷歌,那服务端是怎么路由的?

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 这也能造成故障?我只给DTO类加了一个属性
  • 这也能造成故障?MySQL的datetime类型引发的线上问题
  • 面向开发的MySQL优化问题
2022年5篇
2021年19篇
2020年28篇
2019年17篇
2018年14篇
2016年5篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oatlmy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

PHP网站源码沙井SEO按效果付费盐田关键词按天计费平湖关键词按天收费木棉湾百搜词包罗湖关键词按天扣费盐田百度标王大浪网站搭建观澜网页设计大浪百姓网标王永湖网站推广方案坪地企业网站设计观澜建网站沙井SEO按效果付费深圳SEO按天计费同乐标王广州百度关键词包年推广荷坳百度竞价包年推广大运网页制作观澜百搜标王双龙外贸网站制作南澳百度seo爱联百姓网标王推广福田网站搜索优化大运seo坑梓网站改版布吉设计网站布吉模板网站建设深圳优化大芬网站改版宝安关键词按天计费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化