网络协议——RPC协议

网络协议——RPC协议网络协议——RPC协议远程调用协议,用于定义服务之间的接口调用规范标准1、RPC调用标准1.1、RPC结构客户端(服务端):执行逻辑进行本地调用Stub:对参数进行封装/解封装RPCRuntime:发送/接收请求/响应1.2、ONCRPC最早的RPC框架之一1.2.1、外部数据表示法(XDR)规定交互协议的文件,包括:XID:一对请求/响应的唯一标识CALL:请求为0,响应为1RPCVersion:RPC协议的版本号ProgramNumber:服务端程序的编号Ve

大家好,又见面了,我是你们的朋友全栈君。

网络协议——RPC协议


远程调用协议,用于定义服务之间的接口调用规范标准

1、RPC调用标准

1.1、RPC结构

  • 客户端(服务端):执行逻辑进行本地调用
  • Stub:对参数进行封装/解封装
  • RPCRuntime:发送/接收请求/响应

1.2、ONC RPC

最早的RPC框架之一

1.2.1、外部数据表示法(XDR)

规定交互协议的文件,包括:

  • XID:一对请求/响应的唯一标识
  • CALL:请求为0,响应为1
  • RPC Version:RPC协议的版本号
  • Program Number:服务端程序的编号
  • Version Number:服务端程序的版本号
  • Procedure Number:调用的方法
  • Credential、Verifier:认证鉴权
  • Remote Procedure Parameters:参数列表

1.2.2、端口映射器(PortMapper)

服务提供方的RPC程序启动时将自己的服务端口注册在PortMapper中,服务调用方从PortMapper中找映射的端口,然后再和服务提供方建立连接

2、简单对象访问协议(SOAP)

与古老的RPC协议相比,双方的SOAP协议没必要完全一致(参数顺序、参数个数等),更加灵活

2.1、Web服务描述语言(WSDL)

也是一个XML,描述了方法名、服务名、端口、请求参数等信息,通过在服务地址后加”?wsdl”查看

2.2、统一描述、发现和集成协议(UDDI)

以SOAP协议为基础的RPC服务,将自己的wsdl文件放到UDDI中,供服务调用方封装成本地调用

3、RESTful格式的API

全称叫表述性状态转移,基于HTTP协议的请求通过方法类型(GET、POST等)确定请求动作,数据以JSON文本格式传输

4、二进制类RPC协议

将数据压缩成二进制,减少带宽占用

Hessian2

Dubbo中默认的序列化协议

服务调用方根据Hessian2协议的规则,只记录类文件中类名、方法名、字段等信息的名称和字符长度等,压缩成二进制作为自描述,同时将参数的长度和值压缩成二进制,与自描述一同传输

服务提供方通过Hessian2协议的统一规则,对接受的二进制流进行解析,获得真正的请求

5、跨语言类RPC协议

不同的需求使用不同的编程语言,主要为了适应跨语言调用

Protocal Buffers

使用TLV(Tag,Length,Value)的存储办法将请求数据压缩

  • Tag:根据类文件中字段的唯一标识field_num,和字段类型的标识wire_type生成
  • Length:字段值的长度
  • Value:字段值

Envoy

一种动态的负载均衡器,有4个基础配置:

  • listener:监听端口接入请求
  • endpoint:目标IP地址和端口,请求转发的目的地
  • cluster:一组相同的endpoint,可以通过轮询进行负载和健康检查
  • route:通过route规则,跳到不同版本的cluster,或根据条件进行流量分配
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/144454.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • Nginx配置反向代理

    Nginx配置反向代理Nginx配置反向代理,什么是反向代理反向代理服务器决定哪台服务器提供服务。返回代理服务器不提供服务器。只是请求的转发。

  • Redis删除策略和淘汰策略[通俗易懂]

    Redis删除策略和淘汰策略[通俗易懂]来的问题,Redis引入了定期删除策略(是他们的一个比较折中的方案)周期性轮询Redis库中的时效性数据,采取随机抽取的策略,利用过期数据占比的方式控制删除频度。实际上,在前面所说的删除策略,它针对的是expire命令进行的操作,也就是说那些具有时效性的数据(已经过期,并且还在占用内存的数据),我们在这里说的是针对那些并没有过期,或者是内存中的数据没有一个带有有效期,全是永久性数据,这时候删除策略就不起作用了,所以这个时候内存满了我们再去插入数据到内存是怎么做?删除这批key中已过期的。……

  • Activity中bindService和registerReceiver的清理工作[通俗易懂]

    Activity中bindService和registerReceiver的清理工作[通俗易懂]在Android开发中,我们经常需要注册BroadcastReceiver和bindservice。接口函数如下:publicIntentregisterReceiver(BroadcastReceiverreceiver,IntentFilterfilter);publicvoidunregisterReceiver(BroadcastReceiverrecei

  • 谷歌学术使用方法_想用谷歌浏览器怎么办

    谷歌学术使用方法_想用谷歌浏览器怎么办谷歌学术简明使用说明源PDF文件下载链接:https://github.com/zjcao/books/blob/master/google_scholar_instructions.pdf

    2022年10月11日
  • 图片下划线 html,HTML <U>下划线标签元素 HTML下划线标签「建议收藏」

    图片下划线 html,HTML <U>下划线标签元素 HTML下划线标签「建议收藏」为html字体下划线样式标签,即对文字实现下划线效果。一、认识html下划线标签U1、htmlU下划线标签语法:以开始,以结束。u标签不是单独一个标签,而是有开始有闭合的一对标签,使用时候切记勿忘记结束,完成一组u下划线标签使用。内容HTML结构语法分析图2、下划线u用法被加下划线HTML下划线U使用效果截图二、htmlU下划线标签使用小实例接下来CSS5对html下划线标签进行小小实…

  • __builtin_offsetof()[通俗易懂]

    __builtin_offsetof()[通俗易懂]————-linuxcompiler-gcc4.h————–#define__compiler_offsetof(a,b)__builtin_offsetof(a,b)分析准备:__compiler_offsetof(),为gcc编译器中的编译方面的参数,查阅gcc方面的文档:—>gcc.pdf.Downloadfromwww.gn

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号