** 随着工作时间越来越久,你会发现,技术逐步进入了一个瓶颈期,很多代码都是用之前的经验进行copy,长此以往,就注定只能成为一个平庸的程序员。要从平庸走向伟大,需要学习的东西太多了,何不将这些知识进行一次深入的总结,形成一套框架。 可能你觉得,现实世界有很多开源的框架,直接拿来用不就可以了。其实,我们开发框架的目的:1、了解框架的思想;2、开源的框架很多过于臃肿,并不一定适合公司的业务。3、做技术储备和积累,为公司提供核心技术。 近期看了一些开源的RPC框架,从今天起,我先实现一个简单的版本,第一个版本需要实现的功能定义的较为简单:(因为个人比较喜欢xmen系列的电影,所以将项目名称命名为xmen)**
1、扩展spring的配置文件。
(1)定义注册中心标签:<xmen:registry name="registry" regProtocol="zookeeper" address="127.0.0.1:2181" connectTimeout="2000"/>;
(2)定义服务协议标签:<xmen:protocol name="xmen" port="20000"/>;
(3)定义服务提供标签: <xmen:service interface="xxx.xxx.xxx.service" class="xxx"/>或者 <xmen:service interface="xxx.xxx.xxx.service" ref="xxx"/>
(4)定义引用服务标签:<xmen:referer id="xxxService" interface="xxx.xxx.xxx.service"/>
2、读取配置文件,启动service。
分别定义4个类解析扩展的4个标签。
3、将服务注册到zk。
将服务注册到zk,并且可以扩展,便于将来添加redis等注册方式。
4、客户端远程调用服务。
通过代理调用远程服务,代理的方式也需要做到可扩展。
所需的技术:
1、注册中心:Zookeeper
2、序列化:Protobuf
3、传输:Netty
4、代理:JDK、Cglib
5、负载均衡:Random、RoundRobin
6、配置文件:Extend Spring(扩展spring)