<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ![](https://box.kancloud.cn/2305bdb7a30966fb8eca8df5e086b7d7_645x422.png) 輕量級 高性能 純Golang實現 **支持消息過期 **支持離線消息存儲 **支持單個以及多個私信推送 **支持單個Key多個訂閱者(可限制訂閱者最大人數)(批量推送私信) 心跳支持(應用心跳和tcp keepalive) **支持安全驗證(未授權用戶不能訂閱) 多協議支持(websocket,tcp) 詳細的統計信息 可拓撲的架構(支持增加和刪除comet節點,web節點,message節點) **利用Zookeeper支持故障轉移 message (消息存儲、讀寫) 主要負責消息的存儲和讀寫;接受來自comet模塊的消息進行持久化,或者接受web模塊的讀取消息請求獲取離線消息。message是可以部署多個節點來負載來自大量comet的推送壓力,比如不同的comet使用不同的message節點(節點無狀態),之后在comet也會做多message節點的負載均衡RPC調用和故障轉移(TODO)。 comet (消息排隊、推送、客戶端鏈接) 主要負責消息排隊、消息推送以及和客戶端的連接維護;整套系統依據是消息ID順序原則獲取消息(客戶端本地獲取最大的消息是1,那么之后獲取的消息就是大于1的,獲取離線消息的時候也要從上次最大消息ID來獲取),因此消息推送以后需要在comet中排隊然后發起RPC給message實現存儲。 web (節點詢問、離線消息獲取、后臺節點管理) 主要負責節點詢問,以及離線消息獲取和后臺節點管理等;節點詢問主要依據客戶端的訂閱Key一致性hash計算出連接的comet節點地址,因此海量客戶端連接的時候可以打散到多個comet來服務;另外離線消息也是通過web接口返回給客戶端的,但是消息的讀取是通過RPC發送給message模塊的,盡量的職責單一。web節點因為無狀態,可以部署多個web,來實現負載均衡和故障轉移。 thrid-part 消息存儲現在主要依賴Redis進行消息讀寫(Sorted Set),因為Sorted Set不支持int64類型的Score(我們也開發了一個支持int64 Score的分支但是因為時間原因沒有大量測試上線),之后可能會使用HBase集群代替Redis的使用,已提供更安全的離線消息存儲(TODO)。 另外使用了Zookeeper來實現的同一個comet的故障轉移,例如comet 節點1可以有一個備選節點節點2,當節點1注冊到zookeeper之后,因為機器或者其他原因宕了,這時候會在web層觸發zookeeper的選舉選中節點2來服務。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看