<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # GoogleTalk 架構 > 原文: [http://highscalability.com/blog/2007/7/23/googletalk-architecture.html](http://highscalability.com/blog/2007/7/23/googletalk-architecture.html) Google Talk 是 Google 的即時通訊服務。 有趣的是,IM 消息并不是主要的體系結構挑戰,處理用戶在場指示將主導設計。 他們還面臨著處理小的低延遲消息并與許多其他系統集成的挑戰。 他們是如何做到的呢? 網站:http://www.google.com/talk ## 信息來源 * [GoogleTalk Architecture](http://video.google.com/videoplay?docid=6202268628085731280) ## 平臺 * 的 Linux* 爪哇* Google Stack* Shard ## 里面有什么? ### 統計資料 * 支持數百萬用戶的狀態和消息。* 每天在 100 毫秒內處理數十億個數據包。* IM 與許多其他應用程序不同,因為請求是小的數據包。* 路由和應用邏輯適用于每個數據包的發送方和接收方。* 消息必須按順序傳遞。* Architecture extends to new clients and Google services. ## 得到教訓 * 衡量正確的事情。 -人們問您要交付多少 IM 或有多少活躍用戶。 事實證明這不是正確的工程問題。 -IM 的難點是,由于增長是非線性的,因此如何向所有連接的用戶顯示正確的狀態:ConnectedUsers * BuddyListSize * OnlineStateChanges -線性用戶的增長可能意味著非常非線性的服務器增長,需要服務 每天有數十億個狀態數據包。 -擁有大量的朋友,在線人數激增。 IM 的數量不是 的大問題。 * 實際負載測試 -實驗室測試雖然不錯,但告訴您的信息還不夠。 -在實際產品發布之前進行了后端發布。 -模擬狀態請求,并在線和離線運行數周 和幾個月,即使未返回真實數據也是如此。 它可以解決網絡,故障轉移等方面的許多 問題。 * 動態重新分片 -在分片上劃分用戶數據或加載。 -Google Talk 后端服務器處理一部分用戶的流量。 -零停機時間輕松更改分片數量。 -不要跨數據中心分片。 嘗試使用戶保持本地狀態。 -服務器可以關閉服務器,而備份可以接管。 然后,您可以啟動新服務器并自動遷移數據,并且客戶端會自動檢測并轉到新服務器。 * 添加抽象以隱藏系統復雜性 -不同的系統應該彼此之間幾乎一無所知,尤其是當各個小組一起工作時。 -Gmail 和 Orkut 不知道分片,負載平衡或故障轉移,數據中心架構或服務器數量。 可以隨時更改,而無需級聯整個系統的更改。 -將這些復雜性抽象到一組在運行時發現的網關。 -RPC 基礎結構應處理重新路由。 * 了解下層庫的語義 -一切都是抽象的,但是您仍然必須對它們如何工作以構建系統有足夠的了解。 -您的 RPC 是否創建到所有或某些服務器的 TCP 連接? 含義截然不同。 -磁帶庫性能是否正常檢查? 這是體系結構的含義,因為您可以使單獨的系統獨立發生故障。 -您應該使用哪個內核操作? IM 需要大量的連接,但幾乎沒有任何活動。 使用 epoll 與民意測驗/選擇。 * 再次保護操作問題 -消除服務器活動圖中的所有分支。 -服務器在使用空緩存重新啟動時會發生什么? -如果流量轉移到新的數據中心會怎樣? -限制級聯問題。 從繁忙的服務器返回。 生病時不接受工作。 -隔離緊急情況。 不要讓您的問題感染他人。 -提取智能重試邏輯策略。 例如,不要坐在 1 毫秒的重試循環中。 * 任何可擴展系統都是分布式系統 -為系統的每個組件添加容錯功能。 一切都失敗了。 -增加了在不影響服務器的情況下分析活動服務器的功能。 允許持續改進。 -從服務器收集指標以進行監視。 記錄有關系統的所有內容,以便查看因果模式。 -端到端記錄,因此您可以在所有計算機上從頭到尾重構整個操作。 * 軟件開發策略 -確保二進制文件既向后又向前兼容,以便您可以讓舊客戶端使用新代碼。 -建立實驗框架以嘗試新功能。 -使工程師可以使用產品機器。 賦予端到端所有權。 這與許多在其數據中心中擁有完全獨立的 OP 團隊的公司截然不同。 通常,開發人員無法接觸生產機器。 嗨,您好, 我認識了 yahoo IM 團隊的成員,而且開發人員還可以維護生產服務器。 Google:開發人員還能維護搜索,Gmail 和其他產品的生產服務器嗎? BR, ?A 我從不厭倦研究 IM 協議,但是我一直認為狀態包太小(可能只有幾個字節),以致它們產生的流量完全少于確切的消息...現在我開始思考 是錯誤的,將在信息來源中觀看該視頻。 附注:我想知道我是否會停止不斷在此網站上找到有趣的帖子……真的很棒! 當他們進入市場時,他們要晚于 msn 和 yahoo,但他們必須做很多工作才能將自己推向市場。 ----- [http://underwaterseaplants.awardspace.com“](<a rel=) >海洋植物 [http://underwaterseaplants.awardspace.com/seagrapes.htm“](<a rel=) >海葡萄... [http://underwaterseaplants.awardspace.com/seaweed .htm”](<a rel=) >海藻
                  <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>

                              哎呀哎呀视频在线观看