什么是分布式系统
在《分布式系统原理与范型》一书中有如下定义: "分布式系统是若干独立计算机的集合, 这些计算机对于用户来说就像单个相关系统”;
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。 其目的是利用更多的机器,处理更多的数据。
**分布式系统(dIstrIbuted system)**是建立在网络之上的软件系统。
首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进- -步优化的时候,我们才需要考虑分布式系统。因为,分布式系统要解决的问题本身就是和单机系统一样的,而由于分布式系统多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又会引入更多的机制、协议,带来更多的问题。
分布式理论
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理 系统确保架构有条不紊的演进。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XOdRJAF6-1652706288845)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195100696.png)]](https://img-blog.csdnimg.cn/7b9ad8fec8004507a6354d254137f23a.png)
单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EE0teMhJ-1652706288846)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195147102.png)]](https://img-blog.csdnimg.cn/75d1e1c899cd41a4bbd6aa0ad77f65ce.png)
适用于小型网站,小型管理系统,将所有功能都部署到-个功能里,简单易用。
缺点:
- 性能扩展比较难
- 协同开发问题
- 不利于升级维护
垂直应用架构
当访问量逐渐增大,单- -应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。
缺点: 公用模块无法重复利用,开发性的浪费
分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q88lQHEm-1652706288849)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195425484.png)]](https://img-blog.csdnimg.cn/42f2ff6f6bdd49a0bfcbdfb8c368c2ca.png)
流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ ServIce OrIented ArchItecture]是关键。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZKW8vQIt-1652706288850)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195509149.png)]](https://img-blog.csdnimg.cn/65d53fe088cc474a93e491564ea9cacc.png)
RPC
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QIZQ0YAT-1652706288851)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195856894.png)]](https://img-blog.csdnimg.cn/0d3817e788ae4107a4903d0ebc9b6aa5.png)
RPC基本原理
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCiuniT0-1652706288852)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414200814917.png)]](https://img-blog.csdnimg.cn/235f20db67dc4dcbb1173f70abf818dd.png)
步骤解析
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sE3CdgZ0-1652706288853)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414200937639.png)]](https://img-blog.csdnimg.cn/e1d635e79c7c4937906bc32fc0c324b4.png)
RPC两个核心模块: 通讯, 序列化
Dubbo
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QGHbF4k1-1652706288853)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414202306954.png)]](https://img-blog.csdnimg.cn/cbc2d4f6dcc5423bb92ed117619f9677.png)
Dubbo官网: https://dubbo.apache.org/zh/Index.html
- 了解Dubbo的特性
- 查看官方文档
Dubbo下载地址:
https://codeload.github.com/apache/dubbo-admin/zip/refs/heads/master-0.2.0
基本概念
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wtQp3zGZ-1652706288855)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414202713885.png)]](https://img-blog.csdnimg.cn/0b95ccb3d8a648479a3dd2c0acff5d74.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QD4kxwuo-1652706288856)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414202803915.png)]](https://img-blog.csdnimg.cn/11f0d4ccf6f74c48b62794be9767bd15.png)
调用关系说明
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选台提供者进行调用,如果调用失败,再选另台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一-次统计数据到监控中心。
Zookeeper下载
地址:
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
具体安装方法可以参考这位博主的博客:
https://blog.csdn.net/m0_62866192/article/details/121786303
整合SpringBoot+Dobbo+Zookeeper步骤
前提: zookeeper服务 已开启!
- 提供者提供服务
- 导入依赖
- 配置注册中心的地址,以及服务发现名,和要扫描的包~
- 在想要被注册的服务.上面~增加一个注解@Service
- 消费者如何消费
- 导入依赖
- 配置注册中心的地址,配置自己的服务名~
- 从远程注入服务~ @Reference