Java简易RPC框架学习(一)

1、前言

更多请前往个人博客

随着web技术越发成熟,技术体系越发地完善。在小公司经常会看见一个项目就是全部,但是大公司的系统就不一样了,由于业务种类的繁多,业务量的巨大,大公司的项目通常会将一些常用到的功能组件化、服务化,就需要一个框架来管理。于是微服务架构的概念就出来了。微服务框架需要解决很多问题,例如服务注册、服务路由、服务调用等等。本系列专注于研究服务调用方面,通过拜读阿里开源框架dubbo,研究其服务调用的实现。服务调用有很多种方式,可以使用Http API,也可以使用远程调用。dubbo使用的是远程调用方式,于是本系列自然就从RPC入手。如下图所示为dubbo的框架图,可以看到rpc在其中扮演了一个举足轻重的角色。

2、大体框架

若要实现简单的PRC实例,用不了多少代码,《简单RPC实现》使用netty实现了一个简单的远程调用。但是一个复杂的系统需要考虑方方面面,例如消息的传输、通信的维持、会话的管理、消息的表示等等,所以大型的系统都是分层次的。通过大致的阅读源码,我可以类比通信OSI参考模型将dubbo的远程调用体系分为了如下4个层次:应用层、表示层、会话层、传输层。其结构如下:

 

3、层次介绍

上述4层中主要介绍传输层和会话层。

3.1 传输层

以消息传输为核心,通过网络来传递数据,dubbo在设计次层的时候使用了门面模式(装饰器模式),transporters是门面类,transporter的逻辑封装在里面,通过此FACADE调用transporter逻辑。通过调用transporter.bind()来绑定服务器,通过调用transporters.connect()来连接服务器并获取客户端。然后具体的消息传输通过服务器和客户端类来实现。这里客户端和服务器类封装了netty或者mina的库,能够方便的实现同步以及异步消息传输,应对高并发能力也很高。

3.2 会话层

此层类似于web应用中的session,以request、response为核心,封装请求响应模式,同步转异步,并监控连接状态。同时此层也应用了门面模式,exchangers是门面类。

3.2 代理层

Proxy层封装了所有接口的透明化代理,通过invoker来暴露服务。待续...

3.3 protocol层

待续...

你可能感兴趣的:(java,java,PRC,微服务框架)