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

Rpc-Server

場(chǎng)景

例如在一個(gè)商場(chǎng)系統(tǒng)中,我們將商品庫(kù)和系統(tǒng)公告兩個(gè)服務(wù)切分開(kāi)到不同的服務(wù)器當(dāng)中。當(dāng)用戶打開(kāi)商場(chǎng)首頁(yè)的時(shí)候, 我們希望 App 向某個(gè)網(wǎng)關(guān)發(fā)起請(qǐng)求,該網(wǎng)關(guān)可以自動(dòng)地幫我們請(qǐng)求商品列表和系統(tǒng)公共等數(shù)據(jù),合并返回。

服務(wù)定義

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

定義商品服務(wù)

<?php

namespace App\RpcServices;

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

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

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

定義商品服務(wù)的子模塊

<?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());
    }
}

定義公共服務(wù)

<?php

namespace App\RpcServices;

use EasySwoole\Rpc\Service\AbstractService;

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

定義公共服務(wù)的子模塊

<?php

namespace App\RpcServices;

use EasySwoole\Rpc\Service\AbstractServiceModule;

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

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

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

服務(wù)注冊(cè)

EasySwoole 全局事件(即項(xiàng)目根目錄的 EasySwooleEvent 文件)中,進(jìn)行服務(wù)注冊(cè)。至于節(jié)點(diǎn)管理、服務(wù)類定義等具體用法請(qǐng)看對(duì)應(yīng)章節(jié)。

<?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)
    {
        ###### 注冊(cè) rpc 服務(wù) ######
        /** rpc 服務(wù)端配置 */
        $config = new \EasySwoole\Rpc\Config();
        $config->setNodeId('EasySwooleRpcNode1');
        $config->setServerName('EasySwoole'); // 默認(rèn) EasySwoole
        $config->setOnException(function (\Throwable $throwable) {

        });

        $serverConfig = $config->getServer();
        // 單機(jī)部署內(nèi)部調(diào)用時(shí)可指定為 127.0.0.1
        // 分布式部署時(shí)多臺(tái)調(diào)用時(shí)請(qǐng)?zhí)?0.0.0.0
        $serverConfig->setServerIp('127.0.0.1');

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

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

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

        // 此刻的rpc實(shí)例需要保存下來(lái) 或者采用單例模式繼承整個(gè)Rpc類進(jìn)行注冊(cè) 或者使用Di

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

    }
}

服務(wù)端響應(yīng)狀態(tài)碼說(shuō)明

狀態(tài)碼 說(shuō)明
0 調(diào)用成功
1001 獲取不到服務(wù)端可用節(jié)點(diǎn),調(diào)用失敗
1002 客戶端連接服務(wù)端節(jié)點(diǎn)超時(shí),調(diào)用失敗
1003 服務(wù)端響應(yīng)超時(shí),調(diào)用失敗
2001 服務(wù)端讀取客戶端請(qǐng)求數(shù)據(jù)包超時(shí),調(diào)用失敗
2002 客戶端發(fā)送的數(shù)據(jù)包不合法,調(diào)用失敗
3000 服務(wù)端節(jié)點(diǎn)宕機(jī),調(diào)用失敗
3001 調(diào)用的服務(wù)不存在,調(diào)用失敗
3002 調(diào)用服務(wù)的子模塊不存在,調(diào)用失敗
3003 調(diào)用服務(wù)錯(cuò)誤,調(diào)用失敗
其他 未知錯(cuò)誤,調(diào)用失敗

為了方便測(cè)試,我把兩個(gè)服務(wù)放在同一臺(tái)機(jī)器中注冊(cè)。實(shí)際生產(chǎn)場(chǎng)景應(yīng)該是 N 臺(tái)機(jī)注冊(cè)商品服務(wù),N 臺(tái)機(jī)器注冊(cè)公告服務(wù),把服務(wù)分開(kāi)。

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    在线国产欧美| 先锋亚洲精品| 欧美日韩在线观看一区二区三区| 91青青草免费观看| 99久久精品免费看国产四区| 国产精品久久久久免费| 亚洲国产欧洲综合997久久| 欧美影院一区| 国产精品久久久久9999高清| 精品999在线观看| 欧美 日韩 国产 一区| 亚洲一区二区三区精品视频| 欧美日韩在线精品一区二区三区| 国产精品久久7| 国产欧美一区二区三区不卡高清| 亚洲综合五月天| 免费视频一区| 你懂的国产精品永久在线| 亚洲精华国产欧美| 欧美区高清在线| 亚洲免费网址| 中文字幕日韩精品久久| 97在线中文字幕| 亚洲小说区图片区| 激情五月综合色婷婷一区二区| 狠狠久久综合婷婷不卡| 国产综合色一区二区三区| 亚洲国产一区二区在线| 日韩电影天堂视频一区二区| 亚洲精品久久久久久一区二区| 久久爱av电影| 美女91精品| 欧美三级免费| 日本午夜精品电影| 波多野结衣成人在线| 99精品视频网| 午夜精品网站| 日韩欧美三级一区二区| 国产精品福利视频| 亚洲精品一级| 中文字幕一区二区三区有限公司| 成人蜜桃视频| 性感少妇一区| 99精品国产福利在线观看免费 | 欧美xxxx黑人又粗又长密月| 99国产精品| 欧美精品首页| 日韩精品另类天天更新| 精品国产第一页| 久久久久一区二区| 99精品免费视频| 国产一区久久| 欧美在线看片| 在线综合视频网站| 亚洲v国产v在线观看| 国产自产在线视频一区| 不卡一区二区三区视频| 欧美专区18| 午夜亚洲影视| 亚洲一区精彩视频| 亚洲视频导航| 香蕉成人久久| 亚洲少妇诱惑| 国产麻豆日韩| 久久高清国产| 久久久成人网| 国产精华一区| 99久久精品久久久久久ai换脸| 模特精品在线| 91黄色国产视频| 99热99热| 国产日韩1区| 欧美日韩在线大尺度| 亚洲一区不卡在线| 欧美一区二区在线| 欧美三级特黄| 日韩一级欧洲| 性久久久久久| 国产综合动作在线观看| 精品日产一区2区三区黄免费| 官网99热精品| 日韩精品无码一区二区三区| 一区高清视频| 亚洲精品美女久久7777777| 亚洲综合电影一区二区三区| 7777奇米亚洲综合久久| 国产欧美日韩一区二区三区| 欧洲久久久久久| 亚洲午夜黄色| 可以看av的网站久久看| 精品久久久久久亚洲| 色女孩综合网| 91久久亚洲| 成人h视频在线观看| 成人精品一二区| 亚洲精品成人三区| 亚洲一区二区三区四区五区午夜| 风间由美久久久| 亚洲成色www久久网站| 亚洲精品国产精品国自产观看| 先锋a资源在线看亚洲| 久久伊人一区二区| 欧美日韩精品免费看| 久久精品五月| 亚洲啪啪av| 久久免费一区| 欧美激情1区2区| 老司机精品视频网站| 午夜精品美女久久久久av福利| 亚洲黄页一区| 狼狼综合久久久久综合网| 在线看片一区| 欧美日韩综合网| 国产精品久久久对白| 日本一区二区在线| 久久av一区二区三区亚洲| 午夜精品一区二区三区四区| 亚洲一区影院| 欧美精品成人| 精品日本一区二区三区| 一本久道久久久| 日本欧美精品久久久| 亚洲一区视频| 欧美国产综合视频| 久久99精品国产99久久| 国产欧美日韩综合精品二区| 午夜精品短视频| 黄色小网站91| 国产精品一区二区三区四区五区 | 欧美日韩精品久久| 久久久一本精品99久久精品66| 精品91久久久久| 日韩久久不卡| 国产欧美亚洲日本| 性刺激综合网| 影音先锋久久资源网| 亚洲福利av| 精品国产乱码一区二区三区四区| 国产精品免费在线| 欧美日本一区二区视频在线观看 | 国产在线欧美| 亚洲第一导航| 裸体丰满少妇做受久久99精品| 久久久久久久久一区二区| 今天的高清视频免费播放成人| 亚洲欧美国产精品桃花| 欧美激情视频一区二区三区| 老司机久久99久久精品播放免费| 亚洲欧洲三级| 亚洲人www| 亚洲高清不卡| 午夜精品亚洲| 欧美日韩一区在线播放| 一本色道婷婷久久欧美| 热re99久久精品国产99热| 久久99影院| 精品在线视频一区二区| 国内一区在线| 久久综合精品一区| 六十路精品视频| 蜜桃传媒视频麻豆一区 | 国产精品一区二区你懂得| 97av自拍| 国产伦精品一区二区三区视频免费| 久久国产一区| av资源一区二区| 成人午夜电影免费在线观看| 成人精品一二区| 精品毛片久久久久久| 欧美高清视频一区| 日韩亚洲欧美精品| 欧美国产91| 在线精品福利| 性欧美videos另类喷潮| 久久久精品国产一区二区三区| 97免费资源站| 精品国产一区二区三区四区vr| 久久99精品久久久久久三级 | 久久综合狠狠综合久久综青草| 麻豆成人小视频| 成人资源视频网站免费| 九九九九九九精品| 日韩欧美在线电影| 欧美在线播放一区| 日韩一级大片| 91福利视频导航| 日本成人三级| 国内成+人亚洲| 久久精品天堂| 欧美aaaaa喷水| 国内精品美女在线观看| 欧美中文字幕| 久久久久久久有限公司| 欧美一区二区三区在线免费观看| 亚洲第一黄网| 精品久久久久久亚洲| 欧美区一区二| 91视频最新| 欧美一区亚洲二区| 国产精品免费在线|