IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 什么是RPC框架 -> 正文阅读

[网络协议]什么是RPC框架

目录

前言:

1.简介

1.1什么是RPC

1.2 演变过程

1.3 框架


前言:

今天在阅读阿里开发规范2016.12时,发现在命名规范中提到,在POJO类中的任何布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误

比如说:定义基本数据类型boolean isSuccess;的属性,它的方法也是isSuccess(),RPC框架在反向解析的时候会“以为”对应的属性名称是success,导致属性获取不到,抛出异常

我就有了一个疑问,什么是RPC框架?就去了解了下,在此记录

参考网址:什么是RPC框架 - 知乎

1.简介

1.1什么是RPC

RPC框架,全程Remote Procedure Call

其实就是一种远程的程序调用,远程服务调用,具体的实现有下面四种角色构成

  • registry - 注册中心,当服务提供者启动时会向注册中心注册,然后注册中心会告知所有的消费者有新的服务提供者。
  • provider - 服务的提供者,远程调用过程中的被消费方。
  • consumer - 服务的消费者,远程调用过程中的消费方。
  • monitor - 监视器,它主要负责统计服务的消费和调用情况。

1.2 演变过程

什么是提供方,什么是消费方呢?

比如有A,B两台独立的服务器,A定义了一个方法,B想要调用A定义的方法,A提要求,让B如果想要调用自己,得提供姓名和手机号,B同意了,远程调用了A

在这里A就是服务的提供者,在远程调用过程中的 “被消费方“

? ? ? ?而B就是服务的消费者,在远程调用过程中的 “消费方”

?后续如果服务提供方A ,要搬家了,得换地址

?那么服务消费方B,也得跟着改代码,改成A新的地址

?那B就觉得太麻烦了 能不能把修改A新的地址和调用A这两件事绑定在一起呢,这样就不用都改了

?B就把底层逻辑提取出来进行了封装,每次直接使用即可

后续服务提供方A,又提供了一个新方法,有新的功能,新的返回数据

服务消费方B就觉得,你每多一个方法,我就封装一个调用逻辑,太麻烦了,能不能共用同个调用逻辑呢

B就想办法,做一个代理模式来实现共用调用逻辑,解决这个问题

这就形成了简单的一个框架,当然再往下延伸还有很多

  • 那如果有其他用户调用方法怎么办呢,能不能把这些方法放在一个固定的地方,然后他们谁都可以调用。这就是registry (注册中心)?,当服务提供者启动时会向注册中心注册,然后注册中心会告知所有的消费者有新的服务提供者。
  • 如果调用的时候,突然服务不在了怎么办,能不能监控一下这个服务状态,出现问题的时候提前告知消费者一下,这就是monitor(监视器),它主要负责统计服务的消费和调用情况。

还有一些是这些中心之间的通信协议,最基础的是TCP/IP协议,也是最有效不会过时的协议。像HTTP协议等就是基于TCP/IP升级的一种协议,通过URL传输JSON字符串来实现,比web serivce高效一些

1.3 框架

现在主流的框架有Dubbo、Spring Cloud等,微博内部使用的Motan,腾讯内部使用的Tars。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 10:12:53  更:2022-05-14 10:13:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 2:26:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码