- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Dubbo的跨语言服务治理框架
Aliware DUBBO Brand Open source products
引言
➢ 跨语言SOA不是刚需,使用场景并不多;
➢ 跨语言特性实际是RPC层的支持,本质是协议层面的支持;
➢ 如果SOA框架支持跨语言的RPC和对应语言的客户端,实际上也就满足了业务层面的跨语言支持。
那此次分享的主要目的是什么?
目 录
1
2 Dubbo核心实现
3 跨语言SOA
1 再聊RPC
RPC结构
协议编解码
调用编码:
➢ 接口方法:接口名、方法名
➢ 方法参数:参数类型、参数值
➢ 调用属性:调用属性信息,例如调用附件隐式参数、调用超时时间等
返回编码:
➢ 接口结果:接口方法中定义的返回值
➢ 返回码:异常返回码
➢ 返回异常信息:调用异常信息
举个小栗子:
public interface{
public int test(String a);
}
概念上的 RPC
➢magic : 协议魔数,为解码设计
➢header size: 协议头长度,为扩展设计
➢version : 协议版本,为兼容设计 一 个 思 考 :
➢st : 消息体序列化类型
➢hb : 心跳消息标记,为长连接传输层心跳设计 Dubbo协议不跨语言
➢ow : 单向消息标记,
➢rp : 响应消息标记,不置位默认是请求消息 Thift协议跨语言
➢status code: 响应消息状态码
➢reserved : 为字节对齐保留 上面描述是否严谨
➢message id : 消息 id
➢body size : 消息体长度
绝大部分PRC框架都有自己的协议
2 Dubbo 核心
大家熟知的几大组件
没啥好说的,还是站在设计和实现层面分析下
一些核心功能(顺便吐槽下,开源版本的zk注册中心
和监控中心不具备大规模能力)
Dubbo协议
请 求 类 型 :
FLAG_REQUEST :消息请求类型为消息请求。
requstflag :高4位请求类型 FLAG_TWOWAY :消息请求类型为心跳。
serializationId :低4位标示序列化方式 FLAG_EVENT :消息请求类型为事件。
Response status :响应码 序 列 化 方 式 :
Request id :8个字节是请求id DubboSerialization:0001
Body length后面4个字节是body内容大小 FastJson
原创力文档


文档评论(0)