基于Netty实现RPC框架
背景:微服务
微服务挑战之一:微服务间的通信
如何实现微服务之间的通信,而不带来性能瓶颈?
RPC构建需要考虑的主要因素
- 通信协议
- 文本协议或二进制协议(RESTful with JSON or RPC with Binary Encoding)
- 支持的调用方式:单向、双向、Streaming
- API容错、可伸缩性
- ….
主流RPC框架
RPC框架
RPC框架基本问题
- 怎么实现用户透明?怎么生成 Proxy(Stub)?
- 怎么打包参数?
- 怎么传输?
- 怎么知道目标服务地址?
- 怎么发布一个 RPC 服务?
- 动态代理解决了 Stub 的问题。
- 序列化和网络协议编码解决了打包的问题
- 服务发现与路由寻址解决了如何知道目标地址的问题
- 如何发布一个服务,Registry 来解决。
- Netty 等解决了网络传输的问题。