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(不含第一个斜杠)
分享到:
相关推荐
弥赛亚(Missian)是一个基于Java开发的远程过程调用(RPC)框架,它以无模式风格设计,旨在提供轻量级、高效且易于使用的跨进程通信解决方案。在了解这个框架之前,我们首先需要理解RPC的基本概念。RPC允许一个程序...
6. **Missian ActiveMQ-JMS简单实例**:这可能是一个具体的项目实例,它展示了如何在Spring应用中使用ActiveMQ实现异步RPC(远程过程调用)。在这种模式下,一个服务通过消息将请求发送到队列,另一端的服务监听队列...
WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在若依框架中集成WebSocket,可以为用户带来更流畅、即时的交互体验,尤其适用于需要实时更新数据的应用场景,如聊天室、股票交易、在线游戏等。
适用于练习各种服务部署和自己玩哈哈哈
ppt翻页不方便?我的程序完美解决触摸屏翻页功能! 屏幕两边置顶显示窗口,通过按下键盘↑↓键翻页,同时添加标注、橡皮、清屏功能,可以一键放映或退出放映 程序解说:https://blog.csdn.net/weixin_69784410/article/details/145038617
一个支持Modbus RTU和Modbus TCP报文解析,且能处理主站和从站两个方向的数据,并解析bool型、整数、浮点数等多种数据类型的工具,对于开发人员和运维人员来说是非常有帮助的。下面是一个概述和简要指南,帮助你了解如何开发或使用这样的工具。 支持的协议: Modbus RTU(串行通信) Modbus TCP(以太网通信) 报文解析: 主站发送和接收的报文 从站发送和接收的报文 数据类型解析: bool型(位) 整数(如16位、32位等) 浮点数(如32位IEEE 754浮点数) 用户界面: 图形用户界面(GUI),便于操作 可视化展示报文结构 原始报文和解析后数据的对比显示
44e82cfa75fa0244b3037221d2eb830d.zip
内容概要 本资源提供了一个完整的 Flappy Bird 游戏开发项目,并结合强化学习算法(Q-Learning)实现了一个自动玩 Flappy Bird 的 AI。项目包括以下内容: 游戏开发:基于 Pygame 的 Flappy Bird 游戏实现,包含小鸟、管道、背景、音效等元素。 强化学习算法:使用 Q-Learning 算法训练 AI,使其能够自动玩 Flappy Bird。 代码与资源:完整的 Python 代码、游戏图片、音效资源。 适用人群 游戏开发爱好者:对 Pygame 游戏开发感兴趣的开发者。 强化学习初学者:希望学习并实践 Q-Learning 算法的学生或开发者。 AI 爱好者:对游戏 AI 实现感兴趣的开发者。 使用场景及目标 学习 Pygame 游戏开发:通过本项目,可以学习如何使用 Pygame 开发一个简单的 2D 游戏。 实践强化学习算法:通过实现 Q-Learning 算法,理解强化学习的基本原理和应用。 训练游戏 AI:通过训练 AI,使其能够自动玩 Flappy Bird,并不断提升其表现。
GEC6818 交叉编译curl
关于做好2025届本科毕业设计(论文)工作的通知 各学院(系):我校2025届本科生毕业设计(论文)工作即将开始,根据《长安大学本科毕业论文(设计)工作管理办法(试行)》(长大教[2023]19号)(以下简称《管理办法》),为确保毕业设计(论文)质量,现将相关准备工作安排如下:一、组织工作1.组织领导。毕业设计(论文)工作是高校人才培养质量的重要环节,各学院(系)要切实加强对毕业设计(论文)工作的领导,成立专门领导小组或安排专人检查、管理毕业设计(论文)工作。认真执行“管理办法”,鼓励学生真题真做或通过科技竞赛、创新训练和创新性实验完成毕业设计(论文)工作。2.指导教师。毕业设计(论文)指导教师须按照“管理办法”中“指导教师资格与要求”规定遴选,由具有中级及以上职称的教师或工程技术人员担任。3.学生要求。学院对参加毕业设计(论文)的学生需按“管理办法”中“学生资格及要求”进行资格审核。4.师生比要求。为确保毕业设计(论文)的质量,充分发挥指导教师作用,每名指导教师所带毕业设计(论文)学生一般不得超过8人,首次指导的教师指导学生数不得超过3人。2024年校级抽检不合格的毕业设计(论文)指
鸢尾花数据集的特征变换是指对原始数据集中的特征进行一系列的处理和转换,以适应机器学习模型的输入要求。该数据集原本包含四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度,这些特征都是数值型的,且以厘米为单位。然而,在实际应用中,原始特征可能无法满足模型的特定需求,因此需要进行特征变换。特征变换可以包括数据规范化、标准化、归一化等操作,旨在消除不同特征之间的量纲差异,提高模型的收敛速度和性能。通过特征变换,可以使数据更加适合机器学习算法的处理,从而提高模型的准确性和稳定性。 在鸢尾花数据集中,特征变换还可以涉及特征选择、特征提取或构造等高级操作。特征选择是根据相关性和重要性筛选出最有价值的特征,以减少模型的复杂度并提高泛化能力。特征提取则是通过统计分析、降维技术(如PCA)等方式生成新的特征,这些新特征能够更全面地反映数据的内在结构和信息。特征构造则是通过特征交叉、组合等方式生成新的特征,以增加模型的表达能力。这些高级的特征变换操作可以进一步提升机器学习模型的性能,使其能够更好地处理复杂的分类任务。在鸢尾花数据集的案例中,虽然原始特征已经足够描述样本,但在实际应用中,特征变
STM32 Foc开源算法,包括观测器和Foc method STM32F0系列FOC 源代码, 有单电阻采样和三电阻采样两种代码。 都是ST很经典算法,代码学习,无感算法观测器是开源代码,Foc method也是开源,不是库。
广州大学人工智能原理实验(三)代码包
ArcEngine二次开发的专题图自动生成系统(含源码+说明文档+设计报告等全部资料).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!