什么是RPC框架

RPC框架允许远程服务调用,涉及角色如提供者、消费者、注册中心和监视器。文章介绍了RPC的基本概念,包括服务提供者和消费者的角色转换,以及演变过程中注册中心和监视器的出现。同时,提到了TCP/IP协议和HTTP协议在通信中的作用,并列举了Dubbo、Spring Cloud等主流框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言:

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值