精华帖 (2) :: 良好帖 (8) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-28
最后修改:2010-11-30
更新:已支持HTTP,和hessian已经完全兼容。missian的stub可以调用hessian服务,hessian的stub也可以调用missian的服务。简介见这一篇文章: http://www.iteye.com/topic/828803 ========================================================================================= 大家都知道,Hessian是一个了不起的RPC框架。但是,它的调用是同步的,并且只能基于HTTP传输。 我创建missian(mina+hessian的意思)的目的有二: 1、实现异步的RPC调用。同步远程操作带来的损耗有时候是无法忍受的。异步操作要复杂一些,但是能够提高系统的并发能力和响应时间。 2、让hessian可以在tcp上传输。HTTP是构建在tcp之上的应用层协议,本身是比较复杂的,对HTTP编码解码的过程也无疑是一个性能损耗。如果把HTTP这一层去掉,能够一定程度的提供性能。 有多种办法可以对hessian进行扩展以支持tcp传输,但是很难让它异步,因此我决定大刀阔斧的对其进行改造,以达到我的目的。 Missian的服务器端是基于mina的;同步客户端之基于传统的阻塞式Socket实现的,支持连接池;异步的客户端基于mina NioSocketConnector。 这里也推荐一下mina这个了不起的nio框架。我从06年底就开始使用。最近的一个项目中,写的基于mina的http服务,在全部击中缓存的情况下(仍有一定的逻辑,诸如几个小列表进行取并集、交集,返回数据包在1-2K之间),测试达到了23000个TPS,此时CPU仅达到40%左右。我推荐大家使用mina来开发网络通信方面的东西,包括服务器。 Missian没有绑定spring,但是我强烈推荐使用spring,这样missian可以直接去spring里面找到对应的bean,否则还需要你自己实现一个BeanLocator接口。 同时我提供了几个例子: 1、构建服务器端(基于spring) 2、构建服务器端(无spring) 3、同步客户端(无spring,使用spring来创建也很简单) 4、异步客户端(基于spring) 5、异步客户端(无spring) Missian 即将支持基于HTTP的异步/同步调用,这时协议和hessian是完全一致的,因此missian http客户端可以调用hessian servlet(仅同步调用,因为异步需要服务器端回传方法名称,hessian是没有这个的),hessian也可以调用missian的服务。 Missian http客户端调用missian服务则即可以是同步的也可以是异步的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-11-28
希望有兄弟加入一起完善这个项目。尤其是英语好的兄弟,可以来完善英文文档和注释
|
|
返回顶楼 | |
发表时间:2010-11-29
支持兄弟,hessian确实是个好东西,一直在结合spring用的,非常简单。
|
|
返回顶楼 | |
发表时间:2010-11-29
org.apache.asyncweb.common.DefaultHttpResponse;
asynweb没有在依赖包里... |
|
返回顶楼 | |
发表时间:2010-11-29
等你的好消息
|
|
返回顶楼 | |
发表时间:2010-11-29
好的,我想加入一下。 其实hessian我在很早就注意这个开源项目了, 它的RPC的调用效率很高,而且比较简单,要是能分享一下开发的文档,或者其他的东西,就好了,我想先研究一下lz的代码。
|
|
返回顶楼 | |
发表时间:2010-11-29
最后修改:2010-11-29
RPC的两个最关键的地方:
1、报文序列化 2、数据传输 关于报文序列化,hessian 确实比java的好。 关于的数据传输,现在流行的nio框架性能都不错。 希望楼主能抽象成接口,提供序列化接口和传输接口, 使用的时候,可以选择序列化提供者和传输提供者。 那就完美了。 |
|
返回顶楼 | |
发表时间:2010-11-29
yanwt 写道 支持兄弟,hessian确实是个好东西,一直在结合spring用的,非常简单。
谢谢支持 |
|
返回顶楼 | |
发表时间:2010-11-29
zhou_zhihao 写道 org.apache.asyncweb.common.DefaultHttpResponse;
asynweb没有在依赖包里... 我把它的codec拿出来,放在一个src folder里面了。你再捡一下代码,呵呵。 |
|
返回顶楼 | |
发表时间:2010-11-29
caoyangx 写道 等你的好消息
谢谢,对HTTP的支持也快要完成了。 |
|
返回顶楼 | |