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

Missian指南一:通信协议

阅读更多

Missian同时支持HTTP/TCP,也同时支持同步和异步。

 

一、同步+HTTP时的协议

这时和Hessian的协议一致。即采用POST发送数据,整个数据包(除了HTTP协议头外的数据)会交给Hessian的序列化机制来编码和解码。请求和响应中都支持chunk,编码解码过程中已经兼容。

 

二、异步+HTTP时的协议

其实和同步请求的协议相比,只是在HTTP Header中加了一些自动以的协议头。

 

1、请求

 

在HTTP头中加了一个自定义的Header:Missian-Async: true

服务器接收到这个请求之后,会将这个请求当作异步请求来处理

 

2、响应

 

在HTTP头中加了以下几个自定义的Header:

Missian-Async: true

Missian-Bean: beanName

Missian-Method: methodName

 

beanName和methodName是异步的关键,missian根据这两个去寻找回调对象(Callback)。

 

注意beanName是从请求的URL中获取的,比如http://missian.com:8080/abc/hello这个url,missian会将“abc/hello”作为beanName。这个是Hessian中没有的概念。

 

methodName是进行调用的方法名,Hessian是分装在比较底层的,为了取到这个methodName,不得已改了一点Hessian的代码。

 

三、同步+TCP时的协议

 

1、不定长数据格式

比如beanName、methodName、消息体,它们的长度不是固定的,因此在传输它们之前用4个字节表示他们的长度。其实对于beanName和methodName,可能用一个字节就足够表示了,但为了扩展性,也不省这么几个字节了。


2、字符串编码格式

在真个协议头的编码过程中都使用ASCII编码。

 

3、请求

 

|<---1字节------>|<---4+n字节--->| <--4+n字节-------->|

| 异步/同步标志位 |   beanName    |  body                    |

 

注意首字节是一个标志位,接着传了一个beanName(由4个字节的长度和其真正的内容组成),接下来就是Body极其长度了:长度用于方便missian去读取足够的数据,而body读取完成之后将会交给Hessian去处理,这个和基于HTTP时POST过来的数据是完全一样的。

 

4、响应

|<---1字节------>|<---4+n字节--->| 

| 异步/同步标志位 |   body             |

 

首字节是一个同步异步的标志位。接下来是内容极其长度。

 

四、异步+TCP时的协议

 

1、请求

 

|<---1字节------>|<---4+n字节--->| <--4+n字节-------->|

| 异步/同步标志位 |   beanName    |  body                    |

 

注 意首字节是一个标志位,接着传了一个beanName(由4个字节的长度和其真正的内容组成),接下来就是Body极其长度了:长度用于方便 missian去读取足够的数据,而body读取完成之后将会交给Hessian去处理,这个和基于HTTP时POST过来的数据是完全一样的。

 

2、响应

|<---1字节------>|<---4+n字节--->|<---4+n字节--->| <--4+n字节-------->|

| 异步/同步标志位 |   beanName    |   methodName|  body                    |

 

首字节是一个同步异步的标志位。接下来是beanName和methodName,和HTTP中一样,这两个是实现异步回调的关键。body和同步操作中时是一模一样的。

 

五、URL格式说明

AsyncMissianProxyFactory和SyncMissianProxyFactory在创建Stub时,接受的参数格式和Hessian是一样的:一个接口(将为这个接口创建代理类)和一个URL(用于表明将数据用何种方式发给那个服务器)。

 

Missian接受两种协议的URL:

1、HTTP协议:例如,http://abc.com:8080/abc,http://abc.com:8080/abc/a,http://abc.com/abc

2、TCP协议:例如,tcp://abc.com:8080/abc,tcp://abc.com:8080/abc/a,tcp://abc.com/abc

 

一个URL由4部分组成:协议、服务器地址、端口和BeanName组成。

协议 :只能是http或者tcp,其它字符串不能接受,会抛出异常

服务器地址 :域名和IP都可以使用

端口 :和服务器地址之间用冒号分割,端口可以使用缺省值80(在missian中,http和tcp都是使用80作为默认端口)。

beanName :在服务器地址和端口之后紧跟了一个'/',这个'/'之后的全部字符串在messian中被称为beanName(不含第一个斜杠)

1
0
分享到:
评论
1 楼 zhangchen 2012-04-07  
原来是老丁的大作,支持下!

相关推荐

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

    弥赛亚(Missian)是一个基于Java开发的远程过程调用(RPC)框架,它以无模式风格设计,旨在提供轻量级、高效且易于使用的跨进程通信解决方案。在了解这个框架之前,我们首先需要理解RPC的基本概念。RPC允许一个程序...

    Spring集成ActiveMQ配置

    6. **Missian ActiveMQ-JMS简单实例**:这可能是一个具体的项目实例,它展示了如何在Spring应用中使用ActiveMQ实现异步RPC(远程过程调用)。在这种模式下,一个服务通过消息将请求发送到队列,另一端的服务监听队列...

    多进制计算器WB程序ZQ.zip

    多进制计算器WB程序ZQ

    calico.yaml

    calico.yaml

    使用光束法平差通过交互式点测量进行多图像交集Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    expat-static-2.1.0-15.el7-9.x64-86.rpm.tar.gz

    1、文件内容:expat-static-2.1.0-15.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/expat-static-2.1.0-15.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    fence-agents-rsb-4.2.1-41.el7-9.6.x64-86.rpm.tar.gz

    1、文件内容:fence-agents-rsb-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-rsb-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    基于java+ssm+mysql的搬家预约系统 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    dotconf-1.3-8.el7.x64-86.rpm.tar.gz

    1、文件内容:dotconf-1.3-8.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/dotconf-1.3-8.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    软件开发阶段成本分布研究.pdf

    软件开发阶段成本分布研究.pdf

    dnssec-trigger-0.11-22.el7.x64-86.rpm.tar.gz

    1、文件内容:dnssec-trigger-0.11-22.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/dnssec-trigger-0.11-22.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    基于java+ssm+mysql的新闻类网站 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    dlm-4.0.7-1.el7.x64-86.rpm.tar.gz

    1、文件内容:dlm-4.0.7-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/dlm-4.0.7-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    evolution-devel-docs-3.28.5-10.el7.x64-86.rpm.tar.gz

    1、文件内容:evolution-devel-docs-3.28.5-10.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/evolution-devel-docs-3.28.5-10.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    网易云音乐梁静茹歌曲爬虫程序代码.txt

    网易云音乐梁静茹歌曲爬虫程序代码

    vb6.0版本记事本代码.txt

    vb6.0版本记事本代码

    msodemo.zip

    msodemo

    exempi-devel-2.2.0-9.el7.x64-86.rpm.tar.gz

    1、文件内容:exempi-devel-2.2.0-9.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/exempi-devel-2.2.0-9.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    VS2010旗舰版的VB.NET版本录音程序代码.txt

    VS2010旗舰版的VB.NET版本录音程序代码

    fedfs-utils-admin-0.10.5-0.el7.x64-86.rpm.tar.gz

    1、文件内容:fedfs-utils-admin-0.10.5-0.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fedfs-utils-admin-0.10.5-0.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

Global site tag (gtag.js) - Google Analytics