SW-X的RPC服务,是基于TCP通讯协议实现。
客户端的节点获取使用评分机制,平均获取可用的服务节点。
Web服务中心提供定时轮询检测服务是否故障,并会通过生命周期回调进行相关消息通知。
同时,同一个服务可以配置多个节点,方便扩展应用负载。
RPC支持AES
加密传输,在未启用加密前,客户端请求的数据包必须是json
格式,数据规范如下:
[
'class' => '路由地址',
'function' => '服务接口名称',
'headers' => '请求头-数组格式',
'param' => '请求参数-数组格式',
'task' => '是否异步请求-bool',
'callback' => '异步请求的通知地址',
'callback_type' => '异步请求通知的HTTP-method类型',
]
而RPC服务端返回的数据格式也是json
格式,若开启AES
加密传输,RPC服务的返回内容也会被加密,未加密前的数据规范如下:
[
'status' => '状态码',
'msg' => '说明',
'data' => '服务返回值'
]
若请求成功,则status
状态码为200
,其余状态码均表示请求失败。
data
内容则为RPC服务的return
数据。
注意:开发者不需要关心RPC服务的底层交互逻辑,这里只是用于介绍服务与客户端之间的数据交互方式。
RPC的数据传输,默认开启了AES
加密方式,若需要明文传输,可以在/config/rpc.php
配置文件中,将aes_status
改为false
即可。
注意:当客户端 或 服务端,开启 或 关闭加密方式时,另一端必须保持参数一致。
AES
加密相关的配置参数如下:
return [
// 是否启用数据传输加密
'aes_status' => true,
// 数据加密方式
'aes_method' => 'AES-128-ECB',
// 加密密钥
'aes_key' => 'swoolex',
// 加密向量
'aes_iv' => '',
]