写点什么

Dubbo 框架学习笔记七

作者:风翱
  • 2021 年 12 月 20 日
  • 本文字数:797 字

    阅读完需:约 3 分钟

Dubbo 框架学习跨语言实现:HTTP 协议 + JSON-RPC。


目前互联网的技术栈百花齐放,很多公司会使用 Node.js、Python、Go 等语言来开发 一些 Web 端应用,同时又有很多服务会使用 Java 技术栈实现,这就出现了大量的跨语言调用的需求。Dubbo 作为一个 RPC 框架,自然也希望能实现这种跨语言的调用,目前 Dubbo 中使用“HTTP 协议 + JSON-RPC”的方式来达到这一目的,其中 HTTP 协议和 JSON 都是天然跨语言的标准,在各种语言中都有成熟的类库。


JSON-RPC

JSON-RPC 是基于 JSON 的跨语言远程调用协议。Dubbo 中的 dubbo-rpc-xml、dubbo-rpc-webservice 等模块支持的 XML-RPC、WebService 等协议与 JSON-RPC 一样,都是基于文本的协议,只不过 JSON 的格式比 XML、WebService 等格式更加简洁、紧凑。与 Dubbo 协议、Hessian 协议等二进制协议相比,JSON-RPC 更便于调试和实现,可见 JSON-RPC 协议还是一款非常优秀的远程调用协议。


在 Java 体系中,有很多成熟的 JSON-RPC 框架,例如 jsonrpc4j、jpoxy 等,其中,jsonrpc4j 本身体积小巧,使用方便,既可以独立使用,也可以与 Spring 无缝集合,非常适合基于 Spring 的项目。


JSON-RPC 协议中请求的基本格式:

{

"id":1,

"method":"getInfo",

"params":[]

}

JSON-RPC 请求中各个字段的含义:

  • id 字段,用于唯一标识一次远程调用。

  • method 字段,指定了调用的方法名。

  • params 数组,表示方法传入的参数,如果方法无参数传入,则传入空数组。


在 JSON-RPC 的服务端收到调用请求之后,会查找到相应的方法并进行调用,然后将方法的返回值整理成如下格式,返回给客户端:

{

"id":1,

"result":"Dubbo json-rpc",

"error":null

}


JSON-RPC 响应中各个字段的含义:

  • id 字段,用于唯一标识一次远程调用,该值与请求中的 id 字段值保持一致。

  • result 字段,记录了方法的返回值,若无返回值,则返回空;若调用错误,返回 null。

  • error 字段,表示调用发生异常时的异常信息,方法执行无异常时该字段为 null。


发布于: 39 分钟前阅读数: 4
用户头像

风翱

关注

还未添加个人签名 2017.11.24 加入

勇于尝试,持续成长

评论

发布
暂无评论
Dubbo框架学习笔记七