大家都知道,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服务则即可以是同步的也可以是异步的。
一、bbossgroups RPC bbossgroups RPC 是基于bbossaop的轻量级rpc框架。bbossgroups提供的RPC框架是bboss aop子项目中一个子模块,具有以下特点: 1.支持多种通讯协议jms,jgroups,mina,webservice,restful,并且协议可扩展 2.提供强有力的安全管理插件(可插拔的认证、鉴权、数据包加/解密插件),保证远程通讯
在使用Missian时,spring是可选的,但是作者本人强烈推荐和Spring配合使用。Spring是一个伟大的项目,并且它不会对程序在运行时的效率带来任何损耗。 Missian在服务器端依赖与Mina,Missian只是提供一个Codec(协议编码解码,兼容TCP和HTTP)和一个Handler(调用Hessian序列化机制来反序列化数据、使用BeanLocator来定位这次调用的Bean
相关简介 Hessian是一个新型的RPC框架。它的调用是同步的,只能基于HTTP传输。 相关功能 1、实现异步的RPC调用。同步远程操作带来的损耗有时候是无法忍受的。异步操作要复杂一些,但是能够提高系统的并发能力和响应时间。 2、让 hessian可以在tcp上传输。HTTP是构建在tcp之上的 应用层协议,本身是比较复杂的,对HTTP编码解码的过程也无疑是一个性能损耗。如果把HTTP这一层去掉
missian是什么 hessian(hessian over mina)是一个基于HTTP的优秀的、高效的RPC框架,而missian可以理解为:基于mina对hessian进行扩展,使之: 1、具备异步RPC能力,但同时也提供了同步的客户端,和hessian完全兼容 2、能够在TCP之上传输,省掉了HTTP编码解码的过程,但是同事也支持HTTP协议,意味着hessian客户端也是可以调用m
missian是什么 hessian是一个基于HTTP的优秀的、高效的RPC框架,而missian可以理解为:基于mina对hessian进行扩展,使之: 1、具备异步RPC能力,但同时也提供了同步的客户端,和hessian完全兼容 2、能够在TCP之上传输,省掉了HTTP编码解码的过程,但是同事也支持HTTP协议,意味着hessian客户端也是可以调用missian服务的。 missia
Create server with spring. Introduction Create missian server with spring Details Step 1:Create an spring context configuration file <?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.spri
同步客户端比较简单,它具备以下能力: 1、同步调用Missian服务(通过HTTP或TCP均可) 2、同步调用Hessian服务 3、使用短连接。作者本人的经验是,在网络通信时,使用短连接比较简单,在一个机柜或者机房内的通信,可以考虑短连接。 4、使用连接池,保持长连接。 我们先来看看Missian的同步客户端是怎么工作的。 步骤一:创建SyncMissianProxyFactory
Missian同时支持HTTP/TCP,也同时支持同步和异步。 一、同步+HTTP时的协议 这时和Hessian的协议一致。即采用POST发送数据,整个数据包(除了HTTP协议头外的数据)会交给Hessian的序列化机制来编码和解码。请求和响应中都支持chunk,编码解码过程中已经兼容。 二、异步+HTTP时的协议 其实和同步请求的协议相比,只是在HTTP Header中加了一些自动以的协
原文:http://missian.iteye.com/blog/827402 项目地址:http://code.google.com/p/missian/ 目前代码注释还不够,但是提供的几个例子基本上说明了missian的用法。 更新:已支持HTTP,和hessian已经完全兼容。missian的stub可以调用hessian服务,hessian的stub也可以调用missian的服务。简介见这
最近在看一些关于如何编写一些自己的高性能高可扩展的网络程序,如何借鉴mina、netty、webbit等优秀的开源作品,在了解这些之前,如果对此有一个比较直观的认识,或者说一些可运行的DEMO,我相信会事半功倍。学习当中发现下面这两个作品有很多可以借鉴的地方,这个网络框架也是Iteye的一个博主的作品,详见 http://missian.iteye.com/,还有一个很相似的框架:http:/
Missian已经发布了第四个小版本:0.31版本,正在加紧性能测试,1.0正式版前发布在望了。 更新历史 0.31 主要更新 1、原异步方式增加对重载方法的支持 2、支持从方法中在最后一个参数传入Callback 3、添加一个Future风格的异步方式。 具体使用方式参见:Missian异步客户端指南 0.30 主要更新: 1. 异步回调方式更新:以前是每个方法需要实现一个回调类,回
重要:Missian刚刚更新到0.30,修改了异步回调的实现方式,现在基本上做到0侵入性。 建议下载0.30版本使用,调过本章,直接参考: Missian指南6:使用无侵入性的异步客户端(Missian 0.30 With Spring) =================================================================== Missian没有绑定s
我的应用程序有许多RPC调用,它们都有一个.onFailure(可抛出捕获)方法。我有一个在客户端和服务器代码之间共享的类 不记录在例外中。如果用户没有基于会话/cookie/权限等的相关权限,则由服务器抛出。 理想情况下,我希望在将其他异常传递给.onFailure()代码之前,在一个地方处理此异常,因为此处理是如此普遍,而且出于安全考虑,需要如此。有一个GWT。setUncaughtExcep
问题内容: 我有ajax请求执行3个任务: 保存模型(数据库) 发电子邮件 提供成功或失败的消息。 因为此任务需要太多时间。用户可以等待长达20秒的响应(成功或失败的消息)。并且,如果用户关闭浏览器,则它停止在该用户当前处理的操作之一中。 这是糟糕的用户体验。 我希望用户将其数据提交给我的控制器,然后他将收到“成功或失败的消息”。并且该过程将完全在服务器端,并且它应该支持多个会话。 我怎样才能做到
EasySwoole支持在定时器、控制器处理中等多处位置使用异步进程。 CoreSwooleAsyncTaskManager是对Swoole Task的封装实现。 AbstractAsyncTask CoreAbstractInterfaceAbstractAsyncTask 定义了异步任务的接口实现,一个异步任务对象都应当基础AbstractAsyncTask。 class Task exten
这是我的代码: 但是当我从控制器调用函数时。它显示错误 在上一个异步操作完成之前,在此上下文上启动了第二个操作。使用“await”确保在该上下文上调用另一个方法之前已完成任何异步操作。任何实例成员都不能保证线程安全。 请帮我解决这个问题。
随着分布式技术和微服务思想流行,技术公司逐步将服务拆分为独立运行的小模块,提高系统整体的健壮性,加快特性的演进速度。微服务通过定义完善的接口进行交互,解耦系统、敏捷迭代、方便服务治理。RPC是目前微服务最广泛的通信方式。然而,众多团队各自研发具备服务治理功能的RPC通信框架,一方面增加开发成本,消耗人力重复造轮子;另一方面不同序列化协议的RPC服务,无法互相通信,影响可用性。因此,通用的RPC通信
对服务开发者, MTransport 屏蔽了底层网络通信细节,从而更专注于业务自身逻辑实现。支持不同语言版本的代码实现, 保持通信协议的一致性,支持服务注册、服务发现、异步通信、负载均衡等丰富的服务治理功能。