您好,登錄后才能下訂單哦!
本篇內容主要講解“數據庫軟件架構演進分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“數據庫軟件架構演進分析”吧!
應用服務、數據庫、文件服務所有資源都放在一臺服務器上。
隨著系統訪問量的再度增加,應用服務的機器壓力在高峰期會上升到比較高,這時候就開始考慮增加一臺應用服務器所以開始把應用服務,數據庫,文件服務分布部署在獨立的資源上。
再隨著系統訪問特點出現了二八定律,80%的業務訪問集中在20%的數據上,這時候需要使用本地緩存數據,遠程分布式緩存數據,提高訪問數據速度,但是緩存的數據量有限,同時存在與應用服務爭用內存的情況。這樣數據庫中訪問較集中的一小部分數據存儲在緩存服務器中,建設數據庫的訪問次數,降低數據庫的訪問壓力。
再之后做完數據庫的分庫分表后,數據庫的壓力已經降低了,業務不斷成熟又開始每天看訪問量暴增,發現用戶訪問系統越來越慢,這時候就發現數據庫壓力一切正常,應用服務后臺阻塞了很多服務請求,應用服務器對每個請求也是比較快的,原因是請求的數量太高了,導致請求都在排隊等待,響應速度變慢了。這樣開始使用多臺服務器通過負載均衡同時向外部提供服務,解決單臺服務器處理能力和存儲空間上限的問題。使用集群解決系統高并發,海量數據問題。通過向集群中追加資源,提升系統的并發處理能力,使得服務器的負載壓力不再成為整個系統的瓶頸。
系統訪問量高速增長后,慢慢發現系統又開始變慢了,發現數據庫寫入、更新的這些操作部分,數據庫連接的資源競爭激烈,導致系統變慢。我們需要引入主備部署。把數據庫劃分成讀庫和寫庫,通過引入主從數據庫服務,讀和寫操作在不同的數據庫服務處理,讀庫可以有多個,通過同步機制把寫庫的數據同步到讀庫,對于需要查詢最新寫入數據場景,可以通過在緩存中多寫一份,通過緩存獲取最新數據。
采用CDN和反向代理加速系統的訪問速度,為了應付復雜的網絡環境和不同地區用戶訪問,通過CDN和反向代理加快用戶訪問的速度,通過減輕后端服務器的負載壓力。CDN和反向代理都是緩存靜態資源。
隨著系統的不斷運行,數據量開始大幅度增長,這時候發現分庫后查詢仍然會有些慢,于是數據庫采用分布式,文件系統也采用分布式。因為單一服務都滿足不了大型系統用戶量和業務持續增長的需求,數據庫的讀寫分離也隨著業務發展最終也無法滿足需求,需要使用分布式數據庫以及分布式文件系統來支撐。常見數據庫拆分手段是業務分庫,根據不同的業務部署在不同的服務器上。
隨著業務越來越復雜,對數據存儲和檢索的需求也越來越復雜,系統需要采用一些非關系型數據庫(NOSQL,搜索引擎)來實現。應用服務通過統一數據訪問模塊訪問各種數據,減輕應用服務管理諸多數據源的麻煩。
系統按照業務進行拆分改造,應用服務器按照業務區分進行分別部署。為了應用日益復雜的業務場景,通常使用分而治之的手段將整個系統業務分廠不同的產品線,應用之間通過連接建立關系,也可以通過消息進行數據分發,通過訪問同一個數據存儲來構建一個關聯的完整系統。通過縱向拆分應用服務,將一個大應用拆分為多個小應用,如果新的業務較為獨立,那么就直接將其設計部署為一個獨立的web應用系統,通過梳理業務,將較少相關的業務剝離出來即可。通過橫向拆分,將復用的業務拆分出來,獨立部署為分布式服務,新增業務只需要調用這些分布式服務,需要識別出可以復用的業務,設計服務接口,規范服務依賴關系。
公共的應用模塊被提取出來,部署在分布式服務器上供應用服務調用。隨著業務越拆越小,應用系統整體復雜程度指數級別上升,由于所有應用要和所有的數據庫連接,最終導致數據庫連接資源又不足了,拒絕服務訪問。當服務越來越多,服務URL配置管理變得非常困難,負載均衡器的單節點壓力越來越大。
當進一步發展,服務間依賴關系變得錯中復雜,甚至分不清哪個應用要在哪個應用之前啟動,架構師也不能完整描述應用的架構關系。 服務的調用量越來越大,服務的容量問題暴露,每個服務需要多少臺機器支撐,什么時候應該加機器。 服務多了,溝通成本也開始上升,調用某個服務失敗該找誰,服務的參數都有什么約定。 一個服務有多個業務消費者,如果確保服務質量,隨著服務的不停升級,總有些意想不到的事情發生,比如cache寫錯了導致內存溢出,故障不可避免,每次核心服務一掛,影響一大片,如何控制故障的影響面,服務是否可以功能降級或者資源劣化。針對以上問題,微服務架構可以一定程度解決。
到此,相信大家對“數據庫軟件架構演進分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。