Dubbo---分布式(RPC)基础知识

一、分布式基础理论

1、什么是分布式系统

分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统,分布式系统(distributed system)是建立在网络之上的软件系统

2、发展演变

在这里插入图片描述

3、软件架构

(1)单一应用架构
  • 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
    在这里插入图片描述
  • 优点:适用于小型网站,小型管理系统,将所有功能都部署到一个功能里面,简单易用。
  • 缺点:
  1. 性能扩展比较困难
  2. 不利于多人同时开发
  3. 不利于升级维护
  4. 整个系统的空间占用比较大
(2)垂直应用架构
  • 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
    在这里插入图片描述
  • 优点:
  1. 界面+业务逻辑的实现分离
  2. 降低了维护和部署的难度
  • 缺点:
  1. 应用不可能完全独立,大量的应用之间需要交互
  2. 公用模块无法重复利用,开发性的浪费
(3)分布式服务架构
  • 当应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。分布式系统将服务作为独立的应用,实现服务共享和重用。
    在这里插入图片描述
(4)流动计算架构
  • 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键。
    在这里插入图片描述

4、什么是RPC

  • RPC 【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,是一种技术思想,而不是规范。它允许程序调用另一个地址空间(网络的另一台机器上)的过程或函数,而不用开发人员显式编码这个调用的细节。调用本地方法和调用远程方法一样。
(1)RPC基本原理

在这里插入图片描述
在这里插入图片描述

(2)RPC调用过程

A、调用方 client 要使用右侧 server 的功能(方法),发起对方法的调用
B、client stub 是 PRC 中定义的存根,看做是 client 的助手。stub 把要调用的方法参数进行序列化,方法名称和其他数据包装起来。
C、client stub找到服务地址,通过网络 socket(网络通信的技术),把方法调用的细节内容发送给右侧的 server。
D、server 端通过 socket 接收请求的方法名称,参数等数据,传给 stub。
E、server 端接到的数据由 serverstub(server 的助手)处理,调用 server 的真正方法,处理业务
F、server 方法处理完业务,把处理的结果对象(Object)交给了助手,助手把 Object 进行序列化,对象转为二进制数据。
G、server 助手二进制数据交给网络处理程序
H、通过网络将二进制数据,发送给 client。
I、client 接数据,交给 client 助手。
J、client 助手,接收数据通过反序列化为 java 对象(Object),作为远程方法调用结果。

(3)拓展:什么是序列化和反序列化
1、序列化和反序列化的定义:
  • Java序列化就是指把Java对象转换为字节序列的过程
  • Java反序列化就是指把字节序列恢复为Java对象的过程
2、json/xml的数据传递:
  • 在数据传输(也可称为网络传输)前,先通过序列化工具类将Java对象序列化为json/xml文件。
  • 在数据传输(也可称为网络传输)后,再将json/xml文件反序列化为对应语言的对象
3、总结:

核心作用就是对象状态的保存和重建。(整个过程核心点就是字节流中所保存的对象状态及描述信息)

二、dubbo框架

1、dubbo概述

  • dubbo是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现
  • dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案、服务治理方案。

2、基本架构

在这里插入图片描述

服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注
册自己提供的服务。
服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

调用关系说明

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

3、dubbo环境搭建

请移步下一个博文哦!!!

猜你喜欢

转载自blog.csdn.net/hcz666/article/details/115054496