Skip to content

liuyanfeiyu2012/RpcLite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RpcLite

背景: 目前市面上的RPC框架很多,然后真正适用于自己公司的却不多,大部分框架为追求功能上的完整性而牺牲了 易用性。如很多框架支持跨语言,然后在每个公司内部后台技术中往往使用的是同一种语言。为了支持跨语言,各类 框架技术不得不定义自己的通信协议,维护大量复杂的接口定义文件是非常令开发人员头疼的事情。再如通信加密模块, 实际上在一个公司内部的各个系统中,基本上是用不着加密的。SSL加密一般只用于为外部系统提供接口的场景下。 这些功能使得框架变得非常大而复杂,学习成本也非常高。

目标: .深入介绍RPC框架原理 .实现一个简单高效RPC框架(RpcLite) .让开发者深入理解RPC框架,并可通过简单改造本文对应项目RpcLite,达到构造适用于自己项目的RPC框架

ROAD MAP

  1. 实现基本通信功能
  2. 实现通过接口rpc调用
  3. 调整代码结构
    1. 调整package结构,重命名
    2. 确定常用参数类型在框架中可以正常使用(8种基本类型,Date,BigDecimal,List,自定义类型T(T implenment Serialize)) 3)返回类型为 T implenment Serialize
  4. 为接口中方法增加Cache,启动时将所有方法加入cache,不必每次在调用前通过反射判别调用方法,提高效率。
  5. client端健壮性功能,自动重连
  6. 实现固定个数的Server端load balance功能
  7. 实现client端与Spring框架的集成
  8. 实现服务注册与发现功能
  9. 换成kyro序列化方式。
  10. 实现限制类型Exception
  11. 完善服务幂等配置
  12. 为底层kryo序列化加异常处理,增强健壮性
  13. 完善Log
  14. 压力测试与持续优化
  15. 完善TestCase

优点:

. 轻量级(代码量少,依赖的jar少),纯java实现,学习成本非常低。 . 支持java异常 . 人性化的接口定义(不需要写晦涩的IDL文件) . 简洁的配置

缺点:

. 不能跨语言

optional:

. 目前采用的是java原生序列化方式,可以在将来换成更加高效的序列化方式 . 为框架添加health check模块 . 为框架添加SSL加密模块 . 为框架添加IP黑名单,白名单功能