9. JSON RPC 服务

时间:2024-10-23 13:59:13

① JSON RPC 是一种基于 JSON 格式的轻量级的 RPC 协议标准,易于使用和阅读。
② 在 Hyperf 里由 hyperf/json-rpc 组件来实现,可自定义基于 HTTP 协议来传输,或直接基于 TCP 协议来传输。

一、服务中心

  • 目前 Hyperf 仅支持两种服务中心的组件支持: consulnacos

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