亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

Rpc-Server

場景

例如在一個商場系統中,我們將商品庫和系統公告兩個服務切分開到不同的服務器當中。當用戶打開商場首頁的時候, 我們希望 App 向某個網關發起請求,該網關可以自動地幫我們請求商品列表和系統公共等數據,合并返回。

服務定義

每一個 Rpc 服務其實就是一個 EasySwoole\Rpc\Service\AbstractService 類,在服務下面我們又分為多個子模塊,每個子模塊提供不同的服務。 如下:

定義商品服務

<?php

namespace App\RpcServices;

use EasySwoole\Rpc\Protocol\Request;
use EasySwoole\Rpc\Service\AbstractService;

class Goods extends AbstractService
{
    /**
     *  重寫onRequest(比如可以對方法做ip攔截或其它前置操作)
     *
     * @param Request $request
     * @return bool
     */
    protected function onRequest(Request $request): bool
    {
        return true;
    }

    function serviceName(): string
    {
        return 'Goods';
    }
}

定義商品服務的子模塊

<?php

namespace App\RpcServices;

use EasySwoole\Rpc\Service\AbstractServiceModule;

class GoodsModule extends AbstractServiceModule
{
    function moduleName(): string
    {
        return 'GoodsModule';
    }

    function list()
    {
        $this->response()->setResult([
            [
                'goodsId' => '100001',
                'goodsName' => '商品1',
                'prices' => 1124
            ],
            [
                'goodsId' => '100002',
                'goodsName' => '商品2',
                'prices' => 599
            ]
        ]);
        $this->response()->setMsg('get goods list success');
    }

    function exception()
    {
        throw new \Exception('the GoodsModule exception');

    }

    protected function onException(\Throwable $throwable)
    {
        $this->response()->setStatus(-1)->setMsg($throwable->getMessage());
    }
}

定義公共服務

<?php

namespace App\RpcServices;

use EasySwoole\Rpc\Service\AbstractService;

class Common extends AbstractService
{
    function serviceName(): string
    {
        return 'Common';
    }
}

定義公共服務的子模塊

<?php

namespace App\RpcServices;

use EasySwoole\Rpc\Service\AbstractServiceModule;

class CommonModule extends AbstractServiceModule
{
    function moduleName(): string
    {
        return 'CommonModule';
    }

    public function mailBox()
    {
        // 獲取client 全局參數
        $this->request()->getClientArg();
        // 獲取參數
        $this->request()->getArg();
        $this->response()->setResult([
            [
                'mailId'=>'100001',
                'mailTitle'=>'系統消息1',
            ],
            [
                'mailId'=>'100001',
                'mailTitle'=>'系統消息1',
            ],
        ]);
        $this->response()->setMsg('get mail list success');
    }

    public function serverTime()
    {
        $this->response()->setResult(time());
        $this->response()->setMsg('get server time success');
    }
}

服務注冊

EasySwoole 全局事件(即項目根目錄的 EasySwooleEvent 文件)中,進行服務注冊。至于節點管理、服務類定義等具體用法請看對應章節。

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');
    }

    public static function mainServerCreate(EventRegister $register)
    {
        ###### 注冊 rpc 服務 ######
        /** rpc 服務端配置 */
        $config = new \EasySwoole\Rpc\Config();
        $config->setNodeId('EasySwooleRpcNode1');
        $config->setServerName('EasySwoole'); // 默認 EasySwoole
        $config->setOnException(function (\Throwable $throwable) {

        });

        $serverConfig = $config->getServer();
        // 單機部署內部調用時可指定為 127.0.0.1
        // 分布式部署時多臺調用時請填 0.0.0.0
        $serverConfig->setServerIp('127.0.0.1');

        // rpc 具體配置請看配置章節
        $rpc = new \EasySwoole\Rpc\Rpc($config);

        // 創建 Goods 服務
        $goodsService = new \App\RpcServices\Goods();
        // 添加 GoodsModule 模塊到 Goods 服務中
        $goodsService->addModule(new \App\RpcServices\GoodsModule());
        // 添加 Goods 服務到服務管理器中
        $rpc->serviceManager()->addService($goodsService);

        // 創建 Common 服務
        $commonService = new \App\RpcServices\Common();
        // 添加 CommonModule 模塊到 Common 服務中
        $commonService->addModule(new \App\RpcServices\CommonModule());
        // 添加 Common 服務到服務管理器中
        $rpc->serviceManager()->addService($commonService);

        // 此刻的rpc實例需要保存下來 或者采用單例模式繼承整個Rpc類進行注冊 或者使用Di

        // 注冊 rpc 服務
        $rpc->attachServer(ServerManager::getInstance()->getSwooleServer());

    }
}

服務端響應狀態碼說明

狀態碼 說明
0 調用成功
1001 獲取不到服務端可用節點,調用失敗
1002 客戶端連接服務端節點超時,調用失敗
1003 服務端響應超時,調用失敗
2001 服務端讀取客戶端請求數據包超時,調用失敗
2002 客戶端發送的數據包不合法,調用失敗
3000 服務端節點宕機,調用失敗
3001 調用的服務不存在,調用失敗
3002 調用服務的子模塊不存在,調用失敗
3003 調用服務錯誤,調用失敗
其他 未知錯誤,調用失敗

為了方便測試,我把兩個服務放在同一臺機器中注冊。實際生產場景應該是 N 臺機注冊商品服務,N 臺機器注冊公告服務,把服務分開。

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    老司机午夜精品视频在线观看| 91嫩草在线| 亚洲欧洲精品一区二区| 乱人伦精品视频在线观看| 午夜精品剧场| 先锋影音网一区| 精品91在线| 91久久精品国产91久久性色tv| 国产精品综合久久久久久| 色99中文字幕| 日韩亚洲国产精品| 99中文字幕| 久久激情综合| 四虎一区二区| 久久久久久九九九九| 91成人理论电影| 国产情侣一区| 日本10禁啪啪无遮挡免费一区二区| 欧美国产高潮xxxx1819| 快she精品国产999| 亚洲高清精品中出| 在线一区免费观看| 日韩av电影免费在线| 精品国产中文字幕| 国产精品免费在线| 亚洲高清激情| 亚洲网站视频| 麻豆av一区二区| 久久久久久九九| 久久久久久久久久久一区| 国产中文一区二区| 亚洲另类黄色| 国产精品免费一区二区三区在线观看 | 午夜一区二区三区| 亚洲自拍偷拍二区| 狠狠色狠狠色综合人人| 久久精品二区| 日韩国产精品一区二区三区| 先锋影音亚洲资源| 欧美视频1区| 欧美自拍资源在线| 一区二区在线中文字幕电影视频| 91超碰在线电影| 精品91免费| 一本色道久久99精品综合| 欧美在线三级| 国产欧美一区二区色老头| 亚洲啪啪av| 亚洲高清av| 97超碰资源| 亚洲在线观看| 翡翠波斯猫1977年美国| 欧美在线3区| 国模一区二区三区| 毛片一区二区| 日本日本精品二区免费| 国内自拍视频一区二区三区| 日韩性感在线| 欧美日韩综合网| 亚洲午夜一区| 成人免费观看网站| 老牛影视一区二区三区| 欧美精品免费观看二区| 精品电影一区| 国产日本一区二区三区| 伊人久久大香线蕉av一区| 一本色道久久99精品综合| 精品国产免费久久久久久尖叫 | 欧美黑人xxxxx| 国产一区二区精品在线| 亚洲一区二区精品在线| 久久国产手机看片| 国产精品有限公司| 欧美日本韩国国产| 国产精品视频免费观看| 日韩不卡av| 麻豆精品网站| 一级日韩一区在线观看| 91gao视频| 亚洲三级影院| 视频一区视频二区视频| 亚洲一区二区精品在线观看| 国产精品日韩高清| 视频在线精品一区| 99se婷婷在线视频观看| 风间由美久久久| 国产精品大全| 99在线精品视频在线观看| 欧美视频小说| 欧美1区3d| 亚洲激情国产| 久久精品五月| 激情久久婷婷| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 亚洲黄色一区二区三区| 欧美激情国产日韩| 亚洲免费不卡| 国产精品美女黄网| 一区二区三区精品视频在线观看| 午夜在线a亚洲v天堂网2018| 国产成人看片| 欧洲国产精品| 国产在线精品一区二区三区| 亚洲国产午夜伦理片大全在线观看网站 | 蜜桃av久久久亚洲精品| 国产区一区二区| 麻豆久久精品| 欧美欧美一区二区| 国产欧美日韩亚洲| 欧美精品偷拍| 久久久国产精品一区二区中文| 国产一区二区三区高清视频| 香蕉亚洲视频| 亚洲图片都市激情| 日韩三级电影| 日韩欧美视频第二区| 欧美激情导航| 亚洲深爱激情| 神马影院午夜我不卡| 精品国产乱码久久久久久郑州公司 | 99视频日韩| 国产亚洲精品久久飘花| 久久久www免费人成黑人精品| 欧美日韩亚洲一区二区三区在线 | 亚洲欧洲日韩综合二区| 激情视频一区二区| 亚洲激情午夜| 日韩精品第一页| 日韩一区免费观看| 久久久99爱| 国产传媒一区| 99精品视频免费| 日韩欧美第二区在线观看| 欧美一级二区| 成人av影视在线| 欧美aaaaa喷水| 久久午夜精品一区二区| 欧美在线播放一区| 欧美日韩精品| 国产精品夜夜夜| 国产91一区二区三区| 亚洲美女色禁图| 久久国产精品99国产| 欧美日韩国产免费观看| 在线日本成人| 欧美另类亚洲| 日韩免费电影一区二区三区| 3d精品h动漫啪啪一区二区| 黄色一区二区三区四区| 日韩动漫在线观看| 欧美特黄a级高清免费大片a级| 欧美连裤袜在线视频| 欧美一区精品| 一本一道久久久a久久久精品91| 欧美特黄a级高清免费大片a级| 日韩精品大片| 亚洲经典在线看| 国产偷国产偷亚洲高清97cao| 国产精品久久波多野结衣| 99蜜桃在线观看免费视频网站| 99在线|亚洲一区二区| 国产在线视频欧美一区二区三区| 婷婷久久伊人| 99精品国产福利在线观看免费| wwwxx欧美| 97netav| 亚洲春色在线| 久久本道综合色狠狠五月| 欧美在线一区二区三区四区| 狠狠入ady亚洲精品经典电影| 欧美精品一区二区三区在线看午夜 | 欧美极品一区二区| 亚洲国产一区二区精品专区| 久久国产精品一区二区三区四区| 欧美精品亚洲精品| 亚洲视频大全| 国产精品尤物| 噜噜噜噜噜久久久久久91| 午夜一区二区三区| 999视频在线观看| 欧美高清日韩| 欧美极品一区二区| 久久久99爱| 欧美成人有码| 中日韩在线视频| 久久久久国产精品午夜一区| 亚洲伊人婷婷| 鲁鲁视频www一区二区| 亚洲影视综合| 影音先锋亚洲一区| 亚洲不卡一卡2卡三卡4卡5卡精品| 久久婷婷久久| 在线午夜精品| 国产乱码精品一区二区三区中文| 麻豆视频成人| 女人天堂亚洲aⅴ在线观看| 精品一区久久久久久| 午夜一级久久| 欧美久久久久久| 精品久久久久久一区|