网站架构:分布式通信 基于RPC的通信介绍

RPC协议通过网络从远程计算机程序上请求服务,而不需要连接底层网络技术的协议,假设某些传输的存在,为通信程序之间协议信息数据(客户端/服务器模式)

传统RPC调用性能差的三个原因

1 网络传输方式:采用同步阻塞IO,当客户端的并发压力或者网络延时增大之后,同步阻塞IO会由于频繁的等待导致线程经常性的阻塞

2 序列化性能差:通信过程前和过程后,对象转字节,字节还原对象的过程,处理效率差

3 线程模型问题:同步阻塞模型,1个线程处理1个连接,由于线程资源是JVM虚拟机非常宝贵的资源,当IO读写阻塞导致线程无法释放,会导致系统性能急剧下降,严重的会导致虚拟机无法创建新的线程

RPC需要解决的问题

1 通信问题:客户端和服务器之间建立TCP连接,远程过程调用的所有交互的数据都在这个连接里传输

2 寻址问题:A服务器的应用怎样告诉底层的RPC框架,如何连接到B服务器以及特定的端口,怎样完成调用

3 序列化和反序列:A服务器上的方法参数需要底层的网络协议(二进制)

RPC调用需要考虑的两个关键性问题

1 远程通信协议的选择:例如:http,基于tcp或者udp的socket

2 数据传输的格式:java Objcet,xml,json,二进制等

怎样学习RPC通信框架

1 底层基于什么协议实现

2 序列化过程

3 传输协议

4 线程模型

猜你喜欢

转载自www.cnblogs.com/hpzhu/p/10600663.html
今日推荐