SW-X RPC服务
以下为使用的相关说明,更详细的组件代码请看组件库文档
起服说明
按上面的交互图,我们可以看出,一套完整的RPC服务,至少需要启用3个不同的服务端,分别如下:
1、RPC服务端:使用sw-x start rpc
启动服务,服务代码存放在/app/rpc
文件夹里。
2、服务中心-HTTP端:先在/config/rpc.php
配置文件中,修改http_rpc_is
项为true
,
然后使用sw-x rpc start
创建服务中间组件,最后再使用sw-x start http
启动服务,在启动服务之前,我们还可以在/rpc/map.php
文件中,先配置初始的RPC服务节点。
3、应用客户端:直接使用sw-x start http
启动服务,通过\x\RpcClient
组件来调用RPC服务,中间的服务调用,会统一向服务中心-HTTP端获取,使用者无需任何操作。
RPC的数据交互格式
SW-X的RPC服务,底层是走的TCP链接。
其中RPC服务端收到的数据格式为JSON格式。
数据未传输加密前的格式如下:
[
'class' => '路由地址',
'function' => '服务接口名称',
'headers' => '请求头-数组格式',
'param' => '请求参数-数组格式',
]
若开启加密,则数据加密函数如下:
class Currency
{
/**
* AES加密方法
* @todo 无
* @author 小黄牛
* @version v1.2.24 + 2021.1.9
* @deprecated 暂不启用
* @global 无
* @param string $data 要加密的数据
* @return void
*/
public function aes_encrypt($data) {
$config = \x\Config::run()->get('rpc');
return openssl_encrypt($data, $config['aes_method'], $config['aes_key'], 0, $config['aes_iv']);
}
/**
* AES解密方法
* @todo 无
* @author 小黄牛
* @version v1.2.24 + 2021.1.9
* @deprecated 暂不启用
* @global 无
* @param string $data 要解密的数据
* @return void
*/
public function aes_decrypt($data) {
$config = \x\Config::run()->get('rpc');
return openssl_decrypt($data, $config['aes_method'], $config['aes_key'], 0, $config['aes_iv']);
}
}
而RPC服务端返回的数据格式也是JSON格式:
数据未加密前的格式如下:
[
'status' => '状态码',
'msg' => '说明',
'data' => '服务返回值'
]
若请求成功,则status
状态码为200
,其余状态码均表示请求失败。
根据以上数据交互流程,可自行使用PHP之外的语言,来对接SW-X启动的RPC服务噢。