转自:https://code.google.com/p/avro-rpc/
avro-rpc 是一个支持跨语言实现的RPC服务框架。非常轻量级,实现简洁,使用方面,同时也方便使用者进行二次开发,逻辑上该框架分为两层:
1:网络传输层使用Netty的Nio实现。
2:协议层可扩展,目前支持的数据序列化方式有Avro,Protocol Buffers ,Json, Hessian,Java序列化。 使用者可以注册自己的协议格式及序列化方式。
主要特点:
1:客户端传输层与应用层逻辑分离,传输层主要职责包括创建连接,连接查找与复用,传输数据,接收服务端回复后回调应用层;
2:客户端支持同步调用和异步调用。服务异步化能很好的提高系统吞吐量,建议使用异步调用。为防止异步发送请求过快,客户端增加了“请求流量限制”功能;
3:服务端有一个协议注册工厂和序列化注册工厂。这样方便针对不同的应用场景来定制服务方式。RPC应该只是服务方式的一种。在分布式的系统架构中,分布式节点之间的通信会存在多种方式,比如MQ的TOP消息,一个消息可以有多个订阅者。因此avro-rpc不仅仅是一个RPC服务框架,还是一个分布式通信的一个基础骨架,提供了很好的扩展性;
4:Avro序列化框架是Hadoop下的一个子项目,其特点是数据序列化不带标签,因此序列化后的数据非常小。支持动态解析, 不像Thrift 与 Protocol Buffers必须根据IDL来生成代码,这样侵入性有点强。性能很好,基本上和 Protocol Buffers差不多;
运行性能测试实例
1. 启动服务端 code.google.dsf.test.StartServerTest
2. 运行客户端 code.google.dsf.test.performance.RPSTest
测试对象,客户端采用异步方式发送一个POJO(10个属性字段)对象 两台,一台运行客户端,一台运行服务端,配置如下: • CPU: E5645 @ 2.40GHz 2 core • Memory: 2G • Network: 1000Mb
JVM Options: -server -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -Xms512M -Xmx1024M
最新测试TPS: avro:100937 Protocol Buffers: 122299
最新测试:http://www.iteye.com/topic/1127125
作者:[email protected] http://taohuifei.iteye.com/blog/1685160
1:介绍
avro-rpc是一个支持多序列化方式的RPC框架,目前支持Avro,Protocol Buffers ,Json,Hessian,Java序列化方式。网络传输层使用Netty的NIO实现,协议层可扩展,用户可以自定义协议格式及注册新的序列化方式。
基本特点
1:跨语言,可作为跨语言系统之间的分布式服务框架。
2:简洁高效易扩展,代码简洁,性能较好,结构清晰,方便扩展。
3:基本功能完善。同步调用,异步调用,连接复用,自动重连,超时管理,异步发送流量控制等;
4:支持多序列化方式,可以根据不同的平台和场景选择合适的序列化方式了;
项目地址:http://code.google.com/p/avro-rpc/
SVN地址:https://avro-rpc.googlecode.com/svn/
2:性能测试