没停服务 就先替换jar包_MyThrift一款轻量级RPC服务框架

基于以下组件打造的一款轻量级RPC服务框架:thrift(facebook出品的RPC框架)、commons-pool2(socket连接池). 服务治理(Zookeeper)、注解自动扫描(Reflections) 、AOP(Spring) 、GC优化 已经实现;即将移植智能负载均衡(Ribbon); 目前采用轮询算法作为client端的负载均衡算法。

6640c7f3ba168d5e19b4871c54fe23ab.png

#MyThrift

5dc5c17bb0cc3bd24155eb11903f797f.png
4c39958d061efbc9ffe160b789c8323b.png

分析问题:

RPC框架:对网络模块非常熟悉,并在实际生产环境中使用过,thrift性能不错。

TCP/IP:有过2年的TCP/IP报文分析经验,从链路层到应用层都很熟悉。

ZooKeeper:在MySQL-Binlog项目中攒出了一些使用经验,同时积极吸收 Motan 等兄弟软件的优秀理念部分。

连接池:使用commons-pool连接池组件。

解决问题:

糅合thrift,zookeeper,commons-pool打造一款轻量级、性能高、上手容易的rpc调用框架,

使得架构师和后台开发人员可以将各种复杂存储的IO访问对外暴露为服务(其实就是跨机器的普通函数调用)

这样web开发人员可以专注于业务逻辑,加速产品迭代,对企业带来的好处不用多说!

1-运维组创建maven私服

一般,公司内部代码,如果有别的项目组需要引用的jar包,一般放在公司内部maven私服上,所以,请先创建一个maven私服。可以参考网上的文章: http://www.tuicool.com/articles/E7ZBv2具体过程就不说了,读者自己解决,最后,我们可以获得一个类似http://192.168.56.102:8081/nexus网址的就可以了,这里的IP是你自己的实际IP.后面用到时请自行替换IP.

2-架构组上传common工程jar包

common工程一般是公司的架构组负责维护,业务方不需要关心。common工程有新的版本替换时,告知业务方使用新的版本打包即可。1)eclipse单独引入common工程,进行源码修改(有必要的话,比如架构组需要升级).2)进入common项目工程,开始编译打包 mvn -X clean compile package3)顺利的话,可以看到2个jar包,一个有依赖,一个不带依赖。4)请上传其中一个jar包到你的maven私服上,可以选择手动上传,如果对maven熟悉的话也可以命令行自动上传。这里我选择的是不带依赖包的jar包上传到maven私服。上传之后,记住相关的maven信息,后面会用到。这个信息在maven私服里也可以看到的,比如我的就是com.freedom.rpcmythrift-common2.0.1

3-服务提供方上传service工程jar包

好,到了这里比如公司需要有一个服务,指定了一个团队负责这个微服务,此时,这个团队需要定义好服务的接口,这样就可以打包上传到maven私服,让别的团队先用起来,然后自己再慢慢写代码实现,两方都不耽误所以,这里重点是定义一个空的接口定义文件。但是在编写接口文件之前,我们需要搭建文件的编译环境。1)Thrift编译环境搭建首先,用户需要知道怎么搭建thrift的编译环境打开 http://thrift.apache.org/download输入图片说明红色方框内的网址实际上是: http://mirrors.cnnic.cn/apache/thrift/0.9.3/thrift-0.9.3.tar.gz下载到你的linux机器上,解压缩,然后依次执行下列命令:./configure --with-lua=no 这一步时间会比较长makesudo make install}看到下面的图片表示安装成功输入图片说明2)编写接口文件&生成对应的java文件必须知道的是,thrift需要先定义一个 xx.thrift文件,此文件用来定义类似于interface的若干接口下面举个例子,我有一个HelloWorldService.thrift文件,内容如下:输入图片说明那么,用户会问“我怎么知道有什么类型呢”,别急,见文档 http://thrift.apache.org/docs/typesPS:第一个参数前面就是1,第2个参数就是2,比如string helloWorldString(1:string content, 2:string param2 , 3:string param3)好,现在已经有了接口文件,然后如何生成对应的java文件呢?因为是为了生成java文件,所以执行thrift --gen java HelloWorldService.thrift然后就会看到当前文件夹有个gen-java文件夹,如图所示:输入图片说明可以看到这个文件很大,这是因为thrift已经帮我们做好了很多额外的工作,比如序列化和反序列化,这样我们才可以很轻松的享受便利!那么,到这里,我们实际上,已经完成了1)定义xx.thrift2) 根据xx.thrift生成接口类下面就开始使用这2个文件了3)业务java接口文件融入java框架工程里已经有了一个service demo工程,模仿它的结构,创建一个你自己的maven工程把你自己的接口java代码放在src/main/java里,.thrift存根文件放在src/main/resources目录下这个时候会报错,在pom.xml中加上对mythrift-common的jar包依赖,同时还需要增加别的相关依赖,因为common包里并没有把依赖包打进去。比如thrift的依赖包就是 org.apache.thrift libthrift 0.9.3 必要的话,修改里面的maven私服地址。接下来,很重要的一个步骤,加上接口文件的注解,这个非常重要,比如在类上加上// 加上注解,才可以被扫描到@Processor(group = "test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值