基于RPC的远程调用方案

RPC

[HTTP 和 RPC 的区别?](https://www.jianshu.com/p/fe5ccfc5d7bd)

[既然有 HTTP 请求,为什么还要用 RPC 调用? - 手不要乱摸的回答 - 知乎](https://www.zhihu.com/question/41609070/answer/191965937)

[既然有 HTTP 请求,为什么还要用 RPC 调用? - 易哥的回答 - 知乎](https://www.zhihu.com/question/41609070/answer/1030913797)

怎么理解rpc,既然有http请求了为啥还要用rpc? - 知乎

怎么理解rpc,既然有http请求了为啥还要用rpc? - Ikerli的回答 - 知乎 https://www.zhihu.com/question/524580708/answer/2584782720

有了 HTTP 协议,为什么还要有 RPC ?

Go面试官:既然有HTTP协议,为什么还要有RPC

RPC 基础常见面试题总结 | JavaGuide

Dubbo RPC_awesometime的博客-CSDN博客

http 2.0比1.0优化很多

基于HTTP的远程调用方案

基于RPC的远程调用方案

接口规范restful
序列化反序列化也支持xml json protobuf msgpack
7层应用层通信协议最根本区别http2.0
消息头 Header 和消息体 Body
http2.0 报文格式冗余信息多,有效信息少 (性能 1kqps)
还可自定义通信协议格式如tcp udp 较、减少无用信息  (性能 10-100kqps)
传输层通道tcp socket连接tcp socket连接
框架代表dubbo   gRPC  thrift
是否跨语言支持跨语言,更灵活通用rpc client 和 rpc server 必须使用同一语言,因为需要对调用过程在API层面进行封装
服务发现DNS 服务 去解析域名一般会有专门的中间服务去保存服务名和 IP 信息,比如 Consul、Etcd、Nacos、ZooKeeper
连接池机制支持连接池复用的,也就是建立一定数量的连接不断开,并不会频繁的创建和销毁连接支持连接池复用 tcp connect pool
其他功能封装了服务发现 负载均衡 熔断降级 异常处理 动态代理
代码层面使用HTTP协议调用远程方法比较复杂,要封装各种参数名和参数值,url  port 
http.Post(url, "application/x-www-form-urlencoded", payload)
RPC要求在调用方中放置被调用的方法的接口。调用方只要调用了这些接口,就相当于调用了被调用方的实际方法,十分易用,屏蔽掉了复杂的参数 url 封装,可以就像调用本地方法一样,方便地调用远程方法
public User getUserById(Long id) {
       return userConsumer.getUserById(id); // 这是远程调用,逻辑是用户小组的服务实现的。看不到http.Request(url)之类的代码
    }
适用场景第三方平台提供http接口公司内部微服务之间调用,不需要太考虑通用性,只要公司内部保持格式统一即可

常见的注册中心有很多种,比如zookepper、eureka、nacos、consul等。

注册中心的原理不是本文的重点,因此不做详细描述。

123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值