JSONRPC学习

1.JSON-RPC,是一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容透过 JSON 为主,相对于一般的HTTP请求通过URI调用远程服务器,JSON-RPC直接在内容中定义了要调用的函数名称(如 {“method”: “sum”}),对于开发者来说非常的方便。Bitcoin和Ethereum都支持JSON-RPC通过客户端直接调用节点上的函数或方法。

2.RPC架构

2.1服务端要做如下工作:

1)、服务端需要注册可以被远程访问的对象

2)、创建网络监听器,等待发过来的请求

3)、获取发送来的请求

4)、处理发送来的请求

2.2.客户端要做如下工作:

1)、创建连接

2)、创建客户端

3)、客户端通过连接向服务端发送请求

2.3常见的RPC框架

dubbo: 阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。
motan: 新浪微博开源的一个Java 框架。它诞生的比较晚,起于2013年,2016年5月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。
rpcx: Go语言生态圈的Dubbo,比Dubbo更轻量,实现了Dubbo的许多特性,借助于Go语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。
gRPC: Google开发的高性能、通用的开源RPC框架,主要面向移动应用开发并基于HTTP2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。
thrift: Apache的一个跨语言的高性能的服务框架

3.JSON-RPC请求
一个2.0的JSON-RPC的请求必须包含以下4个字段。

jsonrpc: 指定JSON-RPC的版本,必须设置为2.0
id: 调用标识符,用于标示一次远程调用过程,值必须包含一个字符串、数值。
method: 所要调用方法名称的字符串
params: 方法传入的参数,若无参数则传入空[]


4.JSON-RPC响应
当发起一个RPC调用时,除通知之外服务端都必须有响应,响应表示为一个JSON对象包含以下几个字段。

jsonrpc: 指定JSON-RPC的版本,固定为为2.0
id: 调用标识符,用于标示一次远程调用过程,值必须包含一个字符串、数值。
result: 如果调用成功则显示响应结果
error: 如果调用失败则显示错误的信息,error带有以下几个字段
code: 错误类型,必须为整数 【必须】
message: 错误的简单描述字,该描述应尽量简短 【必须】
data: 包含关于错误附加信息的基本类型或结构化类型 【可选】

5.JSON-RPC错误码

-32700: Parse error语法解析错误 (服务端接收到无效的json。该错误发送于服务器尝试解析json文本)
-32600: Invalid Request (发送的json不是一个有效的请求对象)
-32601: Method not found (该方法不存在或无效)
-32602: Invalid params (无效的方法参数)
-32603: Internal error (JSON-RPC内部错误)
-32000 ~ -32099: Server error (预留用于自定义的服务器错误)
-32768 ~ -32000: 保留的预定义错误代码, 保留下列以供将来使用

 

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值