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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 堆棧溢出體系結構更新-現在每月有 9500 萬頁面瀏覽量 > 原文: [http://highscalability.com/blog/2011/3/3/stack-overflow-architecture-update-now-at-95-million-page-vi.html](http://highscalability.com/blog/2011/3/3/stack-overflow-architecture-update-now-at-95-million-page-vi.html) ![](https://img.kancloud.cn/cf/ab/cfab7bd4e70e5d75fa0490b3d1cdfb08_200x56.png) 自從我的第一篇關于 [Stack Overflow Architecture](/blog/2009/8/5/stack-overflow-architecture.html) 的文章以來發生了很多事情。 與上一篇文章的主題相反,該主題引起了人們對 Stack Overflow 致力于擴大規模戰略的關注,但在過去的幾年中,Stack Overflow 不斷發展壯大。 Stack Overflow 的規模增長了兩倍以上,超過 1600 萬用戶,其頁面瀏覽量幾乎翻了六倍,達到每月 9500 萬頁面瀏覽量。 堆棧溢出通過擴展到[堆棧交換網絡](http://stackexchange.com/)而得以發展,該網絡包括堆棧溢出,服務器故障和超級用戶(總共 43 個不同站點)。 進行著很多富有成果的乘法。 不變的是,Stack Overflow 對他們正在做的事情持開放態度。 這就是促使進行此更新的原因。 最近的一系列帖子討論了他們如何處理增長問題:[堆棧交換的體系結構以[項目符號]](http://blog.serverfault.com/post/stack-exchanges-architecture-in-bullet-points/) , [Stack Overflow 的紐約數據中心](http://blog.serverfault.com/2010/10/29/1432571770/),[為可伸縮性而設計 管理和容錯](http://blog.serverfault.com/post/1097492931/),[堆棧溢出搜索-現在](http://blog.stackoverflow.com/2011/01/stack-overflow-search-now-81-less-crappy/),[堆棧溢出網絡配置](http://blog.stackoverflow.com/2010/01/stack-overflow-network-configuration/),[減少 81%StackOverflow 是否使用緩存?如果使用緩存,如何使用緩存?](http://meta.stackoverflow.com/questions/69164/does-stackoverflow-use-caching-and-if-so-how) ,[哪些工具和技術構建了堆棧交換網絡?](http://meta.stackoverflow.com/questions/10369/which-tools-and-technologies-build-the-stack-exchange-network) 。 跨時間的一些更明顯的差異是: * **更多**。 更多用戶,更多頁面視圖,更多數據中心,更多站點,更多開發人員,更多操作系統,更多數據庫,更多機器。 的數量更多。 * **Linux** 。 堆棧溢出以其 Windows 堆棧而聞名,現在他們將更多的 Linux 機器用于 HAProxy,Redis,Bacula,Nagios,日志和路由器。 所有支持功能似乎都由 Linux 處理,這需要開發[并行發布過程](http://blog.serverfault.com/post/1097492931/)。 * **容錯**。 現在,堆棧溢出(HTG2)由兩個不同 Internet 連接上的兩個不同交換機提供服務,它們添加了冗余計算機,并且某些功能已移至另一個數據中心。 * **NoSQL** 。 Redis 現在用作整個網絡的[緩存層](http://meta.stackoverflow.com/questions/69164/does-stackoverflow-use-caching-and-if-so-how)。 之前沒有單獨的緩存層,所以這是一個很大的變化,就像在 Linux 上使用 NoSQL 數據庫一樣。 不幸的是,我找不到關于我上次遇到的一些未解決問題的報道,例如它們將如何處理這么多不同屬性的多租戶,但仍然有很多值得學習的地方。 這里匯總了一些不同的來源: ### 統計資料 * 每月 9500 萬頁面瀏覽量 * 每秒 800 個 HTTP 請求 * 180 個 DNS 請求每秒 * 每秒 55 兆位 * 1600 萬用戶-流量向堆棧溢出的流量在 2010 年增長了 131%,達到每月 1,660 萬全球唯一身份用戶。 ### 數據中心 * 1 個帶有 Peak Internet 的機架(或)(托管我們的聊天和數據資源管理器) * 2 個在紐約擁有對等 1 的機架(托管其余的 Stack Exchange Network) ### 硬件 * 10 臺 Dell R610 IIS Web 服務器(其中 3 臺專用于堆棧溢出): * 1 個 Intel Xeon 處理器 E5640 @ 2.66 GHz 四核,帶 8 個線程 * 16 GB RAM * Windows Server 2008 R2 * 2 臺 Dell R710 數據庫服務器: * 2 個 Intel Xeon 處理器 X5680 @ 3.33 GHz * 64 GB 內存 * 8 錠 * SQL Server 2008 R2 * 2 臺 Dell R610 HAProxy 服務器: * 1 個 Intel Xeon 處理器 E5640 @ 2.66 GHz * 4 GB 內存 * Ubuntu 服務器 * 2 臺 Dell R610 Redis 服務器: * 2 個 Intel Xeon 處理器 E5640 @ 2.66 GHz * 16 GB RAM * CentOS 的 * 1 臺運行 Bacula 的 Dell R610 Linux 備份服務器: * 1 個 Intel Xeon 處理器 E5640 @ 2.66 GHz * 32 GB 內存 * 1 臺用于 Nagios 和日志的 Dell R610 Linux 管理服務器: * 1 個 Intel Xeon 處理器 E5640 @ 2.66 GHz * 32 GB 內存 * 2 個 Dell R610 VMWare ESXi 域控制器: * 1 個 Intel Xeon 處理器 E5640 @ 2.66 GHz * 16 GB RAM * 2 個 Linux 路由器 * 5 個 Dell Power Connect 交換機 ### 開發工具 * **C#**:語言 * **Visual Studio 2010 Team Suite** : IDE * **Microsoft ASP.NET(4.0 版)** :框架 * **ASP.NET MVC 3** : Web 框架 * **剃刀** :視圖引擎 * **jQuery 1.4.2** :瀏覽器框架: * **LINQ to SQL,一些原始 SQL** :數據訪問層 * **水銀和窯** :源代碼管理 * **Beyond Compare 3** :比較工具 ### 使用的軟件和技術 * 堆棧溢出通過 [BizSpark](http://blog.stackoverflow.com/2009/03/stack-overflow-and-bizspark/) 使用 [WISC](http://stackoverflow.com/questions/177901/what-does-wisc-stack-mean) 堆棧 * **Windows Server 2008 R2 x64** :操作系統 * **運行 **Microsoft Windows Server 2008 Enterprise Edition x64** 的 SQL Server 2008 R2** :數據庫 * Ubuntu 服務器 * CentOS 的 * **IIS 7.0** :Web 服務器 * **HAProxy** :用于負載均衡 * **Redis** :用作分布式緩存層。 * **CruiseControl.NET** :用于構建和自動部署 * **Lucene.NET** :進行搜索 * **Bacula** :用于備份 * **Nagios** :(帶有 [n2rrd](http://n2rrd.diglinks.com/cgi-bin/trac.fcgi) 和 drraw 插件)用于監視 * **Splunk:**用于日志 * **SQL Monitor:來自 Red Gate 的**-用于 SQL Server 監視 * **綁定**:用于 DNS * **[Rovio](http://www.wowwee.com/en/products/tech/telepresence/rovio/rovio)** :一個小機器人(真正的機器人),允許遠程開發人員“虛擬地”訪問辦公室。 * **Pingdom** :外部監視器和警報服務。 ### 外部鉆頭 開發工具中未包含的代碼: * 驗證碼 * DotNetOpenId * WMD-現在已開發為開源。 見 github 網絡圖 * 美化 * 谷歌分析 * 巡航控制.NET * HAProxy * 仙人掌 * 降價銳利 * 美麗 * Nginx 的 * 窯 * CDN:無,所有靜態內容均由 [sstatic.net](http://sstatic.net/) 提供,這是一個快速,無 cookie 的域,用于將靜態內容傳遞給 Stack Exchange 系列網站。 ### 開發人員和系統管理員 * 14 個開發人員 * 2 個系統管理員 ### 內容 * **許可:**知識共享署名-相同方式共享份額為 2.5 * **標準:** OpenSearch,Atom * **主持人:** PEAK Internet ### 更多架構和經驗教訓 * 使用 HAProxy 而不是 Windows NLB,因為 HAProxy 便宜,簡單,免費,可通過 Hyper-V 用作網絡上的 512MB VM``設備''。 它也可以在盒子前面使用,因此對它們完全透明,并且更容易作為另一個網絡層進行故障排除,而不必與所有 Windows 配置混在一起。 * 不使用 CDN 是因為,即使像亞馬遜這樣的“便宜” CDN 相對于捆綁到現有主機計劃中的帶寬而言也非常昂貴。 根據 Amazon 的 CDN 費率和帶寬使用情況,他們每月至少可以支付 1000 美元。 * 備份到磁盤以進行快速檢索,而備份到磁帶以進行歷史存檔。 * SQL Server 中的全文本搜索集成度很差,有故障,非常不稱職,因此他們選擇了 Lucene。 * 人們對峰值 HTTP 請求數據最感興趣,因為這是他們確保可以處理的需求。 * 現在,所有屬性都在相同的 Stack Exchange 平臺上運行。 這意味著堆棧溢出,超級用戶,服務器故障,元,WebApp 和元 Web 應用都在同一軟件上運行。 * 有單獨的 StackExchange 網站,因為人們有不同的專業知識集,不應跨入不同的主題網站。 [您可以成為世界上最偉大的廚師,但這并不意味著您有資格修理服務器。](http://meta.stackoverflow.com/questions/69422/why-separate-stack-exchange-accounts) * 他們積極地緩存一切。 * 通過[輸出緩存](http://learn.iis.net/page.aspx/154/walkthrough-iis-70-output-caching/)緩存匿名用戶訪問(并隨后提供給匿名用戶)的所有頁面。 * 每個站點都有 3 個不同的緩存:本地,站點,全局。 * **本地緩存**:只能從 1 個服務器/站點對訪問 * 為了限制網絡延遲,他們使用服務器上最近設置/讀取的值的本地“ L1”緩存,基本上是 HttpRuntime.Cache。 這會將網絡上的高速緩存查找開銷減少到 0 字節。 * 包含用戶會話和未決視圖計數更新之類的內容。 * 它完全駐留在內存中,沒有網絡或數據庫訪問權限。 * **網站緩存**:單個網站的任何實例(在任何服務器上)都可以訪問 * 大多數緩存的值都在這里,諸如熱門問題 ID 列表和用戶接受率之類的例子就是很好的例子 * 它駐留在 Redis 中(在一個單獨的數據庫中,純粹是為了簡化調試) * Redis 是如此之快,以至于緩存查找最慢的部分就是花費的時間在網絡上讀寫字節。 * 將值壓縮后再將其發送到 Redis。 它們具有大量的 CPU,并且大多數數據是字符串,因此它們具有很高的壓縮率。 * 他們的 Redis 計算機上的 CPU 使用率為 0%。 * **全局緩存**:在所有站點和服務器之間共享 * 收件箱,API 使用配額和其他一些真正的全局信息都在這里 * 它位于 Redis 中(在 DB 0 中,同樣也便于調試) * 緩存中的大多數項目會在超時時間(通常為幾分鐘)后過期,并且永遠不會明確刪除。 當需要特定的緩存失效時,他們使用 [Redis 消息](http://code.google.com/p/redis/wiki/PublishSubscribe)將刪除通知發布到“ L1”緩存。 * 喬爾·斯波斯基(Joel Spolsky)不是 Microsoft 的忠實擁護者,他沒有為 Stack Overflow 做出技術決策,并且認為 Microsoft 授權存在舍入錯誤。 考慮自己已更正 [Hacker News 評論員](http://news.ycombinator.com/item?id=2284900)。 * 他們為 IO 系統[選擇了](http://blog.serverfault.com/post/our-storage-decision/) RAID 10 陣列,其中 [Intel X25 固態驅動器](http://www.intel.com/design/flash/nand/extreme/index.htm)。 RAID 陣列緩解了對可靠性的任何擔憂,并且與 FusionIO 相比,SSD 驅動器的性能確實很好,且價格便宜得多。 * 他們的 Microsoft 許可的[全船費用](http://news.ycombinator.com/item?id=2285931)約為$ 242K。 由于 Stack Overflow 使用的是 Bizspark,因此他們所支付的價格接近全價,但這是他們所能支付的最高價。 * [英特爾 NIC 正在取代 Broadcom NIC](http://blog.serverfault.com/post/broadcom-die-mutha/) 及其主要生產服務器。 這解決了他們在連接丟失,數據包丟失和 arp 表損壞時遇到的問題。 ## 相關文章 * [此帖子上的黑客新聞主題](http://news.ycombinator.com/item?id=2284900) / [Reddit 主題](http://www.reddit.com/r/programming/comments/fwpik/stackoverflow_scales_using_a_mixture_of_linux_and/) * [項目符號中的堆棧交換體系結構](http://blog.serverfault.com/post/stack-exchanges-architecture-in-bullet-points/) / [HackerNews 線程](http://news.ycombinator.com/item?id=2207789) * [Stack Overflow 的紐約數據中心](http://blog.serverfault.com/post/1432571770/)-各種計算機的硬件是什么? * [設計用于管理和容錯的可伸縮性](http://blog.serverfault.com/post/1097492931/) * [堆棧溢出博客](http://blog.stackoverflow.com/) * [堆棧溢出搜索-現在減少了 81%的廢話](http://blog.stackoverflow.com/2011/01/stack-overflow-search-now-81-less-crappy/)-Lucene 現在正在未充分利用的集群上運行。 * [2010 年堆棧狀態(您的 CEO 的來信)](http://blog.stackoverflow.com/2011/01/state-of-the-stack-2010-a-message-from-your-ceo/) * [堆棧溢出網絡配置](http://blog.stackoverflow.com/2010/01/stack-overflow-network-configuration/) * [StackOverflow 是否使用緩存?如果使用緩存,如何使用緩存?](http://meta.stackoverflow.com/questions/69164/does-stackoverflow-use-caching-and-if-so-how) * [Meta StackOverflow](http://meta.stackoverflow.com/) * [StackOverflow 如何處理緩存失效?](http://meta.stackoverflow.com/questions/6435/how-does-stackoverflow-handle-cache-invalidation) * [哪些工具和技術構建了堆棧交換網絡?](http://meta.stackoverflow.com/questions/10369/which-tools-and-technologies-build-the-stack-exchange-network) * [堆棧溢出如何處理垃圾郵件?](http://meta.stackoverflow.com/questions/2765/how-does-stack-overflow-handle-spam) * [我們的存儲決策](http://blog.serverfault.com/post/our-storage-decision/) * [如何選擇“熱門”問題?](http://meta.stackoverflow.com/questions/4766/how-are-hot-questions-selected) * [如何選擇“相關”問題?](http://meta.stackoverflow.com/questions/20473/how-are-related-questions-selected) -標題,問題正文和標簽。 * [堆棧溢出和 DVCS](http://blog.stackoverflow.com/2010/04/stack-overflow-and-dvcs/) -堆棧溢出選擇 Mercurial 進行源代碼控制。 * [服務器故障聊天室](http://chat.stackexchange.com/rooms/127/the-comms-room) * [C#Redis 客戶端](https://github.com/ServiceStack/ServiceStack.Redis) * [Broadcom,Die Mutha](http://blog.serverfault.com/post/broadcom-die-mutha/) 他們是否解釋了為什么使用 Redis 而不是 Memcached 進行緩存? 我聽說很多人使用 Redis 進行緩存,只是想知道 Redis 做什么,而 Memcached 不會呢? 如果我沒記錯的話,Redis 不是分布式數據庫,對嗎? 使用 memcached 時,如果我添加新節點,客戶端將自動重新分發緩存,以利用額外的容量。 Redis 不會那樣做。 那么,為什么要使用 Redis? > 備份到磁盤以進行快速檢索,而備份到磁帶以進行歷史存檔。 真? 人們還在這樣做嗎? 我知道一些組織在自動化的自動磁帶備份上投入了大量資金,但是說真的,一個成立于 2008 年的網站正在備份磁帶嗎? 為什么有人會在 Linux / Linux 上使用 Windows / asp? 我真的很驚訝人們仍然在做這樣的事情。 *為什么有人會在 Linux / Linux 上使用 Windows / asp? 確實讓我感到驚訝的是,人們仍然在做這樣的事情。* 因為.NET 是目前最好的開發框架之一。 而且用于網絡的 linux 便宜,因此結合起來很有意義。 @約翰 使用 Redis 或 membase 之類的東西而不是 memcached 的優點之一是可以將緩存持久化到磁盤上,這樣可以避免緩存脫機然后重新啟動時出現緩存風暴問題。 我猜我們不知道 Redis 框的配置是什么 他們是分片,進行主/從復制等嗎? 安迪 @Joe,如果您知道自己的想法,那么邏輯就很容易:Joel 是 MS Excel 團隊的成員,該團隊編寫了 VBA 和 OLE 自動化。 @Joe-這是我在該網站上看到的最不明智的評論之一。 詹姆斯:備份到磁帶意味著脫機/檔案備份。 這通常是值得的花費和麻煩,特別是對于大型重要數據集。 一兩三周后,我可以告訴您,Gmail 員工非常非常高興他們備份到磁帶上。 如果您的所有副本都在線,則總是存在一個錯誤或手指滑動同時擦拭它們的可能性。 從技術上講,IIS 7.0:Web 服務器不正確,在 Windows Server 2008R2 下,它實際上是 IIS 7.5:Web 服務器。 @Sosh-請放輕松,不要提升自己對 Microsoft 產品的支持。 在最好和最新的開源公司及其社區中運行 MS 產品沒有技術上的原因。 實際上,要真正推動這一點,StackOverflow 團隊應該在各地使用更多*付費/許可*的 ms 產品來推動其發展。 還有一種觀點認為,可以針對工作使用最佳工具組合,因此請參見此處。 答案很簡單:StackOverflow 團隊了解 MS 產品,Visual Studio,C#和.NET,因此(對于該團隊而言)交付 StackExchange 系列站點是最便宜,最快的。 ^ M 他們有明確的績效目標嗎? 他們如何在負載下監視站點性能? 對于在 HighScalability.com 上進行介紹的任何網站,這些問題似乎都是重要的問題。 是的,大多數擁有重要數據的人仍然使用磁帶。 另外,它們是 Windows,因為創始人是微軟的老家伙! **[僅使用更好的應用程序,您可以避免軟件許可和網絡硬件成本。 伺服器:](http://nbonvin.wordpress.com/2011/03/24/serving-small-static-files-which-server-to-use/ "You can avoid software license AND network hhardware costs by just using a better app. server")** 每秒服務器請求 --------------------------------------------- G-WAN Web 服務器....... 142,000 Lighttpd Web 服務器........ 60,000 Nginx Web 服務器............ 57,000 Varnish 緩存服務器....... 28,000 SQL Server 2008 R2 Standard 或 Enterprise Edition? “現在他們正在為 HAProxy Redis 使用更多的 Linux 計算機,” http://redis.io/clients Windows 上運行的 C#如何與 Linux 上的 Redis 對話?
                  <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>

                              哎呀哎呀视频在线观看