1.RPC远程服务调用框架

2020-04-21  本文已影响0人  砂糖z

实现RPC远程调用通信框架整体需要解决四个问题:

但是实现RPC调用还需要解决

1.客户端和服务端如何建立网络连接

现在的通信一般都是基于TCP协议简历的网络连接。

2.服务端如何处理请求?

BIO(同步阻塞方式)

每个请求都需要新开线程去处理,如果达到os最大的线程数瓶颈,新来的请求没有办法处理

NIO(同步非阻塞方式),服务器端优化

通过I/O多路复用技术,单线程的情况下可以同时处理多个客户端请求,这种开销小,节省os开销。

AIO(异步非阻塞方式),客户端优化

客户端只需要发起一个I/O操作然后立即返回,等I/O操作真正完成之后,客户端会得到I/O操作完成的通知,此时客户端只需要对数据进行处理就好了,不需要进行实际的I/O读写操作,真正的I/O读写操作已经由内核完成,这种方式的优势客户端无需等待,不存在阻塞等待问题。

3.数据传输需要采用什么协议?

因为现在的通信都是基于TCP协议,但是TCP是面向字节流的,无边界。所以会产生粘包和半包问题,具体可以查看点击
除了公有协议的Http协议等,现在更多的RPC框架都自定义私有协议。

4.数据该如何序列化和反序列化?

字节数组<->java Object

如何选择,考虑维度?

案例

上一篇 下一篇

猜你喜欢

热点阅读