PHPackages                             overlu/laravel-rpc - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. overlu/laravel-rpc

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

overlu/laravel-rpc
==================

laravel rpc driver module, simple and easy to use

v2.0.1(2y ago)1299PHP

Since Dec 17Pushed 2y ago1 watchersCompare

[ Source](https://github.com/overlu/laravel-rpc)[ Packagist](https://packagist.org/packages/overlu/laravel-rpc)[ RSS](/packages/overlu-laravel-rpc/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (3)Versions (9)Used By (0)

### 前言

[](#前言)

#### 项目介绍

[](#项目介绍)

overlu/laravel-rpc是一款基于laravel的分布式开发部署扩展，`运行日志记录放在storage/logs/rpc`，包含4种方案：

- 本地调用
- MessageQueue调用 `异步`
- RPC `同步`、`异步`
- API `同步`

#### 安装

[](#安装)

##### 1. 安装beanstalkd

[](#1-安装beanstalkd)

```
# 访问 http://kr.github.io/beanstalkd/download.html 下载beanstalkd-1.11.tar.gz
> tar -xf beanstalkd-1.11.tar.gz
> cd beanstalkd-1.11
> make
# 查看beanstalkd参数信息
> ./beanstalkd -h
# 启动beanstalkd，-b表示开启binlog，断电后重启自动恢复任务
> ./beanstalkd -l 127.0.0.1 -p 11300 -b /data/beanstalkd/binlog &
```

##### 2. 安装扩展

[](#2-安装扩展)

```
php composer.phar require overlu/laravel-rpc
# publish config
php artisan vendor:publish --provider="Overlu\Rpc\RpcServiceProvider"
```

```
# 安装好Rpc扩展后，打开 config/app.php，注册如下服务提供者到 $providers 数组：
Overlu\Rpc\RpcServiceProvider::class
# 然后添加如下门面到 $aliaes 数组：
'Rpc' => \Overlu\Rpc\Facades\Rpc::class
```

使用Nacos服务发现：

```
php composer.phar require overlu/laravel-reget
```

> 具体使用查看：
>

#### 配置

[](#配置)

```
/**
 * rpc.php
 * 基本信息配置
 */
return [
    /**
     * dev(default), production
     * dev模式免签名验证
     */
    'environment' => 'dev',
    /**
     * 验证方式: white_ip_lists(default) / signature
     */
//    'verify_method' => 'white_ip_lists',
    'verify_method' => 'signature',

    'white_ip_lists' => [
        '127.0.0.1',
    ],
    /**
     * 秘钥，签名加密用，务必保证每个节点都一样
     */
    'key' => 'Q6Hc4pLmSMeYHVnqnRu68UcbC36RvIW2P7v3eQyAyxQ',

    /**
     * 签名有效时间，单位秒
     */
    'signature_expiry' => '600',

    /**
     * 异常处理驱动, rpc/default
     */
    'exception_driver' => 'rpc',

    /**
     * 是否打开调用日志
     */
    'log_info' => true,
    'rpc_log_info_channel' => [
        'driver' => 'daily',
        'path' => storage_path('logs/rpc/info.log'),
        'level' => 'info',
//        'days' => 14,
    ],
    /**
     * 是否打开错误日志
     */
    'log_error' => true,
    'rpc_log_error_channel' => [
        'driver' => 'daily',
        'path' => storage_path('logs/rpc/error.log'),
        'level' => 'error',
//        'days' => 14,
    ],

    /**
     * 配置beanstalkd
     */
    'beanstalkd' => [
        'host' => env('BEANSTALKD_HOST', '127.0.0.1'),
        'port' => env('BEANSTALKD_POST', '11300'),
        'channel' => env('BEANSTALKD_CHANNEL', 'Lrpc_uDi7q'),
    ],

    /**
     * rpc服务端口
     */
    'port' => env('RPC_SERVER_PORT', 1314),

    /**
     * 是否使用nacos服务
     */
    'use_nacos' => false,
];
```

```
/**
 * module.php
 * 模块信息配置
 */
return [
    /**
     * Module Mapping
     * ModuleName => Namespace\\ModuleName
     */
    'mapping' => [
//        'ModuleName' => 'Namespace\\ModuleName',
    ],

    /**
     * 默认local驱动
     */
    'default_driver' => 'local',

    /**
     * module registration center
     */
    'registration' => [
        'local' => [  // message queue监听使用，判断是否是自身服务
//            'ModuleName'
        ],
        'mq' => [
//            'ModuleName'
        ],
        'rpc' => [
//            'ModuleName'
        ],
        'api' => [
//            'ModuleName'
        ],
    ],

    /**
     * rpc服务地址模块映射
     * 一个模块对应多个服务地址，使用','隔开
     */
    'hosts' => [
//        'ModuleName' => '127.0.0.1',
//        'ModuleName2' => '127.0.0.1,127.0.0.2',
    ]
];
```

> 注意：如果同一个模块注册在多个API/RPC驱动服务器上，则系统会自动随机获取一个服务器连接

#### 流程图

[](#流程图)

[![QwSCM8.png](https://camo.githubusercontent.com/f16c0ea29cba674e4dff3e06183c5e2d226cf4e7b84b6b2f48533cc230e1e106/68747470733a2f2f73322e617831782e636f6d2f323031392f31322f30392f517753434d382e706e67)](https://camo.githubusercontent.com/f16c0ea29cba674e4dff3e06183c5e2d226cf4e7b84b6b2f48533cc230e1e106/68747470733a2f2f73322e617831782e636f6d2f323031392f31322f30392f517753434d382e706e67)

#### Usage

[](#usage)

##### 修改配置文件module.php `本地配置文件模式`

[](#修改配置文件modulephp-本地配置文件模式)

```
// 配置模块映射(demo)
'mapping' => [
    'Log' => '\\App\\RpcTest\\Log',
    'SMS' => '\\App\\RpcTest\\SMS',
    'News' => '\\App\\RpcTest\\News',
]
// 注册模块(demo)
'registration' => [
    'local' => ['Log'],
    'mq' => ['SMS'],
    'rpc' => [],
    'api' => ['News'],
]
// 配置服务地址(demo)
'hosts' => [
    'Log' => '127.0.0.1',
    'SMS' => '127.0.0.1,127.0.0.2',
    'News' => '127.0.0.3'
]
```

##### 修改配置 `nacos模式`

[](#修改配置-nacos模式)

**注册服务(demo)**
[![YNPsGF.png](https://camo.githubusercontent.com/acbbdaea7a5bda36bc95bf2b49d7b434d257a6bb68b37698786b8f19f41cecc3/68747470733a2f2f73312e617831782e636f6d2f323032302f30352f31322f594e507347462e706e67)](https://camo.githubusercontent.com/acbbdaea7a5bda36bc95bf2b49d7b434d257a6bb68b37698786b8f19f41cecc3/68747470733a2f2f73312e617831782e636f6d2f323032302f30352f31322f594e507347462e706e67)**配置模块参数(demo)**[![YN9Iw6.png](https://camo.githubusercontent.com/5c550253ef575d1d0fd53c495ded0d1c934a6e4830356cf1c2a82daa329e0a21/68747470733a2f2f73312e617831782e636f6d2f323032302f30352f31322f594e394977362e706e67)](https://camo.githubusercontent.com/5c550253ef575d1d0fd53c495ded0d1c934a6e4830356cf1c2a82daa329e0a21/68747470733a2f2f73312e617831782e636f6d2f323032302f30352f31322f594e394977362e706e67)

##### 初始化配置 `nacos模式`

[](#初始化配置-nacos模式)

```
# demo
php artisan reget:listen demo.module.config --handle="Namespace\ClassName"
```

```
