使用服务中心consul

安装consul服务

hyperf文档中并没有说明如何安装 Consul 服务,以下对 Consul 做一个简单的安装

docker pull consul

docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul agent -server -bootstrap-expect=1 -ui -bind=0.0.0.0 -client=0.0.0.0


访问页面:http://127.0.0.1:8500/ui/dc1/services

hyperf-rpc-service-user项目和hyperf-rpc-client项目都加载依赖

composer require hyperf/service-governance-consul

修改代码hyperf-rpc-service-user 项目

config/autoload/services.php

 [
        // 开启服务发现
        'discovery' => true,
        // 开启服务注册
        'register' => true,
    ],
    // 服务消费者相关配置
    'consumers' => [],
    // 服务提供者相关配置
    'providers' => [],
    // 服务驱动相关配置
    'drivers' => [
        'consul' => [
            'uri' => 'http://172.17.0.3:8500',
            'token' => '',
            'check' => [
                'deregister_critical_service_after' => '90m',
                'interval' => '1s',
            ],
        ],
    ],
];

config/autoload/consul.php

 'http://172.17.0.3:8500',
    'token' => '',
];

app/JsonRpc/UserService.php

 $id, 'name' => '黄翠刚'];
    }
}

启动服务: php bin/hyperf.php start

可以发现consul中已经多了一个服务了


修改代码hyperf-rpc-client 项目

config/autoload/services.php

 value(function () {
        $consumers = [];
        // 这里自动创建代理消费者类的配置形式,顾存在 name 和 service 两个配置项,这里的做法不是唯一的,仅说明可以通过 PHP 代码来生成配置
        $services = [
            'UserService' => \App\JsonRpc\UserServiceInterface::class,
        ];
        foreach ($services as $name => $interface) {
            $consumers[] = [
                // 服务名
                'name' => $name,
                // 服务接口名,可选,默认值等于 name 配置的值,如果 name 直接定义为接口类则可忽略此行配置,如 name 为字符串则需要配置 service 对应到接口类
                'service' => $interface,
                // 服务提供者的服务协议,可选,默认值为 jsonrpc-http
                'protocol' => 'jsonrpc-http',
                // 这个消费者要从哪个服务中心获取节点信息,如不配置则不会从服务中心获取节点信息
                'registry' => [
                    'protocol' => 'consul',
                    'address' => 'http://172.17.0.3:8500',
                ],
            ];
        }
        return $consumers;
    }),
];

启动服务: php bin/hyperf.php start

访问:http://127.0.0.1:9501/user/getUserInfo?id=5

你可能感兴趣的:(使用服务中心consul)