分布式系统理论

什么是分布式系统

在《分布式系统原理与范型》一书中有如下定义: "分布式系统是若干独立计算机的集合, 这些计算机对于用户来说就像单个相关系统”;

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。 其目的是利用更多的机器,处理更多的数据。

**分布式系统(dIstrIbuted system)**是建立在网络之上的软件系统。

首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进- -步优化的时候,我们才需要考虑分布式系统。因为,分布式系统要解决的问题本身就是和单机系统一样的,而由于分布式系统多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又会引入更多的机制、协议,带来更多的问题。

分布式理论

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理 系统确保架构有条不紊的演进。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XOdRJAF6-1652706288845)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195100696.png)]

单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EE0teMhJ-1652706288846)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195147102.png)]

适用于小型网站,小型管理系统,将所有功能都部署到-个功能里,简单易用。
缺点:

  1. 性能扩展比较难
  2. 协同开发问题
  3. 不利于升级维护

垂直应用架构
当访问量逐渐增大,单- -应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

在这里插入图片描述

通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。
缺点: 公用模块无法重复利用,开发性的浪费

分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q88lQHEm-1652706288849)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195425484.png)]

流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ ServIce OrIented ArchItecture]是关键。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZKW8vQIt-1652706288850)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195509149.png)]

RPC

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QIZQ0YAT-1652706288851)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414195856894.png)]

RPC基本原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCiuniT0-1652706288852)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414200814917.png)]

步骤解析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sE3CdgZ0-1652706288853)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414200937639.png)]

RPC两个核心模块: 通讯, 序列化

Dubbo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QGHbF4k1-1652706288853)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414202306954.png)]

Dubbo官网: https://dubbo.apache.org/zh/Index.html

  1. 了解Dubbo的特性
  2. 查看官方文档

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)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QD4kxwuo-1652706288856)(C:\Users\许正\AppData\RoamIng\Typora\typora-user-Images\Image-20220414202803915.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服务 已开启!

  1. 提供者提供服务
    1. 导入依赖
    2. 配置注册中心的地址,以及服务发现名,和要扫描的包~
    3. 在想要被注册的服务.上面~增加一个注解@Service
  2. 消费者如何消费
    1. 导入依赖
    2. 配置注册中心的地址,配置自己的服务名~
    3. 从远程注入服务~ @Reference

版权声明:本文为WXxz0原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。