不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2018-10-16 23:46:52  修改时间:2024-05-08 05:43:33  分类:Java基础  编辑

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

 

整个项目的基本搭建就是如上说明的一样了