6-插件思维设计可扩展的RPC架构

传输模块:封装一个单独的数据传输模块用于手法二进制数据。
协议封装:在对出入参进行序列化时不仅仅是将对象转化为二进制数据,同时还要加入用于断句的符号来分割不同的请求。这个过程叫做协议封装。
这两个处理的过程都是为了保证数据可以在网络传输之后还能正确的还原出输出前的语义。这两个过程可以放在架构中的同一个模块,协议模块
协议模块中还可以加入压缩功能。保证在请求数据包比较大的时候会进行拆分,为了减少因为拆分次数过多导致的传输时间过长的问题,可以对二进制数据大于某个阈值的时候进行无损压缩,然后在另一端用同样的压缩算法进行解压,保证数据可还原。
6-插件思维设计可扩展的RPC架构
集群能力,就是针对同一个接口有着多个服务提供者,但这多个服务提供者对于调用方
是透明的,所以在RPC里面还需要给调用方找到所有的服务提供方,并需要在RPC里面维护好接口更服务提供者地址的关系,这样调用方在发起请求的时候才能快速的找到对应的接受地址,也就是服务发现
RPC还需要提供一些服务治理的功能。

6-插件思维设计可扩展的RPC架构

引入插件化,将每个功能点抽象成一个接口,将这个接口作为插件的契约,然后把这个功能的接口与功能的实现分离并提供接口的默认实现。这样的架构,扩展性更好,实现了开闭原则,用户可以方便的通过插件扩展实现自己的功能,不需要修改核心功能的本身。其次保持了核心包的精简,减少了外部包的依赖。