Maven的多模块项目搭建还是比较方便的,结构清晰,模块依赖明确,很适合用来作为开发RPC的开发架构,我们开发的RPC起一个名字,因为大学一直酷爱魔兽,喜欢魔兽解说xiaoy,他有一个别名叫做laopopo,所以我就没多想,就起了一个名字叫做laopopo-rpc,名字蹩脚了一点,不过不重要,明朝开国皇帝朱元璋真名叫朱重八,老爸叫做朱五四,他依旧做了皇帝,所以英雄不问姓名~ 虽然我写的也不是英雄,个人兴趣~
(项目截图)
(Github截图)
模块介绍:
laopopo-common: 存放一些比较公用的工具类,例如反射工具类,logger工具类,公用的Entity,自定义的异常
laopopo-remoting: 一个RPC框架,是离不开对网络的支持的,Laopopo是使用Netty4来支持网络数据传输的,protostuff做序列化工具,这个模块,用来完成网络模块的功能的
laopopo-registry:注册中心抽象模块,定义注册中心一些基本的功能,比如接收提供者的提供的服务信息,接收订阅者的某个服务订阅请求,且返回订阅结果等等,简而言之,这个模块主要用于定义注册中心的接口
laopopo-registry-default:注册中心基于内存的实现,因为注册中心的实现方式有很多种,基于java内存的,基于zookeeper的,基于consul的,所以才会有了laopopo-registry这个抽象模块,才会有了laopopo-registry-default这个基于java内存实现的默认模块,本系列目前只完成对java内存的实现
laopopo-client: 消费端和提供者端的所有逻辑代码在此模块实现,也就是说如果某个业务逻辑项目需要有RPC的功能的话,只需要maven引入此模块的依赖就可以了,当然此模块也会依赖common和remoting模块,因为这是基础模块嘛
laopopo-monitor: 顾名思义就知道这是监控模块,用来统计一些调用信息,做一些数据统计和反馈
laopopo-spring-support: 完成rpc对spring的基本支持
laopopo-console:提供一个web端的管理页面
好了,整个项目的每个模块的功能简单的说了一下,详细地具体的实现以后再分析,我们再分析一下依赖的maven jar包
<netty.version>4.1.0.Final</netty.version> <slf4j.version>1.7.5</slf4j.version> <protostuff.version>1.3.5</protostuff.version> <objenesis.version>2.1</objenesis.version> <bytebuddy.version>1.2.3</bytebuddy.version> <cglib.version>3.1</cglib.version> <spring-framework.version>4.3.0.RELEASE</spring-framework.version> <metrics.version>3.1.2</metrics.version>
网络框架我们使用Netty,网络序列化工具使用protostuff,为了增强对调用对象的编织功能我们使用byteBuddy(后面我们一起学习,先了解说明一下),统计工具使用metrics,spring的版本我们使用4.3
整个项目的基本搭建就是如上说明的一样了