`
gh_aiyz
  • 浏览: 39639 次
  • 性别: 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

    ssm框架设备故障报修管理系统微信小程序源码+项目说明(高分毕设)

    毕业设计ssm框架设备故障报修管理系统微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架设备故障报修管理系统微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架设备故障报修管理系统微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是基于微信的设备故障报修管理系统,旨在改善传统管理方式的不足。系统涉及管理员、用户和维修员三个角色,管理员可进行用户、维修员、实验室等多方面管理,而用户和维修员可通过微信小程序注册登录,分别进行报修、查看维修状态和交流经验。系统采用Java的SSM框架开发后端,

    开车不犯困100首MP3,之41-50,DJ.rar

    开车不犯困100首MP3,之41-50,DJ.rar

    ssm框架外籍人员管理系统微信小程序源码+项目说明(高分毕设)

    毕业设计ssm框架外籍人员管理系统微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架外籍人员管理系统微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架外籍人员管理系统微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一个基于微信小程序的外来人员管理系统,旨在方便用户管理和查看个人中心、外籍人员信息及派出所信息。系统设计注重功能与界面的融合,支持派出所在线审核外籍人员信息。开发采用成熟技术,如微信开发者工具和JAVA SSM框架,结合源代码进行功能调整,以满足实际管理需求。该系统对外来

    光大证券-20180309-放量恰是入市时:成交量择时初探-技术择时系列报告之三

    光大证券-20180309-放量恰是入市时:成交量择时初探——技术择时系列报告之三 深度学习 多因子模型 quant 股市 股票 量化交易 量化策略

    六个盒子及其应用.pptx

    六个盒子及其应用.pptx

    yolov10改进.docx

    YOLOv10是由清华大学的研究人员基于Ultralytics Python包开发的实时端到端目标检测模型。它引入了一种新的无NMS(非极大值抑制)训练方法,通过一致的双重任务分配来提高推理效率,并在保持竞争性能的同时减少延迟。 YOLOv10的主要改进包括: 无NMS训练:通过一致的双重任务分配,YOLOv10在训练过程中避免了NMS的使用,这有助于提高模型的推理速度。 效率-精度驱动模型设计:YOLOv10采用了一种新的模型设计策略,从效率和精度两个角度对YOLO组件进行优化,减少了计算开销并提高了性能。 轻量级分类头和空间-通道分离下采样:YOLOv10通过简化架构和减少计算成本来提高效率。 部分自注意力(PSA)模块:YOLOv10引入了PSA模块来增强模型的全局表示学习能力,同时控制计算复杂度。 实验结果:YOLOv10在不同模型尺寸上实现了最先进的性能和端到端延迟,例如YOLOv10-S在COCO数据集上与RT-DETR-R18相比,在相似的平均精度下速度快1.8倍,同时参数和浮点运算次数更少。 YOLOv10的这些创新使其在实时目标检测领域具有显著的优势,特别是在需要

    项目机械化工程公司 龙门吊大修环境因素及其控制措施一览表.docx

    项目机械化工程公司 龙门吊大修环境因素及其控制措施一览表.docx

    京东大学的互联网思维.pptx

    京东大学的互联网思维.pptx

    【课件】《华为灰度管理法》.docx

    【课件】《华为灰度管理法》.docx

    【mysql开发】教程&案例&相关项目资源.docx

    当涉及学习MySQL开发时,有许多优质的教程、案例和相关项目资源可供您使用。以下是一些您可能会发现有用的资源: 1. MySQL开发教程: MySQL官方文档:MySQL官方网站提供了全面的MySQL参考手册和开发指南,包括安装、配置、SQL语法、存储引擎等方面的详细信息。 W3Schools MySQL教程:W3Schools提供了简洁清晰的MySQL教程,适合初学者快速入门。 Coursera《数据管理和分析》:由Duke大学开设的课程,涵盖了数据库管理和数据分析的基本原理,其中也包含MySQL的相关内容。 2. MySQL开发案例和示例: GitHub:在GitHub上搜索MySQL相关的示例项目,如基于MySQL的Web应用程序、数据分析项目等,可以从中学习实际的应用案例。 MySQL官方示例数据库:MySQL官方提供了一些示例数据库,如经典的employees和world数据库,可以用来进行实际的查询和练习。 3. 相关项目资源: MySQL官方网站:提供了MySQL数据库服务器、客户端工具和连接器的下载,以及最新的更新和公告。 Stack Overflow:一个问题与回答

    基于Springboot+Vue的校园二手图书交易平台的设计与实现源码+数据库(高分毕设)

    基于Springboot+Vue的校园二手图书交易平台的设计与实现源码+数据库(高分毕设)含有代码注释、使用文档说明,新手也可看懂,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于Springboot+Vue的校园二手图书交易平台的设计与实现源码+数据库(高分毕设)含有代码注释、使用文档说明,新手也可看懂,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于Springboot+Vue的校园二手图书交易平台的设计与实现源码+数据库(高分毕设)含有代码注释、使用文档说明,新手也可看懂,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单。

    在线考试系统设计与实现程序+数据库

    在线考试系统设计与实现程序+数据库

    基于java+html实现的虚拟宠物医院学习系统(包含角色扮演,学习,答题等)+源码+用户手册+项目解析PPT+界面展示

    基于java+html实现的虚拟宠物医院学习系统(包含角色扮演,学习,答题等)+源码+用户手册+项目解析PPT+界面展示,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 虚拟宠物医院学习系统 含医院2D/3D导览、 点击具体的科室,右侧展示该科室的具体信息 界面右侧展示该科室中的设备信息和药品信息 3D导览 具体的一个科室,右侧为该科室的简单文字介绍 总共有12个科室可以进行3D浏览 医院角色扮演: 可以选择医助、前台、医生三个角色中的任意一个角色进行角色扮演 进入具体一个角色的角色扮演界面,左侧是该角色的多个操作流程,每个操作流程下有多个具体的操作步骤 病例学习: 进入病例学习模块,选择特定病例种类,查看该疾病种类下的病例信息 点击具体的病例查看按钮进入病例详情页。该界面包括左侧的4个步骤(接诊、病例检查、诊断结果、治疗方案),每个步骤中包括文字简介、视频信息、图片信息等 测试答题: 选择题目类别和考题数量进行考题的获取 获取到考题 答题完成,获得答题分数 查看个人答题记录

    ASP具有动态口令认证机制的网上投票系统的设计(源代码+论文)【ASP】.zip

    ASP具有动态口令认证机制的网上投票系统的设计(源代码+论文)【ASP】

    4月全新热文高科技,套用模板一键生成热文,没脑子拷贝,第二天出盈利,….txt

    4月全新热文高科技,套用模板一键生成热文,没脑子拷贝,第二天出盈利,…

    Java 培训和安置管理系统项目源码(可做毕设参考)

    Java 培训和安置管理系统项目是一个基于 Java 编程语言开发的桌面应用程序,旨在为学生提供实习和就业机会。该系统通过提供结构和工具集,使公司能够有效地管理培训和安置过程。 系统特点 课程入学:学生可以注册培训课程。 企业入驻:企业可以注册并提供实习和就业机会。 学生管理:包括个人资料输入、培训记录和安置记录。 报告生成:生成学生培训和安置的报告。 用户管理:支持新用户注册和更改密码功能。 模块介绍 课程入学模块:学生可以查看并注册可用的培训课程。 企业入驻模块:企业可以注册并发布实习和就业机会。 学生管理模块:学生可以输入和更新个人资料,查看培训和安置记录。 报告生成模块:管理员可以生成和查看学生的培训和安置报告。 用户管理模块:支持新用户注册、登录和更改密码功能。 Java 培训和安置管理系统完全使用 Java 和 MySQL 构建,并具有功能齐全的图形用户界面 (GUI)。该系统展示了如何使用 Java 开发一个完整的桌面应用程序,并通过实践提高我们的编程技能和逻辑思维能力。可以作为毕业设计项目参考

    ASP NET 图书馆管理系统源代码(毕设参考)

    ASP.NET中的在线图书馆管理系统项目是一个Web应用程序,使用C#和ASP.NET开发,后端依托于SQL Server数据库。这个系统旨在帮助图书馆自动化常规操作,例如管理图书库存、处理图书发行和归还、追踪学生信息以及管理逾期还书的罚款。 项目概览 项目名称:ASP.NET 图书馆管理系统项目 开发环境:使用C#语言的ASP.NET Visual Studio 2022 数据库:SQL Server 2021 项目类型:网站应用程序 该项目特别适合工程、计算机科学、信息技术以及计算机应用专业的高年级学生。 主要功能和模块 图书管理员功能: 添加出版物和书库信息 管理图书分枝 添加学生记录 发行和归还图书 实施逾期罚款 学生功能: 查看借阅记录 检查罚款状况 管理个人账户 整个系统的实施有助于提高管理效率,确保图书馆资源的有效利用,并使图书馆的日常工作流程自动化,在提高工作效率的同时也提升了服务质量。在安装和运行这个图书馆管理系统之前,请确保你的计算机上已安装Microsoft Visual Studio和SQL Server。

    基于Springboot+Vue的图书馆管理系统源码+数据库(高分毕设)

    基于Springboot+Vue的图书馆管理系统源码+数据库(高分毕设)含有代码注释,新手也可看懂,98分毕业设计项目,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用,该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于Springboot+Vue的图书馆管理系统源码+数据库(高分毕设)含有代码注释,新手也可看懂,98分毕业设计项目,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用,该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于Springboot+Vue的图书馆管理系统源码+数据库(高分毕设)含有代码注释,新手也可看懂,98分毕业设计项目,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用,该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用

Global site tag (gtag.js) - Google Analytics