国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

分布式部署問題,僅問作者代碼

admin

手冊(cè)中寫刀,阿里云等這些,通過彈性公網(wǎng)IP 轉(zhuǎn)發(fā)到ECS上的云服務(wù)器,是沒有辦法進(jìn)行 公網(wǎng)分布式部署的,因?yàn)?/p>

當(dāng)gateway啟動(dòng)時(shí)候,會(huì)執(zhí)行
// 注冊(cè) gateway 的內(nèi)部通訊地址,worker 去連這個(gè)地址,以便 gateway 與 worker 之間建立起 TCP 長(zhǎng)連接

  public function onWorkerstart(){
  //每個(gè)進(jìn)程執(zhí)行一次
         $this->registerAddress();
 }

我看到,register收到的gateway的ip:port 主要是來自于 gateway自己定義的$address 地址。

這個(gè)address地址被register保存后,boardcast廣播給businessworker,然后businessworker去連接 $address地址,

 public function registerAddress()
    {
        $address = $this->lanIp . ':' . $this->lanPort;
        foreach ($this->registerAddress as $register_address) {
            $register_connection = new AsyncTcpConnection("text://{$register_address}");
            $secret_key = $this->secretKey;
            $register_connection->onConnect = function($register_connection) use ($address, $secret_key, $register_address){
                $register_connection->send('{"event":"gateway_connect", "address":"' . $address . '", "secret_key":"' . $secret_key . '"}');
                // 如果Register服務(wù)器不在本地服務(wù)器,則需要保持心跳
                if (strpos($register_address, '127.0.0.1') !== 0) {
                    $register_connection->ping_timer = Timer::add(self::PERSISTENCE_CONNECTION_PING_INTERVAL, function () use ($register_connection) {
                        $register_connection->send('{"event":"ping"}');
                    });
                }
            };
            $register_connection->onClose = function ($register_connection) {
                if(!empty($register_connection->ping_timer)) {
                    Timer::del($register_connection->ping_timer);
                }
                $register_connection->reconnect(1);
            };
            $register_connection->connect();
        }

這個(gè)address地址用在onWorkerStart中開啟內(nèi)部監(jiān)聽business連接過來的服務(wù),并且也是用這個(gè)地址監(jiān)聽,


        // 初始化 gateway 內(nèi)部的監(jiān)聽,用于監(jiān)聽 worker 的連接已經(jīng)連接上發(fā)來的數(shù)據(jù)
        $this->_innerTcpWorker = new Worker("GatewayProtocol://{$this->lanIp}:{$this->lanPort}");
        $this->_innerTcpWorker->reusePort = false;
        $this->_innerTcpWorker->listen();
        $this->_innerTcpWorker->name = 'GatewayInnerWorker';

所以 我覺得,能不能讓onWorkerStart中 監(jiān)聽的lanip改為0.0.0.0固定,然后lanip變量參數(shù)僅僅用于告訴register 有關(guān) 本gateway的連接地址,這樣不就可以讓 阿里云。騰訊云也支持公網(wǎng)分部署了嘛

2130 2 0
2個(gè)回答

walkor 打賞

對(duì),更簡(jiǎn)單的方法,判斷l(xiāng)anip如果是公網(wǎng)ip,_innerTcpWorker 直接監(jiān)聽0.0.0.0,其它不變。這樣騰訊云 阿里云應(yīng)該就能公網(wǎng)分布式部署了。

  • admin 2021-12-22

    那為啥 您的源代碼要這樣寫呢?為啥要故意 閹割(云服務(wù)器)公網(wǎng)分布式部署的能力呢

  • admin 2021-12-22

    是不是有什么其他考慮呢

  • walkor 2021-12-22

    這個(gè)框架幾年前的,當(dāng)時(shí)云廠商都是經(jīng)典網(wǎng)絡(luò),沒問題。后面云廠商改成專用網(wǎng)絡(luò)了,這里就有問題了。你有興趣可以提pr。

walkor 打賞

已經(jīng)合并了 adminv 的pr。
需要公網(wǎng)分布式部署或者跨公網(wǎng)使用GatewayClient的同學(xué)請(qǐng)更新GatewayWorker 到 v3.0.22 或則后續(xù)更高版本

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??