亚洲精品成人_精品成人一区_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>
    国产精品日韩一区二区| 伊人久久大香线蕉午夜av| 久久国产精品亚洲va麻豆| 你懂的网址一区二区三区| 亚洲欧洲精品在线| 伊人激情综合| 老**午夜毛片一区二区三区| 国产欧美在线一区二区| 亚洲欧美日韩精品在线| 一区二区毛片| caoporen国产精品| 亚洲视频精品一区| 国产欧美91| 欧美尤物一区| 99国产精品视频免费观看一公开 | 欧美日韩在线观看一区二区三区| 亚洲一区二区三区四区中文| 99riav国产精品| 久久国产日韩欧美| 亚洲高清视频一区二区| 国产一区二区精品在线| 国产精品黄色| 国产一区再线| 91久久精品国产91久久性色tv | 一区二区三区四区五区在线 | 噜噜噜噜噜久久久久久91| 欧美久久久久久| 国产精品免费一区二区三区观看| 一区视频二区视频| 91精品天堂| 亚洲小说欧美另类社区| 久久99九九| 国产精品一区亚洲| 亚洲一区精品视频| 成人区精品一区二区| 国模精品一区二区三区| 九色综合婷婷综合| 亚洲欧美春色| 欧美1区2区3区| 精品国产福利| 国产欧美大片| 欧美人成网站| 欧美精品七区| 久久精品亚洲| 在线日本高清免费不卡| 日本三级中国三级99人妇网站| 午夜在线播放视频欧美| 午夜电影亚洲| 性欧美大战久久久久久久免费观看| 久久国产精品久久久久久电车 | 亚洲国产精品一区二区第四页av| 欧美日韩在线一二三| 久久久久久久久一区二区| 黄色工厂这里只有精品| 日韩资源av在线| 国产一区免费在线| 欧美亚洲一级| 在线欧美一区| 欧美1区3d| 天天爽天天狠久久久| 国产伦理久久久| 欧美亚洲在线| 亚洲一区三区电影在线观看| 欧美大片专区| 一区二区三区偷拍| 欧美一区免费视频| 久久婷婷开心| 国模一区二区三区私拍视频| 亚洲中字在线| 亚洲一区欧美激情| 国产精品亚洲综合久久| 在线观看亚洲| 亚洲黄页一区| 最新亚洲视频| 亚洲国产午夜| 亚洲伦伦在线| 亚洲人成久久| 宅男噜噜噜66一区二区| 99精品国产在热久久婷婷| 欧美日韩精品久久| 好看的av在线不卡观看| 国产精品va| 亚洲成人资源| 亚洲人体一区| 亚洲欧美视频| 久久精品免费| 国产精品福利视频| 久久亚洲国产精品日日av夜夜| www.成人av| 精品无码久久久久国产| 麻豆传媒一区| 亚洲视频sss| 狠狠色综合色区| 国产人成精品一区二区三| 国产日韩欧美一区| 老司机精品久久| 国产尤物99| 亚洲一区二区三区精品视频 | 欧美1区2区3区| 一区二区亚洲精品| 久久狠狠久久综合桃花| www.久久久| 四虎永久在线精品免费一区二区| 中日韩在线视频| 日韩亚洲国产欧美| 9a蜜桃久久久久久免费| 欧洲亚洲一区二区三区四区五区| 欧美阿v一级看视频| 日韩亚洲视频在线| 国产精品一区二区三区不卡| 日韩欧美99| 一区二区自拍| 肥熟一91porny丨九色丨| 日韩av在线电影观看| 亚洲小说欧美另类婷婷| 91青青草免费观看| 天堂精品一区二区三区| 亚洲精品中文字幕在线| 国外成人在线视频网站| 欧美成人日本| av噜噜色噜噜久久| 伊人色综合影院| 香蕉久久久久久久av网站| 欧美三级网色| 一区二区三区av| 欧美另类一区| 国产日韩精品视频一区二区三区| 国外成人免费视频| 亚洲无玛一区| 国产中文一区二区| 在线观看视频日韩| 免费99视频| 一本久久综合| 亚洲美女搞黄| 99国产视频在线| 欧美在线一二三区| 国产精品白丝jk白祙| 欧美日韩在线不卡一区| 精品国产一区二区三区麻豆小说 | 国产欧美日韩在线播放| 国产精品magnet| 精品国产乱码久久久久| 日韩一区二区免费看| 日韩欧美精品一区二区| 亚洲欧美日韩综合国产aⅴ| 亚洲精品无人区| 国产欧美日韩一区二区三区| 亚洲精品看片| 亚洲最大色综合成人av| 国产三区二区一区久久| 国产精品普通话对白| 欧美精品一区二区视频| 欧美一区二区在线视频观看| 老司机午夜精品视频| 一区久久精品| 欧美一区二区三区在线播放| 精品国产乱码久久久久久蜜柚| 国产美女一区| 激情久久五月| 欧美99久久| 亚洲国产精品视频一区| 精品在线不卡| 国产高清精品一区二区三区| 国产精品一区二区三区四区五区| 欧美日韩一区综合| 欧美+日本+国产+在线a∨观看| 欧美日韩精品免费观看视一区二区| 2022国产精品| 亚洲一区免费看| 国产欧美日本在线| 亚洲一级电影| 黄色在线一区| 欧美精品日本| 欧美一区二区在线| 一区二区在线观看网站| 亚洲aⅴ天堂av在线电影软件| 美女被啪啪一区二区| 精品卡一卡二| 久久天天狠狠| 久久久精品动漫| 精品乱码一区二区三区| 国产在线精品一区二区中文| 国产不卡一区二区三区在线观看| 91精品国产99久久久久久红楼| 久久裸体视频| 91久久大香伊蕉在人线| 成人av中文| 国产三区精品| 欧美大香线蕉线伊人久久| 久草热久草热线频97精品| 久久99精品国产一区二区三区| 久久av一区二区| 茄子视频成人在线观看| 相泽南亚洲一区二区在线播放| 偷拍视频一区二区| 中文字幕欧美日韩一区二区三区| 欧美精品偷拍| 国产偷国产偷亚洲高清97cao| 性感少妇一区| 国产一级特黄a大片99|