`
gh_aiyz
  • 浏览: 39532 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

分享一个项目missian(hessian over mina)

阅读更多
项目地址:http://code.google.com/p/missian/ 目前代码注释还不够,但是提供的几个例子基本上说明了missian的用法。

更新:已支持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服务则即可以是同步的也可以是异步的。
分享到:
评论
20 楼 hylxinlang 2013-10-29  
我觉得还可以把js引擎加入进去
19 楼 gh_aiyz 2010-11-30  
50万真是一个惊人的数字,长见识了。回头我就拿下来试试。

tomcat我了解不深,不好发表意见,不过1500就到极限,我猜想是不是还是用的阻塞的方式啊。
18 楼 nid007 2010-11-30  
最近看到 国外的 Urban Airship 公司的工程师在其官方网志上发文章介绍他们在产品环境中做到 50 万并发客户端,Java + Pure NIO 的实现 http://blog.urbanairship.com/blog/2010/08/24/c500k-in-action-at-urban-airship/

可是我每次做 tomcat的压力测试,1500基本就极限了。。
17 楼 gh_aiyz 2010-11-30  
绝对不止1000+。并发连接数至少达到万级别,有一个开源项目用mina开发的connection-keeper,据说达到50000个连接左右。我没有尝试过这么多连接数。

mina的处理能力更不用怀疑,配好线程池和IO线程数,轻松上到3万次每秒以上。我目前有一个应用,在缓存集中率为0的情况下,单机(4核x2)的tps仍然达到12000次。

据说mina的作者另一个项目netty性能更高,我也大致浏览了一下netty的代码,基本思想是完全一致的,使用起来也比较相似,而且测试发现性能貌似却有一定的提升,几个百分点的样子,但还不足以让我放弃久经考验的mina。
16 楼 stormmxj 2010-11-30  
以前做的一个项目大概1000+吧
15 楼 nid007 2010-11-30  
楼主有没有做过性能测试?不知道 mina写的TCP服务器 最多 能同时处理多少连接
14 楼 gh_aiyz 2010-11-30  
非常高兴的宣布:
missian已经支持HTTP方式了。
有兴趣加入的朋友,需要申请一个google帐号,我到时候再开放权限给你们。

另外,项目的wike中有几个简单的教程(其实就是根据例子写的),大家可以看一看。

关于missian http的介绍,请看我另外一篇文章。
13 楼 gh_aiyz 2010-11-30  
jackchen_2008 写道
使用并关注mina有一段时间,想实现同时支持c/s和b/s的这种框架

missian会在同一端口兼容tcp和http,不知道是不是符合你的要求,呵呵
12 楼 jackchen_2008 2010-11-30  
使用并关注mina有一段时间,想实现同时支持c/s和b/s的这种框架
11 楼 gh_aiyz 2010-11-29  
eyes1842 写道
RPC的两个最关键的地方:
1、报文序列化
2、数据传输

关于报文序列化,hessian 确实比java的好。
关于的数据传输,现在流行的nio框架性能都不错。

希望楼主能抽象成接口,提供序列化接口和传输接口,
使用的时候,可以选择序列化提供者和传输提供者。

那就完美了。

兄弟说的不错。
不过Hessian序列化的部分其实已经抽象得较好了,具体客户端看一下HessianProxy,服务器端看一下HessianSkeleton就一目了然了。
10 楼 gh_aiyz 2010-11-29  
asialee 写道
好的,我想加入一下。 其实hessian我在很早就注意这个开源项目了, 它的RPC的调用效率很高,而且比较简单,要是能分享一下开发的文档,或者其他的东西,就好了,我想先研究一下lz的代码。

我正在完成HTTP部分的支持,到时候就可以用hessian调用missian的服务,也可以用missian异步调用hessian的服务了。
文档逐渐补充,也希望你也加入一起完善:)
9 楼 gh_aiyz 2010-11-29  
caoyangx 写道
等你的好消息

谢谢,对HTTP的支持也快要完成了。
8 楼 gh_aiyz 2010-11-29  
zhou_zhihao 写道
org.apache.asyncweb.common.DefaultHttpResponse;
asynweb没有在依赖包里...

我把它的codec拿出来,放在一个src folder里面了。你再捡一下代码,呵呵。
7 楼 gh_aiyz 2010-11-29  
yanwt 写道
支持兄弟,hessian确实是个好东西,一直在结合spring用的,非常简单。

谢谢支持
6 楼 eyes1842 2010-11-29  
RPC的两个最关键的地方:
1、报文序列化
2、数据传输

关于报文序列化,hessian 确实比java的好。
关于的数据传输,现在流行的nio框架性能都不错。

希望楼主能抽象成接口,提供序列化接口和传输接口,
使用的时候,可以选择序列化提供者和传输提供者。

那就完美了。
5 楼 asialee 2010-11-29  
好的,我想加入一下。 其实hessian我在很早就注意这个开源项目了, 它的RPC的调用效率很高,而且比较简单,要是能分享一下开发的文档,或者其他的东西,就好了,我想先研究一下lz的代码。
4 楼 caoyangx 2010-11-29  
等你的好消息
3 楼 zhou_zhihao 2010-11-29  
org.apache.asyncweb.common.DefaultHttpResponse;
asynweb没有在依赖包里...
2 楼 yanwt 2010-11-29  
支持兄弟,hessian确实是个好东西,一直在结合spring用的,非常简单。
1 楼 gh_aiyz 2010-11-28  
希望有兄弟加入一起完善这个项目。尤其是英语好的兄弟,可以来完善英文文档和注释

相关推荐

    missian:一个java RPC框架,无模式风格

    弥赛亚 一个java RPC框架,无模式风格

    Spring集成ActiveMQ配置

    Spring 集 成ActiveMQ 配置 异步RPC框架 Missian ActiveMq-JMS简单实例使用tomcat

    setuptools-33.1.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    超级简单的地图操作工具开发可疑应急,地图画点,画线,画区域,获取地图经纬度等

    解压密码:10086007 参考:https://blog.csdn.net/qq_38567039/article/details/138872298?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22138872298%22%2C%22source%22%3A%22qq_38567039%22%7D 获取地图经纬度等 超级简单的地图操作工具开发可疑应急,echars的地图画点,画线,画区域 <script type="text/javascript" src="echarts.min.js"></script> Uncomment this line if you want to use map <script type="text/javascript" src="china.js"></script> <script type="text/javascript" src="world.js"></script>

    java进销存管理系统(jsp+mssql).zip

    java进销存管理系统(jsp+mssql)

    launcher (1).apk

    launcher (1).apk

    setuptools-38.4.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    setuptools-9.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    setuptools-18.2-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    spyglass/lint/cdc user guide

    spyglass 做cdc、lint、power分析的Userguide,包含 1、spyglass cdc、lint、power分析使用流程; 2、spyglass cdc、lint、power分析的规则、methodology、goal等介绍 3、SpyGlass_Explorer_UserGuide、SpyGlass_LintRules_Reference、SpyGlass_LowPowerRules_Reference、SpyGlass_ClockResetRules_Reference、SpyGlass_ConstraintsRules_Reference、SpyGlass_AreaRules_Reference等

    setuptools-18.3-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    setuptools-36.6.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    UrlRewriter Java v2.0 RC1_urlrewriter.zip

    UrlRewriter Java v2.0 RC1_urlrewriter

    setuptools-17.1.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    setuptools-25.2.0.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    setuptools-24.3.1.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于数字化转型战略的企业数据治理方法设计思路qytp.pptx

    基于数字化转型战略的企业数据治理方法设计思路qytp.pptx

    基于lstm+flask实现股票价格预测系统源码+模型+数据.zip

    基于lstm+flask实现股票价格预测系统源码+模型+数据.zip基于lstm+flask实现股票价格预测系统源码+模型+数据.zip基于lstm+flask实现股票价格预测系统源码+模型+数据.zip基于lstm+flask实现股票价格预测系统源码+模型+数据.zip基于lstm+flask实现股票价格预测系统源码+模型+数据.zip基于lstm+flask实现股票价格预测系统源码+模型+数据.zip基于lstm+flask实现股票价格预测系统源码+模型+数据.zip

    setuptools-41.3.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于SSM+jsp的家居商城系统

    大学生毕业设计、大学生课程设计作业

Global site tag (gtag.js) - Google Analytics