一个简易的RPC服务框架

Dubbo是一个优秀的分布式RPC服务框架,但是直接看Dubbo的源码会发现太复杂,不好入手。

所以我开发了一个类似的简易RPC框架。原理是相通的。很适合用来理解RPC框架。

一个简易的RPC服务框架

RPC框架解决的是微服务架构下远程服务调用的问题。所以最核心的组件必然是服务的注册中心。这个注册中心运行服务提供方将服务注册上来。和Dubbo一样,我使用Zookeeper实现。服务消费方从注册中心拿到远程服务的地址。继而发起远程方法调用。虽然是远程调用,但是对消费端来讲像本地调用一样。所以这里是用到了前面讲的一个设计模式--代理模式。具体来说是动态代理。封装了底层远程调用的细节。因为是远程调用所以涉及到传输协议,像Dubbo是设计了Dubbo协议。我这简单的demo就没必要了。序列化方面我选用Protostuff,因为java原生的序列化在高并发下会有一些性能问题。IO方面选用NIO,阻塞IO支持不了这种高并发场景。NIO直接用netty框架。

综上,我会用到的技术如下:

1,spring:构建一个java应用的标配了

2,Netty,实现NIO传输方面的功能

3,Zookeeper,注册中心的核心

4,Protostuff,解决序列化问题

我的代码地址:https://github.com/jedyang/simpleRpc


分享到:


相關文章: