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

gateworkerman 流程問題

oldtwo

截圖
這個圖 有些地方?jīng)]有看懂 就是 worker 進程 是怎么從多個gateway里面選擇一個 轉(zhuǎn)發(fā)給客戶端的
gateway進程 又是怎么從多個worker里面選擇一個來處理的 追源碼的時候沒有看見這里面的流程
可以用worker進程 從多個gateway 進程選擇選擇一個說明一下。

1341 1 0
1個回答

phpcreeper

題外話
大大的源碼里注釋相當人性化了,而且好多地方還都是中文注釋呢,那么明顯的實現(xiàn)說看不見不合理呀,只能說還是你源碼看的多少粗暴。

首先建議把官方手冊介紹的原理先熟讀一遍,然后咱們分享細節(jié)
http://m.wtbis.cn/doc/gateway-worker/principle.html

上面的工作做好了,且為了方便表述問題,我們做如下上下文設定

  1. 我們選定研究對象: client-7客戶端, gateway-2進程, worker-3進程
  2. 我們設定研究worker進程只返回數(shù)據(jù)給client-7客戶端

先說client和gateway通信

  1. client-7發(fā)起連接,此時所有的gateway進程受內(nèi)核調(diào)度遴選出gateway-2進程處理客戶端連接;
  2. gateway-2進程會從worker進程(向gateway-2進程)發(fā)起的所有連接中隨機的選出一個連接,然后發(fā)給我們設定的隨機worker-3進程; 注意: 一旦第一次隨機命中了,之后再收發(fā)數(shù)據(jù)的話,那還是往這個worker-3上發(fā),不過要想自主決定由哪個worker來處理也是可以的, 方案就是定制Worer::$router回調(diào)
  3. gateway-2進程會將client-7的client_id轉(zhuǎn)發(fā)給worker-2進程,重點來了: client_id中包含了內(nèi)部IP、端口以及客戶端連接ID等重要的憑證數(shù)據(jù),換句話這三個因子決定了client_id的唯一性;
  4. 還是提一下: 每個gateway進程在啟動以后,都會開啟一個相應的內(nèi)部監(jiān)聽端口;

再來說一下gateway和worker通信
當worker進程返回數(shù)據(jù)給設定的客戶端時【其實是events代理幫干的】,會根據(jù)client_id反解出相應的gateway進程的內(nèi)部IP、端口, 這樣worker-3進程自然就知道該連接哪個gateway進程了,這里自然就是我們設定的gateway-2進程。

  • liziyu 2022-05-12

    ??

  • oldtwo 2022-05-13

    1 client-7發(fā)起連接,此時所有的gateway進程受內(nèi)核調(diào)度遴選出gateway-2進程處理客戶端連接; 這個第一步 不是workerman 實現(xiàn)的嗎? 怎么變成內(nèi)核調(diào)度選出gateway-2

  • phpcreeper 2022-05-13

    workerman實現(xiàn)了多進程模型以及網(wǎng)絡IO管理,但是到底由哪個進程來處理哪個TCP連接,workerman沒有調(diào)度權(quán)【不要忘了一開始的上下文設定,若非要舉一種特例:那就是在多worker+單進程模式下,開發(fā)者還是有權(quán)決定讓哪個進程來處理哪個連接,其實想想只不過是路由到不同的端口,然后交給唯一的一個子進程處理而已,只有一個子進程干活還用遴選嗎?所以僅僅是一種特例而已】

  • oldtwo 2022-05-13

    再來說一下gateway和worker通信, 那gateway與worker通信, 從多個worker 里面選擇一個 也是內(nèi)核調(diào)度的嗎

  • phpcreeper 2022-05-13

    這種情形當然是可以從業(yè)務層面調(diào)度的【我們也知道gatewayworker框架已經(jīng)幫代勞了】,但是它和上面描述的情況根本就不是一碼事,因為此時選擇哪個worker來處理是建立在先前worker已經(jīng)連接到gateway基礎之上這個大背景下的,但是反方向過來那就又變成了只能是內(nèi)核調(diào)度,要理解這微妙的區(qū)別,必須先把誰是客戶端,誰是服務端的相對角色厘清,因為全雙工的不同方向通信手段是不盡相同的。

  • oldtwo 2022-05-13

    嗯 基本上懂了 我們選定研究對象: client-7客戶端, gateway-2進程, worker-3進程 返回時候 也是woker-3 返回到gate-way2 吧 不會換一個gateway 進程吧

  • phpcreeper 2022-05-13

    是滴,按照默認路由模型,這樣就對了

年代過于久遠,無法發(fā)表回答
??