Lu-Rpc 更新,支持熔断,限流
2018-12-15 本文已影响475人
莫那一鲁道
唠叨
GitHub 地址: https://github.com/stateIs0/Lu-Rpc
最近一直在开发一个 mini rpc 系统,支持一些 rpc 常见的功能,例如客户端负载均衡,故障转移,熔断,自适应限流,多通道流量分配,动态配置等等。
不过也总算是开发完了,目前已经在线上跑起来了。
好了,总算有点点时间来维护一下我的 Lu-Rpc 了。说实话,在开发那个项目的期间,还是有很多思考的,一些平时自己看源码不重视的地方,在真正写代码的时候,需要考虑的有很多。
例如领域模型的生命周期管理,日志格式,异常处理,配置管理,等等这些“杂事”吧,请允许我称之为杂事。在框架开发中,我们似乎更关注核心功能的实现,但是这些打杂的活也是必不可少的。例如生命周期的管理,如果没有管理好系统资源,当应用关闭后,还有很多资源无法释放,日志就更不用说了,日志里要包含上下文信息,参数,结果,异常类型,环境信息,最好包含 ip,port , JDK version,系统 load,等等。配置呢?当然也是重要的,这次我参照 hystrix 的配置写另一个简单的动态配置,可以灵活管理框架里配置。
好了,唠叨了这么多,主要还是讲一些自己在这次将近一个的框架开发中的心得吧,写了大概 1 万行代码,一个人。时间比较紧,junit test case 写的不多,主要跑通了流程就基本认为 ok 了。这大概就是项目小的好处吧。
Lu-Rpc 增加了哪些功能?
Lu-Rpc 的初心是为了初学者,因此此次增加的功能只有核心功能:
- 类似 hystrix 的熔断功能,简单易懂,无锁设计。
- 类似 hystrix 的信号量限流功能,但是和 hystrix 不同的是,他是动态变化的。当然,这个信号量也是自己实现的,无锁设计。
- 支持内部队列削峰。在限流的时候,需要抢信号量,为了防止流量高峰时的毛刺,写了一个简单的缓冲区,用户缓冲流量。支持超时。
- 为了搞定动态配置,参考 hystrix 的配置模块设计,写了一个配置模块,能够很方便的管理框架的乱七八糟的配置。
Summary
年底了,马上又要忙起来了,又没时间维护了。☹️
不管怎么样,欢迎大家 star !!!争取过 100 star,我就满足了,哈哈!
GitHub 地址: https://github.com/stateIs0/Lu-Rpc