當前位置:首頁 » 文件管理 » 分布式緩存架構圖

分布式緩存架構圖

發布時間: 2025-01-31 21:19:54

Ⅰ 如何搭建大型網站系統

程序員們都希望能通過自己的努力學習,技術提升,拿到更好的收入,技術提升和高收入雖然不是輕易就能實現的,但總是有章可循。

一個成熟的大型網站(如淘寶、京東等)的系統架構並不是開始設計就具備完整的高性能、高可用、安全等特性,它總是隨著用戶量的增加,業務功能的擴展逐漸演變完善的,在這個過程中,開發模式、技術架構、設計思想也發生了很大的變化,就連技術人員也從幾個人發展到一個部門甚至一條產品線。所以成熟的系統架構是隨業務擴展而完善出來的,並不是一蹴而就;不同業務特徵的系統,會有各自的側重點,例如淘寶,要解決海量的商品信息的搜索、下單、支付,例如騰訊,要解決數億的用戶實時消息傳輸,網路它要處理海量的搜索請求,他們都有各自的業務特性,系統架構也有所不同。盡管如此我們也可以從這些不同的網站背景下,找出其中共用的技術,這些技術和手段可以廣泛運行在大型網站系統的架構中,下面就通過介紹大型網站系統的演化過程,來認識這些技術和手段。

一、最開始的網站架構

最初的架構,應散基用程序、資料庫、文件都部署在一台伺服器上,如圖:

二、應用、數據、文件分離

隨著業務的擴展,一台伺服器已經不能滿足性能需求,故將應用程序、資料庫、文件各自部署在獨立的伺服器上,並且根據伺服器的用途配置不同的硬體,達到最佳的性能效果。

三、利用緩存改善網站性能

在硬體優化性能的同時,同時也通過軟體進行性能優化,在大部分的網站系統中,都會利用緩存技術改善系統的性能,使用緩存主要源於熱點數據的存在,大部分網站訪問都遵循28原則(即80%的訪問請求,最終落在20%的數據上),所以我們可以對熱點數據進行緩存,減少這些數據的訪問路徑,提高用戶體驗。

緩存實現常見的方式是本地緩存、分布式緩存。當然還有CDN、反向代理等,這個後面再講。本地緩存,顧名思義是將數據緩存在應用伺服器本地,可以存在內存中,也可以存在文件,OSCache就是常用的本地緩存組件。本地緩存的特點是速度快,但沖薯謹因為本地空間有限所以緩存數據量也有限。分布式緩存的特點是,可以緩存海量的數據,並且擴展非常容易,在門戶類網站中常常被使用,速度按理沒有本地緩存快,常用的分布式緩存是Memcached、Redis。

四、使用集群改善應用伺服器性能

應用伺服器作為網站的入口,會承擔大量的請求,我們往往通過應用伺服器集群來分擔請求數。應用伺服器前面部署負載均衡伺服器調度用戶請求,根據分發策略將請求分發到多個應用伺服器節點。

常用的負載均衡技術硬體的有F5,價格比較貴,軟體的有LVS、Nginx、HAProxy。LVS是四層負載均衡,根據目標地址和埠選擇內部伺服器,Nginx是七層負載均衡和HAProxy支持四層、七層負載均衡,可以根據報文內容選擇內部伺服器,因此LVS分發路徑優於Nginx和HAProxy,性能要高些,而Nginx和HAProxy則更具配置性,如可以用來做動靜分離(根據請求報文特徵,選擇靜態資源伺服器還是應用伺服器)。

五、資料庫讀寫分離和分庫分表

隨著用戶量的增加,資料庫成為最大的瓶頸,改善資料庫性能常用的手段是進行讀寫分離以及分表,讀寫分離顧名思義就是將資料庫分為讀庫和寫庫,通過主備功能實現數據同步。分庫分表則分為水平切分和垂直切分,水平切換則是對一個資料庫特大的表進行拆分,例如用戶表。垂直切分則是根據業務不同來切換,如用戶業務、商品業務相關的表放在不同的資料庫中。

六、使用CDN和反向代理提高網站性能

假如我們的伺服器都部署在成都的機房,對於四川的用戶來說訪問是較快的,而對於北京的用戶訪問是較慢的,這是由於四川和北京分別屬於電信和聯通的不同發達地區,北京用戶訪問需要通過互聯路由器經過較長的路徑才能訪問到成都的伺服器,返迴路徑也一樣,所以數據傳輸時間比較長。對於這種情況,常常使用CDN解決,CDN將數據內容緩存到運營商的機房,用戶訪問時先從最近的運營商獲取數據,這樣大大減少了網路訪問的路徑。比較專業的CDN運營商有藍汛、網宿。

而反向代理,則是部署在網站的機房,當用戶請求達到時首先訪問反向代理伺服器,反向代理伺服器將緩存的數據返回給用戶,如果沒有沒有緩手冊存數據才會繼續走應用伺服器獲取,也減少了獲取數據的成本。反向代理有Squid,Nginx。

七、使用分布式文件系統

用戶一天天增加,業務量越來越大,產生的文件越來越多,單台的文件伺服器已經不能滿足需求。需要分布式的文件系統支撐。常用的分布式文件系統有NFS。

八、使用Nosql和搜索引擎

對於海量數據的查詢,我們使用nosql資料庫加上搜索引擎可以達到更好的性能。並不是所有的數據都要放在關系型數據中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。

九、將應用伺服器進行業務拆分

隨著業務進一步擴展,應用程序變得非常臃腫,這時我們需要將應用程序進行業務拆分,如網路分為新聞、網頁、圖片等業務。每個業務應用負責相對獨立的業務運作。業務之間通過消息進行通信或者同享資料庫來實現。

十、搭建分布式服務

這時我們發現各個業務應用都會使用到一些基本的業務服務,例如用戶服務、訂單服務、支付服務、安全服務,這些服務是支撐各業務應用的基本要素。我們將這些服務抽取出來利用分部式服務框架搭建分布式服務。淘寶的Dubbo是一個不錯的選擇。

大型網站的架構是根據業務需求不斷完善的,根據不同的業務特徵會做特定的設計和考慮,本文只是講述一個常規大型網站會涉及的一些技術和手段。

如果你還有這些疑問,成熟的網站架構師需要學什麼核心技能?java程序員如何晉升為互聯網架構師?Java語言在架構搭建中扮演什麼角色?怎樣成為年收入幾十萬的架構師?歡迎來電來訪昌平北大青鳥java培訓。

Ⅱ chcahe 如何保證分布式緩存數據一致性

VPLEX的技術核心是「分布式緩存一致性」,下圖則是「分布式緩存一致性」技術的工作機制示意:正是因為這項核心技術優勢,使得VPLEX方案和目前所有廠商的虛擬化方案截然不同,並能夠實現異地的數據中心整合。對跨數據中心的所有負載實現跨引擎的平攤或者實時遷移,來自任何一個主機的I/O請求可以通過任何一個引擎得到響應。
緩存一致性的記錄目錄使用少量的元數據,記錄下哪個數據塊屬於哪個引擎更新的,以及在何時更新過,並通過4K大小的數據塊告訴在集群中的所有其他的引擎。在整個過程中實際發生的溝通過程,遠遠比實際上正在更新數據塊少很多。

分布式緩存一致性數據流示意圖:上方是一個目錄,記錄下左側的主機讀取緩存A的操作,並分發給所有引擎,右側主機需要讀取該數據塊時,會先通過目錄查詢,確定該數據塊所屬的引擎位置,讀取請求會直接發送給引擎,並直接從數據塊所在的緩存上讀取。
當一個讀請求進入時,VPLEX會自動檢查目錄,查找該數據塊所屬的引擎,一旦確定該數據塊所屬的引擎位置,讀的請求會直接發送給該引擎。一旦一個寫入動作完成,並且目錄表被修改,這時另一個讀請求從另一個引擎過來,VPLEX會檢查目錄,並且直接從該引擎的緩存上讀取。如果該數據仍然在緩存上,則完全沒必要去磁碟上讀取。
如上圖,來自圖中左側主機的操作,由Cache A服務,會記錄一個更新狀態,並分發給所有所有引擎知道。如果讀取的需求來自最右側的伺服器,首先通過目錄查詢。通過這種技術可以實現所有引擎一致性工作,而且這個技術不僅可以跨引擎還可以跨VPLEX集群,而VPLEX集群可以跨區域,因此緩存一致性也可以跨區域部署。

分布式緩存一致性技術使VPLEX相比傳統的虛擬化方案擁有更高的性能和可靠性,並實現異地數據中心的虛擬化整合
對傳統的虛擬化架構來說,如果虛擬化的I/O集群中有一個節點壞了,那麼性能就會降低一半,而且實際情況降低不止一半。因為壞了一個節點,這個節點緩存一般會被寫進去。因為沒有緩存,操作會直接寫到硬碟里。如果圖中中心這個節點壞掉,那主機所有的可用性都沒有了。而VPLEX如果有一個引擎或者一個控制器壞掉了,那這個引擎的負載會均攤到其他活動引擎上。這樣總體來講用戶可以維持可預知性能,性能降低也不那麼明顯。

熱點內容
sd卡演算法 發布:2025-01-31 23:36:43 瀏覽:362
php讀取zip 發布:2025-01-31 23:35:33 瀏覽:644
加密機升級 發布:2025-01-31 23:34:59 瀏覽:366
php倒敘 發布:2025-01-31 23:28:43 瀏覽:435
為什麼要在中衛布局伺服器 發布:2025-01-31 23:05:47 瀏覽:867
安卓快手極速版在哪裡填寫邀請碼 發布:2025-01-31 22:59:36 瀏覽:320
如何讓給文件夾設置密碼查看 發布:2025-01-31 22:49:07 瀏覽:3
配置動態路由協議配錯了怎麼改 發布:2025-01-31 22:49:07 瀏覽:78
掃行程碼為什麼需要支付密碼 發布:2025-01-31 22:47:08 瀏覽:739
什麼樣的配置能玩地平線4 發布:2025-01-31 22:44:05 瀏覽:242