(大型)應用平台的基礎架構,筆記摘錄自---極客時間 李運華 從0開始學架構。
0、首先是架構模型:
1、存儲層
可以分成兩類,SQL資料庫,NoSQL資料庫。
SQL:一般使用MySQL。業務到一定規模後,需要分庫分表。這個要自動化,實力雄厚的大公司此時一般都會在 SQL 叢集上建 SQL 存儲平台,以對業務透明的形式提供資源配置設定、資料備份、遷移、容災、讀寫分離、分庫分表等一系列服務,例如淘寶的UMP (Unified MySQL Platf, rm) 系統。
NoSQL:一定規模後,同樣會有分庫分表問題。需要封裝成存儲平台,友善使用。
小檔案存儲:一般就使用開源平台,起步時使用雲平台更友善。
2、開發層(類似于底層作業系統平台)
盡量選擇問題域内成熟架構、和開發語言關聯的伺服器。
開發架構:一般和解決的業務問題、使用的開發語言關聯。例如:SSH、ThinkPHP等。公司内針對同一問題域應統一.
伺服器:web伺服器等
容器:虛拟機雖然跨平台,但并不如Docker在網際網路領域真正得到廣泛應用。
3、服務層(支撐服務,而非業務服務)
配置中心、服務中心、消息隊列(如Kafka)。
開發層+服務層 ,應該叫公共支撐或支撐服務層,有點類似于SOA中的ESB。
4、網絡層(參見高可靠性、可用性擴充設計)
a、負載均衡:保證性能和可用性。常見方案:DNS(HTTP-DNS),其實可以了解成根據IP位址hash來配置設定業務量;
Nginx、LVS等軟體均衡方案;F5等硬體方案。
b、CDN
c、多機房/多中心
5、使用者層、業務層
a、使用者管理:單點登入技術 / 第三方接入-授權登入 b、消息推送:一般用開源的 c、存儲雲、圖檔雲:針對小圖檔存儲。
6、平台技術
a、運維平台:
運維平台核心的職置分為四大塊:配置、部署、監控、應急。
運維平台的核心設計要素是 “四化”:标準化(不相同的系統,封裝成規範接口)、平台化(不同系統的不同操作盡量內建到一個運維系統,該系統就是運維平台)、自動化(自動采集、歸總、重新整理)、可視化(儀表盤)
b、測試平台:自動化、對相關的用例、資源、資料和測試管理內建到一起。
c:資料平台:采集、管理分析、應用等內建到一起。
d:管理平台:核心就是權限管理,實質是身份認證、權限控制。