① JSON RPC 是一种基于 JSON 格式的轻量级的 RPC 协议标准,易于使用和阅读。
② 在 Hyperf 里由 hyperf/json-rpc 组件来实现,可自定义基于 HTTP 协议来传输,或直接基于 TCP 协议来传输。
一、服务中心
- 目前 Hyperf 仅支持两种服务中心的组件支持:
consul
、nacos
consul 安装与使用 【参照官网-consul.io】
-
ubuntu安装
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install consul
-
通过GitHub 克隆
git clone https://github.com/hashicorp/consul.git cd consul
-
consul 的启动
consul agent -dev consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0 -bind 你的ip地址 -data-dir=/状态数据存储文件夹/data >> /日志记录文件夹/logs/consul.log & consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0 -bind 192.168.0.174 -data-dir=/Users/jiajunguo/data/consul >> /Users/jiajunguo/logs/consul/consul.log &
-
consul 图形管理后台
-
默认端口 8500
-
127.0.0.1:8500
-
二、服务提供者【provider】
确保 Hyperf 框架可正常启动及访问
1. 安装 统一接入层
composer require hyperf/json-rpc
2. 安装对应的适配器(consul)
composer require hyperf/service-governance-consul
3. 安装 JSON RPC 服务端
composer require hyperf/rpc-server
4. 定义服务提供者
4.1. 在app/Rpc下创建 CalculatorService.php
<?php
namespace App\Rpc;
use Hyperf\RpcServer\Annotation\RpcService;
/**
* 服务发布
* 参数列表
* 1.name: 服务的名称
* 2.server: 绑定该服务类发布所要承载的 Server,该属性对应 config/autoload/server.php 文件内 servers 下所对应的 name
* 3.protocol: 服务暴露的协议
* 4.publishTo: 要发布的服务中心,目前仅支持 consul、nacos 或为空,为空时代表不发布该服务到服务中心去
*/
#[RpcService(name: 'CalculatorService', server: 'jsonrpc-http', protocol: 'jsonrpc-http', publishTo: 'consul')]
class CalculatorService implements CalculatorServiceInterface
{
public function add