分布式基础——RPC通信
来源:互联网 发布:解压缩zip linux 编辑:程序博客网 时间:2024/06/06 12:41
以下内容主要来自于《分布式系统原理与泛型》
进程间通信必须遵守协议。协议往往做是分层的。例如ISO 7层协议和Internet协议的4层协议。
常用的四种通信模型:
- 远程过程调用(remote procedure call):应用于客户—服务器。
- 远程方法调用(remote method invocation, RMI)。
- 面向消息的中间件(message - oriented middleware, MOM):高层消息队列。
- 流(stream):多媒体,音频和视频。
分层协议
物理层协议
将若干位组成一个成为帧(frame)的单元,并价差每一帧是否被接收方正确接收。采用将所有自己相加,计算出校验和(checksum)
传输层协议
传输层将消息分为若干传输的足够小的块,每一块都分配一个序列号,然后将它们发送出去。在传输层报头中设计的内容包括那些包已发送,那些包已接受到、接收方所拥有的空间还能容纳多少包、那些包应该重发以及其他一些类似的主题。
Internet的传输控制协议(transmissioncontrol protocal,TCP).通用数据表协议(universal datagram protocal,UDP)。
还有其他专门用途的协议。例如,为了支持实时数据传输,定制了实时传输协议(real-time transport protocl, RTP).
高层协议
常用主要有FTP和HTTP协议。
但是有很多有用的协议不能算是传输协议,是中间协议
例如:软件的认证和授权。
通信分类
持久通信(persisitent Communication)提交传输的信息一直由通信中间件存储。
顺时通信(transient communication)仅仅在输出传输过程中记录信息。
异步通信(asynchronous communication)发送方在提交传输的消息后立即往下进行。
同步通信(synchronous communication)发送方被阻塞,直到知道其请求传输已完成。
远程过程调用
RPC背后银行的思想是尽量使远程过程调用具有与本地调用相同的形式。RPC的调用是透明的。
RPC调用需要两种存根的支持:客户存根和服务器存根。
RPC的调用过程如下:
1,客户过程以正常的方式调用客户存根;
2,客户存根生成一个消息,然后调用本地操作系统。
3,客户端操作系统将消息发送给远程操作系统。
4,远程操作系统将消息交给服务器存根。
5,服务器存根将参数提取出来,然后调用服务器。
6,服务器执行要求的操作,操作完成后将结果返回给服务器存根。
7,服务器存根将结果打包成一个消息,然后调用本地操作系统。
8,服务器操作系统将含有结果的消息发送会客户端操作系统。
9,客户端操作系统将消息交给客户存根。
10,客户存根将结果从消息中提取出来,返回给调用它的客户过程。
参数传递
参数列集(parameter mashaling)把参数打包斤消息中的过程。
如果参数和结果都是标量(布尔,字符)那么相对简单。
这里需要处理字符集不同,数据的大端和小端。
传递引用参数通常会禁止传入引用,而通过使用复制-还原机制代替。如果能知道是输入参数还是输出参数,可以令性能提高一倍(服务器端就不用传回输入参数的值了)
RPC规定了消息的格式,并对整数、字符、布尔类型达成一直。我们可以使用接口定义语言IDL来描述接口。
异步RPC
异步RPC:在没有结果返回的时候,我们需要哦异步RPC,例如:账目转换,数据库添加数据,启动远程服务,执行批处理操作。
异步RPC的主要问题无法确保可靠性,客户无法确定它发出的请求是否将得到处理。
RPC一些注意内容
提供语义:
至多一次操作(at-most-once operation),这种情况下同一个调用的执行不能超过一次,即使系统崩溃时也是如此。(服务器崩溃,客户端不会提交相同的RPC内容)
幂等的(idempotent)重复多次执行该过程,而不会造成任何不良后果。(服务器崩溃回复之后,客户端可以重复提交相同内容)。
- 分布式基础——RPC通信
- RPC之——轻量级分布式RPC框架实战
- RPC之——轻量级分布式RPC框架实战
- Storm常见模式——分布式RPC
- Storm常见模式——分布式RPC
- Storm常见模式——分布式RPC
- Storm常见模式——分布式RPC
- Storm常见模式——分布式RPC
- Storm常见模式——分布式RPC
- java基础——RPC
- Hadoop之——RPC通信实例
- RPC通信框架——RCF介绍
- Storm常见模式——分布式RPC<转>
- Storm常见模式——分布式RPC<转>
- 分布式系统中的必备良药 —— RPC
- Hadoop中的RPC实现——客户端通信组件
- Hadoop中的RPC实现——服务器端通信组件
- Hadoop中的RPC实现——客户端通信组件
- SNMP常用OID查询
- SQL收缩日志
- oppo find 7特色功能
- org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehau
- 分割/截取字符串
- 分布式基础——RPC通信
- 字符串匹配之BM和KMP算法
- EL表达式
- linux 共享内存与nginx共享内存
- eclipse常用快捷键
- Linux下cron的使用
- 诺基亚新专利
- Android自定义属性,format详解
- App自适应draw9patch不失真背景