成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

網(wǎng)站擴展實例:1億用戶、50億pv的Tagged架構(gòu)進化史

譯文
運維 系統(tǒng)運維 新聞
一家2004年創(chuàng)建的試水社交網(wǎng)站,經(jīng)過7年的成長和擴展,現(xiàn)在已經(jīng)擁有了1億用戶。平均50億次的pv,承擔在1000多臺服務(wù)器的網(wǎng)站架構(gòu)上。Tagged網(wǎng)站,現(xiàn)在承載了1億個用戶、1千臺服務(wù)器和50億次頁面瀏覽量。這個過程是如何實現(xiàn)的?本文中,Tagged的CTO兼聯(lián)合創(chuàng)始人 Johann Schleier-Smith 將為我們介紹。

【51CTO 8月16日外電頭條】一家2004年創(chuàng)建的試水社交網(wǎng)站,經(jīng)過7年的成長和擴展,現(xiàn)在已經(jīng)擁有了1億用戶。平均50億次的pv,承擔在1000多臺服務(wù)器的網(wǎng)站架構(gòu)上。本文將要介紹的就是這個叫Tagged的網(wǎng)站——Tagged架構(gòu)實例:1億個用戶、1千臺服務(wù)器和50億次頁面瀏覽量。下面,Tagged的CTO兼聯(lián)合創(chuàng)始人 Johann Schleier-Smith 將為我們介紹Tagged網(wǎng)站架構(gòu)的成長歷程。

自2004年以來,Tagged從一家試水社交領(lǐng)域的小不點網(wǎng)站,逐漸變成全球***的社交網(wǎng)絡(luò)之一,數(shù)百萬的成員訪問該網(wǎng)站以結(jié)交新成員,每個月的頁面瀏覽量達到50億次。這個逐步發(fā)展的歷程迫使我們Tagged不斷完善網(wǎng)站架構(gòu),最終獲得了功能異常強大的平臺。

***個階段:2004年,PHP Web應(yīng)用程序、10萬個用戶和15臺服務(wù)器

2004年,PHP Web應(yīng)用程序、10萬個用戶和15臺服務(wù)器

孵化器有著一種快速成型文化:每年通常推出兩個新概念,尋覓其中的大贏家。正是在這樣的文化中,Tagged 應(yīng)運而生。LAMP是適合這種類型的工作的自然選擇;這種工作注重靈活性和快速開發(fā)周期。當時,Java開發(fā)主要面向大企業(yè)的開發(fā)工作,Python吸引的編程員***,Perl方面的編程員又不是我們所要的那一種。我們還知道,雅虎是PHP的大力支持者;所以一旦有需要,完全有可能擴展業(yè)務(wù)規(guī)模。

我在以前的項目上運行MySQL方面有著豐富的經(jīng)歷,這讓我對這項技術(shù)愛恨交加。本著嘗試的精神,我們?yōu)門agged購買了幾份入門級Oracle許可證,看看甲骨文的技術(shù)是不是用起來更好。

值得注意的是,許多構(gòu)建的小型網(wǎng)站仍然就像早期的Tagged。具有一種簡單的美;無狀態(tài)的PHP與有狀態(tài)的Oracle之間的雙向分離正是一臺服務(wù)器中最棘手的部分,而額外的Web顯示計算能力很容易添加。

第二個階段:2005年,緩存PHP Web應(yīng)用程序、100萬個用戶和20臺服務(wù)器

2005年,緩存PHP Web應(yīng)用程序、100萬個用戶和20臺服務(wù)器

即使只有在8臺服務(wù)器的時候,Tagged的網(wǎng)站流量也要比大多數(shù)人所知道的來得多。幸運的是,分布式內(nèi)存緩存系統(tǒng)memcached帶來了兩個優(yōu)勢:既消除了90%以上的數(shù)據(jù)庫讀操作,又確保含有大量不同信息的社交網(wǎng)絡(luò)面面可以迅速顯示。

自一開始,我們的對象緩存注重顯式緩存更新,支持更簡單的技術(shù),比如刪除無效的鍵;或者根據(jù)計時器,使失效數(shù)據(jù)無效。這種方法的缺點是代碼比較復(fù)雜,但大幅減輕了數(shù)據(jù)庫負載,而且使網(wǎng)站保持快速運行,涉及經(jīng)常更新的對象時更是如此。

我們的網(wǎng)站繼續(xù)越來越復(fù)雜,在標準的社交網(wǎng)絡(luò)功能(交友、個人檔案和訊息)的基礎(chǔ)上,添加了搜索和社交發(fā)現(xiàn)等功能。我的團隊說服我使用Java來建立搜索功能,那樣我們就能得益于Lucene庫。當我們學(xué)會了讓Java順暢運行后,我有一種如釋重負的感覺;我早期用過JDK 1.0,感覺不爽,所以不大情愿使用Java,但是后來卻對這個平臺滿懷熱情。

第三個階段:2006年,數(shù)據(jù)庫擴展、1000萬個用戶和100臺服務(wù)器

2006年,數(shù)據(jù)庫擴展、1000萬個用戶和100臺服務(wù)器

此時Tagged已擁有1000萬個注冊用戶,隨時都有成千上萬個用戶在線,我們開始著手解決我一直憂心忡忡的挑戰(zhàn)。那時我們剛籌集到了一筆資金,竭力尋求發(fā)展,但是數(shù)據(jù)庫亟需添加容量。我們進行了一次又一次的緩存或SQL調(diào)整和優(yōu)化,但服務(wù)器的處理器其占用率還是會一再逼近100%大關(guān)。

向上擴展系統(tǒng)的想法是個權(quán)宜之計,但是多插座服務(wù)器硬件動輒數(shù)百萬美元,于是我們選擇了Oracle真正應(yīng)用集群RAC,該系統(tǒng)讓我們可以使用標準網(wǎng)絡(luò)系統(tǒng)來連接數(shù)量眾多的大眾化Linux主機,以構(gòu)建一個龐大的數(shù)據(jù)庫。再結(jié)合***處理器具有的優(yōu)勢,Oracle RAC的容量比我們的***臺數(shù)據(jù)庫服務(wù)器足足增加了20倍,這一點很重要,而且允許應(yīng)用程序開發(fā)人員可以繼續(xù)致力于開發(fā)新的功能特性。

Tagged通過結(jié)合來自一個龐大內(nèi)存中數(shù)據(jù)集的統(tǒng)計數(shù)字,開始提供個性化的人員匹配(people-matching)推薦服務(wù)。用PHP實現(xiàn)這一點完全不現(xiàn)實,于是Java進一步滲透到了我們的環(huán)境中。

第四個階段:2007年,數(shù)據(jù)庫拆分、5000萬個用戶和500臺服務(wù)器

2007年,數(shù)據(jù)庫拆分、5000萬個用戶和500臺服務(wù)器

毫無疑問,拆分數(shù)據(jù)庫是***有難度的任務(wù),也是在擴展Tagged方面***有成效的技術(shù)。由于在多個數(shù)據(jù)庫之間分割用戶,我們最終擁有了這種設(shè)計:在所有地方都允許我們只要添加硬件,就可以進行擴展。

我們Tagged的一條規(guī)定是,將每個表分成64個分區(qū);我們牢牢遵守這個不成文的規(guī)定,除非有著非常誘人的理由才允許有例外。只有得益于游戲玩家之間高性能受保護事務(wù)的某些游戲才在單獨的數(shù)據(jù)庫中垂直分區(qū)。

拆分現(xiàn)有的數(shù)據(jù)意味著針對數(shù)TB的數(shù)據(jù)進行復(fù)雜的轉(zhuǎn)換工作。一開始,我們每次逐個著手解決功能特性,依賴應(yīng)用程序代碼來代替連接(join),但***我們還是在應(yīng)用程序的核心部分遇到了一大批表,這些表的結(jié)合得太緊密了,這個方法行不通。于是我們編寫了生成SQL的遷移代碼,導(dǎo)出、轉(zhuǎn)換和重新裝入了數(shù)億行的數(shù)據(jù),并使用觸發(fā)器來跟蹤源系統(tǒng)上面出現(xiàn)的變化,逐漸更新目標,那樣***的同步所帶來的停運時間不到30分鐘。

擁有許多數(shù)據(jù)庫意味著擁有許多的數(shù)據(jù)庫連接。尤其是由于我們添加了更多的“社交發(fā)現(xiàn)”功能(比如我們的***項約會功能Meet Me),拆分工作可能會讓PHP不堪重負,畢竟PHP缺少甲骨文的連接池技術(shù)。為了解決這個問題,我們開發(fā)了一款Java應(yīng)用程序,負責提供運行查詢的Web服務(wù);該應(yīng)用程序還繼續(xù)提供一個非常方便的監(jiān)控點,便于輕松自如地處理數(shù)據(jù)庫故障。

第五個階段:2010年,架構(gòu)完善和擴展、8000萬個用戶和1000臺服務(wù)器

2010年,架構(gòu)完善和擴展、8000萬個用戶和1000臺服務(wù)器

這次我們把時間提前幾年。解決了關(guān)鍵的數(shù)據(jù)庫擴展性問題后,我們發(fā)現(xiàn)通過添加硬件來支持擴展相當容易。PHP和memcached繼續(xù)很好地服務(wù)于我們,支持功能特性的快速開發(fā)。

在這一段期間,擴展性方面的考量因素轉(zhuǎn)向了減少故障和應(yīng)對越來越多的易損壞部件所帶來的威脅。通過負載均衡器的運行狀況檢查和自動關(guān)閉毫無反應(yīng)的服務(wù),實現(xiàn)了針對Web層的全方位保護,避免了各種相關(guān)問題。我們在設(shè)計核心組件的架構(gòu)時還考慮到了彈性;比如說,如果memcached系統(tǒng)因連接過多而出現(xiàn)過載,那么一旦這個負擔卸下,它必須立即復(fù)原。

Java扮演了極其重要的角色,一方面歸因于Java越來越得到接受,擁有相應(yīng)專長的人也越來越多;另一方面是由于面臨的挑戰(zhàn)越來越多。為了對付垃圾郵件及其他濫用現(xiàn)象,我們的算法充分利用了龐大的共享內(nèi)存空間,還充分利用了計算密集型方法。社交游戲也得益于Java的高性能和并發(fā)控制,但面臨的代價是系統(tǒng)很復(fù)雜;現(xiàn)在不同的應(yīng)用程序池比以前多得多,有待我們加以管理。

展望未來

如今,Tagged每個月給數(shù)百萬成員帶來50億次的頁面瀏覽量。由于我們獲得了可擴展的設(shè)計,因而可以將大部分精力花在構(gòu)建能夠更好地服務(wù)于用戶的功能特性上。我們擁有開發(fā)可擴展軟件的高效工具,但我們可以設(shè)想工具會出色得多,于是目前的精力和資源主要集中于軟件庫,提高編程人員的效率和生產(chǎn)力,并且改進Stig——Stig是我們即將推出的采用開源技術(shù)的基于圖形的數(shù)據(jù)庫項目,該項目為大規(guī)模的社交網(wǎng)絡(luò)、實時服務(wù)和云應(yīng)用系統(tǒng)而設(shè)計。

原文:Tagged Architecture - Scaling To 100 Million Users, 1000 Servers, And 5 Billion Page Views

【編輯推薦】

  1. 大數(shù)據(jù)下的數(shù)據(jù)分析平臺架構(gòu)
  2. 淺析淘寶數(shù)據(jù)魔方技術(shù)架構(gòu)
  3. Stack Overflow架構(gòu)揭秘(軟硬件、人員、數(shù)字)
責任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2013-05-29 10:33:16

2011-09-01 09:34:21

架構(gòu)

2014-09-01 16:29:34

2011-12-21 16:44:00

信息圖手機進化史

2018-08-22 17:58:01

數(shù)據(jù)平臺數(shù)據(jù)倉庫架構(gòu)

2010-10-09 14:46:20

2024-09-21 10:43:15

數(shù)據(jù)技術(shù)信息

2018-03-23 12:20:25

數(shù)據(jù)中心網(wǎng)絡(luò)數(shù)據(jù)

2010-07-27 14:04:52

2011-11-03 15:25:07

Android

2011-11-29 09:54:20

Google進化史

2016-02-04 09:17:59

2023-11-27 09:23:19

2022-03-25 14:01:20

元宇宙虛擬世界進化

2013-06-24 09:18:05

2010-01-21 16:08:26

C++語言

2018-07-19 08:54:48

微服務(wù)架構(gòu)Java

2010-04-07 14:54:20

Unix操作系統(tǒng)

2018-08-23 09:33:12

2012-02-16 18:00:57

Tumblr架構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91精品在线看 | 自拍偷拍小视频 | 欧美日韩精品久久久免费观看 | 国产精品久久久乱弄 | 久久亚洲一区二区三区四区 | 中文日韩在线 | 欧美日韩在线一区二区 | 亚洲成人一二区 | 成人av网站在线观看 | 国产亚洲精品精品国产亚洲综合 | 色橹橹欧美在线观看视频高清 | 免费一二区 | 51ⅴ精品国产91久久久久久 | 亚洲精品日韩一区二区电影 | 亚洲欧美在线一区 | 亚洲午夜小视频 | 久久这里只有 | 亚洲精品9999 | 亚洲欧美日韩中文字幕一区二区三区 | 久久久九九九九 | 国产精品污www在线观看 | 亚洲一区有码 | 欧美激情视频一区二区三区在线播放 | 在线高清免费观看视频 | 国产精品毛片无码 | 欧美专区在线 | 日本精品视频在线观看 | 欧美一区不卡 | 欧美αv| 国产一区二区不卡 | 午夜在线电影网 | 区一区二在线观看 | 欧美精品一区二区三区在线 | av午夜电影| 国产你懂的在线观看 | 成人av免费在线观看 | 亚洲欧美日韩精品久久亚洲区 | 午夜精品久久久久久 | 日韩av在线播| 九九色综合 | 91久久精品一区二区三区 |