您好,登錄后才能下訂單哦!
使用開源軟件搭建的可擴展SNS網站mixi.jp是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Mixi目前是日本排名第三的網站,全球排名42,主要提供SNS服務:日記,群組,站內消息,評論,相冊等等,是日本最大的SNS網站。Mixi從2003年12月份開始開發,由現在它的CTO - Batara Kesuma一個人焊,焊了四個月,在2004年2月份開始上線運行。兩個月后就注冊了1w用戶,日訪問量60wPV。在隨后的一年里,用戶增長到了21w,第二年,增長到了200w。到今年四月份已經增長到370w注冊用戶,并且還在以每天1.5w人的注冊量增長。這些用戶中70%是活躍用戶(活躍用戶:三天內至少登錄一次的用戶),平均每個用戶每周在線時間為將近3個半小時。[@more@]下面我們來看它的技術架構。Mixi采用開源軟件作為架構的基礎:Linux 2.6,Apache 2.0,MySQL,Perl 5.8,memcached,Squid等等。到目前為止已經有100多臺MySQL數據庫服務器,并且在以每月10多臺的速度增長。Mixi的數據庫連接方式采用的是每次查詢都進行連接,而不是持久連接。數據庫大多數是以InnoDB方式運行。Mixi解決擴展問題主要依賴于對數據庫的切分。
首先進行垂直切分,按照表的內容將不同的表劃分到不同的數據庫中。然后是水平切分,根據用戶的ID將不同用戶的內容再劃分的不同的數據庫中,這是比較通常的做法,也很管用。劃分的關鍵還是在于應用中的實現,需要將操作封裝在在數據層,而盡量不影響業務層。當然完全不改變邏輯層也不可能,這時候最能檢驗以前的設計是否到位,如果以前設計的不錯,那創建連接的時候傳個表名,用戶ID進去差不多就解決問題了,而以前如果sql代碼到處飛,或者數據層封裝的不太好的話那就累了。
這樣做了以后并不能從根本上解決問題,尤其是對于像mixi這種SNS網站,頁面上往往需要引用大量的用戶信息,好友信息,圖片,文章信息,跨表,跨庫操作相當多。這個時候就需要發揮memcached的作用了,用大內存把這些不變的數據全都緩存起來,而當修改時就通知cache過期,這樣應用層基本上就可以解決大部分問題了,只會有很小一部分請求穿透應用層,用到數據庫。Mixi的經驗是平均每個頁面的加載時間在0.02秒左右(當然根據頁面大小情況不盡相似),可以說明這種做法是行之有效的。Mixi一共在32臺機器上有緩存服務器,每個Cache Server 2G內存,這些Cache Server與App Server裝在一起。因為Cache Server對CPU消耗不大,而有了Cache Server的支援,App Server對內存要求也不是太高,所以可以和平共處,更有效的利用資源。
圖片的處理就顯得相對簡單的多了。對于mixi而言,圖像主要有兩部分:一部分是經常要使用到的,像用戶頭像,群組的頭像等等,大概有100多GB,它們被Squid和CDN所緩存,命中率相對比較高;另一部分是用戶上傳的大量照片,它們的個體訪問量相對而言比較小,命中率也比較低,使用Cache不劃算,所以對于這些照片的策略是直接在用戶上傳的時候分發到到圖片存儲服務器上,在用戶訪問的時候直接進行訪問,當然圖片的位置需要在數據庫中進行記錄,不然找不到放在哪臺服務器上就郁悶了。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。