本文是學習大型分布式**架構的技術總結。對架構乙個高效能,高可用,可伸縮,可擴充套件的分布式**進行了概要性描述,並給出乙個架構參考。一部分為讀書筆記,一部分是個人經驗總結。對大型分布式**架構有很好的參考價值。
#1 大型**的特點#
#2 大型**架構目標#
#3 大型**架構模式#
#4 高效能架構# 以使用者為中心,提供快速的網頁訪問體驗。主要引數有較短的響應時間,較大的併發處理能力,較高的吞吐量,穩定的效能引數。可分為前端優化,應用層優化,**層優化,儲存層優化
。
#5 高可用架構# 大型**應該在任何時候都可以正常訪問。正常提供對外服務。因為大型**的複雜性,分布式,廉價伺服器,開源資料庫,作業系統等特點。要保證高可用是很困難的,也就是說**的故障是不可避免的。
如何提高可用性,就是需要迫切解決的問題。首先,需要從架構級別,在規劃的時候,就考慮可用性。行業內一般用幾個9表示可用性指標。比如四個9(99.99),一年內允許的不可用時間是53分鐘。
不同層級使用的策略不同,一般採用冗餘備份和失效轉移解決高可用問題。
#6 可伸縮架構# 伸縮性是指在不改變原有架構設計的基礎上,通過新增/減少硬體(伺服器)的方式,提高/降低系統的處理能力。
#7 可擴充套件架構# 可以方便的進行功能模組的新增/移除,提供**/模組級別良好的可擴充套件性。
#8 安全架構# 對已知問題有有效的解決方案,對未知/潛在問題建立發現和防禦機制。對於安全問題,首先要提高安全意識,建立乙個安全的有效機制,從政策層面,組織層面進行保障。比如伺服器密碼不能洩露,密碼每月更新,並且三次內不能重複;每週安全掃瞄等。以制度化的方式,加強安全體系的建設。同時,需要注意與安全有關的各個環節。安全問題不容忽視。包括基礎設施安全,應用系統安全,資料保密安全等。
#9 敏捷性# **的架構設計,運維管理要適應變化,提供高伸縮性,高擴充套件性。方便的應對快速的業務發展,突增高流量訪問等要求。
除上面介紹的架構要素外,還需要引入敏捷管理,敏捷開發的思想。使業務,產品,技術,運維統一起來,隨需應變,快速響應。
#10 大型架構舉例#
以上採用七層邏輯架構,第一層客戶層,第二層前端優化層,第三層應用層,第四層服務層,第五層資料儲存層,第六層大資料儲存層,第七層大資料處理層。
前端層:使用dns負載均衡,cdn本地加速以及反向**服務;
應用層:**應用集群;按照業務進行垂直拆分,比如商品應用,會員中心等;
服務層:提供公用服務,比如使用者服務,訂單服務,支付服務等;
資料層:支援關係型資料庫集群(支援讀寫分離),nosql集群,分布式檔案系統集群;以及分布式cache;
大資料儲存層:支援應用層和服務層的日誌資料收集,關聯式資料庫和nosql資料庫的結構化和半結構化資料收集;
大資料處理層:通過mapreduce進行離線資料分析或storm實時資料分析,並將處理後的資料存入關係型資料庫。(實際使用中,離線資料和實時資料會按照業務要求進行分類處理,並存入不同的資料庫中,**用層或服務層使用)。
高效能 高可用快取架構
此處架構圖,後續有時間補上 nginx 分發層 應用層 流量分發策略 openresty nginx lua nginx 本地快取 redis 快取 tomcat堆快取 針對庫存此類時效性要求高的資料,採用 快取 資料庫 雙寫方案,實時更新快取資料 快取 資料庫雙寫 容易發生資料不一致問題,可採用記...
高效能,高可用,安全的架構
高效能 rt reponse time 時間 高可用 任何時候專案都必須可用 可公升縮 大促,流量瞬間增大 可擴充套件 開發角度 新需求進行迭代 擴充套件 安全性 網路安全,硬體安全,軟體安全 敏捷性 可持續交付,可持續部署 什麼是高效能?較短的響應時間 較大的併發處理能力 較高的吞吐量與穩定的效能...
高可用,高併發,高效能
高併發 是網際網路分布式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時並行處理很多請求。高併發相關常用的一些指標有響應時間 response time 吞吐量 throughput 每秒查詢率qps query per second 併發使用者數等。吞吐量 單位時間內處理的請...