PHPackages                             simple-swoole/rpc-multiplex - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. simple-swoole/rpc-multiplex

ActiveLibrary

simple-swoole/rpc-multiplex
===========================

v0.1.0(5y ago)15231MITPHPPHP &gt;=7.3

Since Mar 1Pushed 5y ago3 watchersCompare

[ Source](https://github.com/simple-swoole/rpc-multiplex)[ Packagist](https://packagist.org/packages/simple-swoole/rpc-multiplex)[ Fund](https://simps.io/#/zh-cn/donate)[ GitHub Sponsors](https://github.com/simple-swoole)[ RSS](/packages/simple-swoole-rpc-multiplex/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (8)Versions (2)Used By (0)

安装consul
--------

[](#安装consul)

`consul`具体的原理这里不做介绍，只需要记得consul中有两个角色，`server`和`client`，我们首先需要一个consul的`server`集群，生产环境推荐3台机器以上的consul集群保证高可用，server集群间采用`raft`强一致性算法协调，`client`是性能很高的轻量级进程，client和server集群间通过`gossip`协议同步数据，我们需要在微服务的`rpc调用端`和`rpc服务端`的机器上都安装consul的`client`。

`rpc调用端`通过请求本机的consul`client`来`发现服务`。 `rpc服务端`通过请求本机的consul`client`来`注册服务`。

这里推荐采用docker来安装`consul`。

#### consul server集群安装

[](#consul-server集群安装)

```
一.  docker pull consul

#CONSUL_BIND_INTERFACE 是内网的网卡名，consul服务将绑定到这个网卡上
#server=true 表示这个consul进程是server角色
#bootstrap-expect=1 表示只需要1个server就可以对外提供服务，推荐3个，我这里为了演示写1
二.  docker run -d --name=consul1 --net=host -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --bootstrap-expect=1 --client=0.0.0.0 -ui
```

#### 在rpc的客户端和服务端安装consul client

[](#在rpc的客户端和服务端安装consul-client)

```
一.  docker pull consul

#server=false 表示这是个client进程
#join=192.168.2.132，这个ip是consul server那台机器的ip，由于server是集群部署，即使这个ip机器宕机，也会自动选主到新ip
二.  docker run -d --name=client --net=host -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=false --client=0.0.0.0 -ui -join=192.168.2.132
```

安装simps的rpc组件
-------------

[](#安装simps的rpc组件)

首先安装swoole扩展，[参考此文档](https://wiki.swoole.com/#/environment)

安装simps脚手架和rpc组件

```
composer create-project simple-swoole/skeleton
cd skeleton
composer require simple-swoole/rpc-multiplex
```

`rpc-multiplex`组件采用单连接复用的方式，不需要连接池，性能极高，感谢`@李铭昕`小伙伴的贡献。

添加rpc服务端代码
----------

[](#添加rpc服务端代码)

在`app/Service`目录下面，填充你的业务代码

```
namespace App\Service;

class RpcService
{
    public function hello(string $name): string
    {
        return 'Hello ' . $name;
    }
}
```

在`config/routes.php`定义一个`Health`接口给consul探活用

```
return [
    ['GET', '/Health', function ($request, $response) {
        $response->end('Im ok');//定义健康监测接口给consul调用
    }],
];
```

修改rpc服务端的配置
-----------

[](#修改rpc服务端的配置)

修改`config/servers.php`

```
