概述
分離,又隔離,目地是将系統或者資源分隔開。
系統隔離的目的:在系統發生故障時,限定傳播和影響範圍,不至于出現雪崩效應,保證其他服務的可用性。
資源隔離,通過隔離來減少資源競争,保障服務間不相關影響,提高性能等。
技術
常見的分離(隔離)技術包括:
讀寫分離
常見于資料庫和緩存系統。
對于資料庫而言,當單表資料量多大時,會采用主從叢集模式部署,
對于緩存系統而言,當請求量過高或者緩存資料過高時,需要做讀寫分離部署,
線程隔離
主要是指線程池隔離,請求分類,交給不同的線程池處理。一般把業務邏輯分為核心業務和非核心業務,分别配置不同的線程池,非核心業務的問題不影響核心業務。
程序隔離
程序隔離是為保護作業系統中程序互不幹擾而設計的一組不同硬體和軟體的技術。百度百科
程序的隔離實作,使用虛拟位址空間。程序A的虛拟位址和程序B的虛拟位址不同,這樣就防止程序A将資料資訊寫入程序B。
IPC,程序間通信,Inter-Process Communication,指至少兩個程序或線程間傳送資料或信号的一些技術或方法。
參考程序、線程和協程的差別與聯系
環境隔離
一般公司都會将應用、資料庫、配置、等資源按照環境隔離,確定互相直接不産生影響。
環境包括:生産PROD,開發DEV,測試FAT,UAT、壓測;
動靜分離
常用于前端技術。
靜态頁面,是指網際網路架構中,幾乎不變的頁面(或變化頻率很低),如:首頁等html頁面、js/css等樣式檔案、jpg/apk等資源檔案。這些靜态資源一般配套使用如下技術來加速通路:
- CDN
- Nginx
- squid/varnish
動态頁面,指不同使用者不同場景通路,展現都不一樣的頁面。一般用分層、服務化、資料庫/緩存等架構。
動靜分離指,靜态頁面與動态頁面分開不同系統通路的架構設計方法。一般來說:
- 靜态頁面通路路徑短,通路速度快,幾毫秒
- 動态頁面通路路徑長,通路速度相對較慢(資料庫的通路,網絡傳輸,業務邏輯計算),幾十毫秒甚至幾百毫秒,對架構擴充性的要求更高
- 靜态頁面與動态頁面以不同域名區分
頁面靜态化
頁面靜态化:将原本需要動态生成的站點提前生成好,使用靜态頁面加速技術來通路的技術。
試用場景:總資料量不大,生成靜态頁面數量不多的業務。
冷熱分離
主從分離
前後端分離
關于前後端分離的背景和原因,在blogAPI文檔管理工具略有表述。
這裡再整理一遍:
- 後端實作不了複雜且完美的前端頁面和樣式
- 後端實作不了多用戶端相容
- 模版引擎技術并不是适用于所有頁面
前後端分離,可以各司其職。
但是前後端是否一定要分離,是要看具體情況判斷的。如對頁面美觀要求不高,如内部人員使用的管理平台,或者項目發展初期,人員不足,疊代要求足夠快等情況,則可以不需要前後端分離。
内外網分離
關注分離
生産/監控分離
線上/離線分離
爬蟲隔離
對于爬蟲,我們既愛且憎。愛憎的原因是來自不同爬蟲源。
叢集隔離
引入叢集的目的:解決單執行個體的單點故障。叢集隔離,則是為了将核心服務,如秒殺服務,單獨做一個叢集部署,使得秒殺服務和其他服務不互相影響。