Web服务架构之路--RPC服务框架svr_platform(Java平台)

简介


Svr_Platform是基于Thrift的RPC中间层框架。主要实现以下几个目标

  1)通过IDL定义,可以自动生成服务端框架和客户端调用代码。

  2)配合路由组件,实现服务自动路由。代码编写过程中无需配置服务端机器IP和端口。

  3)编译,打包,部署一体化。


Thrift基础


这里我不做简介,可以参考这边博客做基础了解

http://dongxicheng.org/search-engine/thrift-guide/


存在的问题


1) thrift生成的只是基础代码,需要用户选择序列化方式以及服务方式,编写一定量的代码才能真正运行起来

2) 部署打包并未提供标准方式,无运行时环境

3) 异步使用较为复杂,需要简化


需要做的事情


1) 服务端和客户端的代码标准化,便于使用

2) 打包标准化,开发人员只需要一条指令就能完成打包

3) 运行时标准化,需要一个运行环境。提供安装,显示,重启服务的指令!同时做到服务崩溃后自动拉起。


服务端设计


      


1. Container采用thrift提供的THsHaServer,根据配置文件中配置的Adaptor-Class,反射载入相应代码。实现简单插件化模型,进行代码复用



2. IFaceProxy切面,实现Log自动化(后续很多围绕接口性质的东西,都可以利用该切面)



3. 自动生成配置文件,Adaptor和Handler,pom文件,打包脚本!构建一体化方案



4. 运行时环境



5. 开发步骤

  1) 编写IDL,使用改造过后的thrift生成代码,拿出服务端代码目录

   2) 编写Handler的实现,调用mvn package进行打包

   3) 调用install_service.sh $service.zip安装打包好的服务。利用客户端生成的代码进行服务测试。


客户端设计



1. RouteAgent用于查询路由,负载均衡,去除单点,服务选择中扮演着重要的角色。后续会进行介绍


2. 调用分为同步调用和异步调用,两种生成的Stub。同时在平台中封装一些复用的类,自身定义的AsyncCallRunner

是一个重要的类。


3. 为了便于路由选择的简化。我们定义了每个服务有一个服务命令字,服务命令子是一个整数。IDL中服务声明的形式为

service(100)  XXService{...}

这样设计后,服务监听的端口为(10000 + 服务命令字),  路由组件复用服务命令字,更加方便路由组件的设计。


Svr_Platform的介绍就到这里,下一篇开始介绍路由服务组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值