2010-11-12 97 views
1

我很想知道Ning,SocialGo等平臺是如何設計的。不是特別關注社交網絡平臺,而是通常允許用戶構建類似網站的平臺。社交網絡平臺的體系結構

我的理解是,當用戶註冊他們得到一個子域,他們的成員可以通過它註冊和訪問該特定用戶生成的網站。我想有一個通用的數據庫結構是克隆每個用戶生成一個網站。

我想知道他們如何擴大個別網站的規模。此外,如果他們引入了新功能,他們將如何將其納入所有可用的網站?例如,需要更改數據庫結構的新功能,以及如何對所有現有的網站進行更改?

是的。我想創造類似的東西。但是我想到了所有這些複雜性。如果有人在開發這種複雜的東西方面有經驗,可以分享他們的知識,那很棒。

謝謝。

回答

3

猜測foo和bar公司的體系結構有多麼困難,但是......我的願景是:您的操作系統的虛擬化基礎安裝與您的驚人的社交應用程序捆綁在一起,與其自己的數據庫集一起預先配置,或鏈接到主/從集羣。

因此,事情是每當用戶來到並註冊一個新的socialapp克隆;您的系統通過基於您的模板創建新的虛擬機來完成這項工作。這可能需要幾秒鐘才能自動配置...以及該社交網絡是否需要擴展;只需克隆其他幾個虛擬機並將它們連接在一起即可。 vips,高速緩存,前端和成對的主從數據庫。你可以有所有的模板。

請特別注意,此虛擬機不需要是完全操作系統;你可以設法使用OpenVZ和朋友(FreeBSD Jails)等技術來構建userland。

也檢出http://www.opennebula.org

這是我的簡單2美分。我也在學習這一點。

+0

謝謝。這很有幫助。 – Steve 2010-11-18 07:46:49

0

擴展到很多用戶的網站通常不使用關係數據庫。無法將數據從關係數據庫中快速提取出來,也不可能只有一個數據副本。

我不知道他們是如何編寫他們的系統,但這裏猜測他們是如何做到的。

如果你拿臉書來說,當你打開你的頁面時,你會發現你的朋友寫在牆上和其他人牆上的東西。

這裏的要點是,當你在牆上書寫時,每個人都有一堵牆,系統也會在你所有的牆上寫下相同的信息。所以當你的朋友請求他的頁面時,所有的信息都在一個地方,很快就會返回。

在數據庫端數據庫是名稱/值對數據庫。值部分中的內容可以是不同的版本,並可以批量更新。 (向1億行的關係表添加一列可能會鎖定表格一段時間)

+0

感謝您的回答。但不是我所期望的。在Facebook中,我們創建了賬戶,但在Ning和SocialGo中,我們可以創建自己的社交網絡。我正在考慮這種架構。 – Steve 2010-11-15 07:54:23