hyperf 实现简单的jsonrpc和grpc

hypefr简单介绍
hyperf 实现简单的jsonrpc和grpc_第1张图片
这里使用docker安装一下hyperf
因为需要容器间通信 用docker创建自己的网络 这里我使用172.172.0.0/24创建hyperf网络
到时候创建hyperfy容器的时候 使用
在这里插入图片描述
这个范围内的网络

docker run --name hyperfServer\
-v /home/wwwroot/default/hyperf1:/data/project \
-p 9505:9505 -itd \
--privileged -u root \
--entrypoint /bin/sh \
--network hyperf --ip 172.172.0.2 \
hyperf/hyperf:7.4-alpine-v3.11-swoole
docker run --name hyperfClient \
-v /home/wwwroot/default/hyperf2:/data/project \
-p 9506:9506 -itd \
--privileged -u root \
--entrypoint /bin/sh \
--network hyperf --ip 172.172.0.3 \
hyperf/hyperf:7.4-alpine-v3.11-swoole

在这里插入图片描述
为什么要创建2个呢
服务有两种角色,一种是 服务提供者(ServiceProvider),即为其它服务提供服务的服务,另一种是 服务消费者(ServiceConsumer),即依赖其它服务的服务,一个服务既可能是 服务提供者(ServiceProvider),同时又是 服务消费者(ServiceConsumer)。而两者直接可以通过 服务契约 来定义和约束接口的调用,在 Hyperf 里,可直接理解为就是一个 接口类(Interface),通常来说这个接口类会同时出现在提供者和消费者下。
这里把hyperfClient容器当做服务消费者 hyperfServer容器当做服务提供者
先进入到hyperfClient容器 安装hyperf
composer create-project hyperf/hyperf-skeleton hyperfClient hyperf 实现简单的jsonrpc和grpc_第2张图片
其他组件看需要安装
hyperf 实现简单的jsonrpc和grpc_第3张图片
hyperfServer容器同理
composer create-project hyperf/hyperf-skeleton hyperfServer

启动一下hyperfClient 容器内启动和宿主机启动都可以 hyperf 实现简单的jsonrpc和grpc_第4张图片 在启动hyperf之前因为hyperfClient 端口是9506
需要修改一下 hyperfClient /config/server.php下的监听端口为9506 默认是9501 在执行
php bin/hyperf.php start
访问一下 ip加端口
hyperf 实现简单的jsonrpc和grpc_第5张图片
HyperfClient 启动成功
由于 Hyperf 是持久化的 CLI 框架,当您修改完您的代码后,通过 CTRL + C 终止当前启动的进程实例,并重新执行 php bin/hyperf.php start 启动命令即可。为了方便后面的修改代码不用每次都重启安装一下hyperf的Watcher热更新组件

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

hyperfServer修改监听端口9505开始编写服务提供代码

1.1定义服务提供方式端口
app/config/server.php 使用jsonRpc方式
composer require hyperf/rpc-server

return [
    'mode' => SWOOLE_PROCESS,
    'servers' => [
        [
            'name' => 'jsonrpc-http',
            'type' => Server::SERVER_HTTP,
            'host' => '0.0.0.0',
            'port' => 9505,
            'sock_type' => SWOOLE_SOCK_TCP,
            'callbacks' => [
                Event::ON_REQUEST => [\Hyperf\JsonRpc\HttpServer::class, 'onRequest'],<

你可能感兴趣的:(php,rpc,grpc)