xlite是一款超级精简的,基于Java开发的rpc服务框架。
软件开发领域有一句非常经典的话:不要重复造轮子。对于计算机领域软件大师来说,事实确实如此。因为重复造轮子会浪费他们不少时间,然而这时间本来可以做更有价值的创造工作。
然而大多数开发人员干的都是业务代码开发,写着写着最后彻底变成Crud Boy。技术能力得不到提升,工作几年过后,内心会非常焦虑担心被市场淘汰。所以个人以为,参照优秀的开源框架重复造轮子是增强技术能力非常好的一个途径。
由于工作中使用的较多的是dubbo框架,曾今也花了很大精力去学习其源码,但有些关键点仍然理解不到位。于是萌生了自己写一个精简版rpc框架的想法,通过自己动手实现,遇到技术难点后带着问题去学习源码,理解作者为什么那样来实现。
这里将框架命名为xlite,它是extremely lite 的简写,意为极其精简版的rpc框架。
一个框架的诞生,肯定离不开许多其他优秀的开源框架和语言底层技术的支撑。为了方便学习,下面列举出xlite框架开发中用到的技术点。
框架/技术点 | 框架中应用 |
---|---|
Spring | a. 定义 xlite 命名空间解析器,解析自定义标签 b. InitializingBean、BeanFactoryAware、ApplicationListener |
Zookeeper | a. Zookeeper的监听机制 b. 节点的创建和删除 |
Netty | a. Netty实现客户端和服务端通讯,ChannelHandler使用方法 b. 自定义通讯协议的编解码 c. 解决传输过程中数据包的粘包半包问题 |
Proxy技术 | a. 生成服务提供者和消费者的动态代理 |
xlite虽说是一个精简版的服务框架,但是麻雀虽小五脏俱全,具有如下特点(特性正在逐步开发完善)。
- 面向接口代理的Rpc调用,底层调用细节对开发者透明。
- 基于微内核+插件,保证了框架的高度可扩展能力。
- 使用Zookeeper作为默认注册中心,实现服务自动注册与发现。
- 内置集群容错和负载均衡功能。
- 完美支持Spring运行环境。
- 简单易用,使用门槛低。
- 到达第一个里程碑,直连调用可以正常使用。
- 代码还比较粗糙,后续逐步改进。
- 最简单版本的服务导出功能。
- xlite 项目初始化。
- netty作为默认通讯框架。
- 自定义默认传输协议xlite。