数据库|阿里云总监纯手打分布式负载均衡+存储+计算+事务+通信技术笔记

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片

文章图片
分布式起源:单机模式1946年情人节发布的ENIAC是世界上的第一台通用计算机 ,它占地170平米重达30吨 , 每秒可进行5000次加法或者400次乘法运算标志着单机模式的开始 。
所谓单机模式是指 , 所有应用程序和数据均部署在一台电脑或服务器上 , 由一台计算机完成所有的处理 。
以铁路售票系统为例 , 铁路售票系统包括用户管理、火车票管理和订单管理等模块数据包括用户数据、火车票数据和订单数据等如果使用单机模式 , 那么所有的模块和数据均会部署在同一台计算机上也就是说数据存储、请求处理均由该计算机完成 。 这种模式的好处是功能、代码和数据集中 , 便于维护、管理和执行 。
单机模式的示意图 , 如下所示:
这里需要注意的是 , 本文的所有示意图中 , 紫色虚线表示在一台计算机内 。
【数据库|阿里云总监纯手打分布式负载均衡+存储+计算+事务+通信技术笔记】事物均有两面性 , 我们再来看看单机模式的缺点 。 单个计算机的处理能力取决于CPU和内存等 , 但硬件的发展速度和性能是有限的 , 而且升级硬件的性价比也是我们要考虑的 , 由此决定了CPU和内存等硬件的性能将成为单机模式的瓶颈 。
你有没有发现 , 单机模式和单兵作战模式非常相似 , 单台计算机能力再强 , 就好比特种兵以一敌百 ,但终归能力有限 。 此外将所有任务都交给一台计算机 ,也会存在将所有鸡蛋放到一个篮子里的风险 , 也就是单点失效问题 。
归纳一下 , 单机模式的主要问题是:性能受限、存在单点失效问题 。
游击队模式:数据并行或数据分布式既然单机模式存在性能和可用性的问题 。 那么 , 有没有什么更好的计算模式呢?答案是肯定的 。
为解决单机模式的问题 , 并行计算得到了发展 , 进而出现了数据并行(也叫作数据分布式)模式 。 并行计算采用消息共享模式使用多台计算机并行运行或执行多项任务核心原理是每台计算机上执行相同的程序将数据进行拆分放到不同的计算机上进行计算 。
请注意并行计算强调的是对数据进行拆分 , 任务程序在每台机器上运行 。 要达到这个目的我们必须首先把单机模式中的应用和数据分离 , 才可能实现对数据的拆分 。 这里的应用就是执行任务的程序 , 任务就是提交的请求 。 以铁路售票系统为例 , 运行在服务器上的用户管理、火车票管理和订单管理等程序就是应用 , 用户提交的查询火车票、购买火车票的请求就是任务 。
在单机模式中 , 应用和数据均在一台计算机或服务器上要实现数据的并行 , 首先必须将应用和数据分离以便将应用部署到不同的计算机或服务器上;然后 , 对同类型的数据进行拆分比方说不同计算机或服务器上的应用可以到不同的数据库上获取数据执行任务 。
以铁路售票系统的数据并行为例 , 主要包括两个步骤如下所示:
第一步 , 将应用与数据分离分别部署到不同的服务器上:
第二步 , 对数据进行拆分 , 比如把同- -类型的数据拆分到两个甚至更多的数据库中 , 这样应用服务器上的任务就可以针对不同数据并行执行了 。
对于铁路售票系统来说 , 根据线路将用户、火车票和订单数据拆分到不同的数据库中 , 部署到不同的服务器上 , 比如京藏线的数据放在数据库服务器1上的数据库中 , 沪深线的数据放在数据库服务器2上的数据库中 。
需要注意的是 , 为了更好地帮助你理解这个数据拆分的过程我在这里选择拆分数据库的方式进行讲解 。 由于数据库服务器本身的并发特性 , 因此你也可以根据你的业务情况进行选择 , 比方说所有业务服务器共用一个数据库服务器 , 而不- -定真的需要去进行数据库拆分 。
可以看出 , 在数据并行或数据分布式模式中每台计算机都是全量地从头到尾一条龙地执行一个程序就像-个全能的铁道游击队战士 。 所以 , 你也可以将这种模式形象地理解成游击队模式 , 就和铁道游击队插曲的歌词有点类似: \"我们扒 飞车那个搞机枪撞火车那个炸桥梁...
这种模式的好处是 , 可以利用多台计算机并行处理多个请求使得我们可以在相同的时间内完成更多的请求处理 , 解决了单机模式的计算效率瓶颈问题 。 但这种模式仍然存在如下几个问题 , 在实际应用中 , 我们需要对其进行相应的优化:
相同的应用部署到不同的服务器上 , 当大量用户请求过来时 , 如何能比较均衡地转发到不同的应用服务器上呢?解决这个问题的方法是设计一个负载均衡器 ,我会在”分布式高可靠\"模块与你讲述负载均衡的相关原理 。
当请求量较大时 , 对数据库的频繁读写操作 , 使得数据库的I0访问成为瓶颈 。 解决这个问题的方式是读写分离 , 读数据库只接收读请求写数据库只接收写请求当然读写数据库之间要进行数据同步 , 以保证数据一致性 。
当有些数据成为热点数据时 , 会导致数据库访问频繁压力增大 。 解决这个问题的方法是引入缓存机制 , 将热点数据加载到缓存中 , 一方面可以减轻数据库的压力 , 另一方面也可以提升查询效率 。
从上面介绍可以看出 , 数据并行模式实现了多请求并行处理 , 但如果单个请求特别复杂 , 比方说需要几天甚至一周时间的时候 , 数据并行模式的整体计算效率还是不够高 。
由此可见 , 数据并行模式的主要问题是:对提升单个任务的执行性能及降低时延无效 。
集团军模式:任务并行或任务分布式那么 , 有没有办法可以提高单个任务的执行性能 , 或者缩短单个任务的执行时间呢?答案是肯定的 。 任务并行(也叫作任务分布式)就是为解决这个问题而生的 。 那什么是任务并行呢?
任务并行指的是 , 将单个复杂的任务拆分为多个子任务从而使得多个子任务可以在不同的计算机上并行执行 。
我们仍以铁路售票系统为例 , 任务并行首先是对应用进行拆分比如按照领域模型将用户管理、火车票管理、订单管理拆分成多个子系统分别运行在不同的计算机或服务器上 。 换句话说 , 原本包括用户管理、火车票管理和订单管理的一个复杂任务被拆分成了多个子任务在不同计算机或服务器上执行如下图所示:
可以看出 , 任务并行模式完成一项复杂任务主要有两个核心步骤:首先将单任务拆分成多个子任务 , 然后让多个子任务并行执行 。 这种模式和集团军模式很像任务拆分者对应领导者不同子系统对应不同兵种 , 不同子程序执行不同任务就像不同的兵种执行不同的命令一样并且运行相同子系统或子任务的计算机又可以组成一个兵团 。
在集团军模式中 , 由于多个子任务可以在多台计算机上运行 , 因此通过将同一任务待处理的数据分散到多个计算机上 , 在这些计算机上同时进行处理 , 就可以加快任务执行的速度 。 因为 , 只要一个复杂任务拆分出的任意子任务执行时间变短了 , 那么这个任务的整体执行时间就变短了 。
当然 , nothing is perfect 。 集团军模式在提供了更好的性能、扩展性、可维护性的同时也带来了设计上的复杂性问题 , 毕竟对一个大型业务的拆分也是一个难题 。不过对于大型业务来讲 , 从长远收益来看这个短期的设计阵痛是值得的 。 这也是许多大型互联网公司、高性能计算机构等竞相对业务进行拆分以及重构的一个重要原因 。
以上就是分布式的起源 , 那么下面我们将会深挖分布式 , 将会从以下几个方面:
- 分布式协调与同步
- 分布式资源管理与负载调度
- 分布式计算技术
- 分布式通信技术
- 分布式数据存储
- 分布式高可靠
分布式共识
分布式事务
分布式锁
分布式资源管理与负载调度
分布式体系结构一集中式结构
分布式调度架构一共享状态调度
脑图全部由大佬手动所写 , 并且每个小节都配备了脑图方便大家学习 , 由于文章篇幅的原因 , 需要免费领取全部内容的朋友麻烦帮忙转发这篇文章+关注我 , 然后私信【学习】获取 。
分布式计算技术
分布式通信技术
分布式数据存储
分布式高可靠
以上脑图全部由大佬手动所写 , 并且每个小节都配备了脑图方便大家学习 , 由于文章篇幅的原因 , 需要免费领取全部内容的朋友麻烦帮忙转发这篇文章+关注我 , 然后私信【学习】获取 。
推荐阅读
- 传《GTA5》将登陆谷歌云游戏平台Stadia
- 反伤刺甲将调整,然后新出了一件魔抗装备,这两都完美适合赵云!
- 三分钟游世界|云南新走红一座公园,门票高达100元,但去过的游客都说好
- 9月,桃花运大好,枯木逢春,守得云开见月明,邂逅真爱的3个星座
- 2020下半年,好运加持,贵人云集,将财业双收,人生精彩的3星座
- 阿里巴巴|美商务部长:美国没有对阿里巴巴采取任何正式行动
- 南宫沐风|人啊,除了健康,什么都是浮云
- 娱乐全搜索|当明星变成游戏人物,罗云熙从英气变柔美,王一博最不像本人
- 科技日报|功能性玉米被端上餐桌 这个数据库帮了大忙
- 电子商务|中国首富再度易主,新首富手握4100亿财富,反超马云登顶第一
