在分布式系統裡通常將程序進行資源隔離,然後在同乙個程序裡的各種業務都共享執行緒池對外提供服務,這就經常會遇到這樣的問題:分析型的負載較高,搶占了執行緒池裡的大部分執行緒資源,從而會造成事務業務的服務質量下降;或者某個業務負責較高,使其他的業務質量下降。同乙個程序內新加入乙個業務,這個業務會搶占其他業務的資源,從而造成系統的不穩定,比如業務效能抖動;難以除錯,比如同乙個程序裡的10個業務共享同乙個執行緒池,當出現故障時難以通過簡單的日誌判斷是哪個業務出了問題。因此,希望通過一種機制處理上面的問題,資源隔離的方式包括程序隔離和執行緒隔離。
1.程序隔離
程序級別隔離通常指的是容器化隔離,比如通過使用docker實現業務程序之間的資源隔離;
2. 執行緒隔離
執行緒級別隔離是指給每個跑在程序裡的業務都按業務型別建立乙個執行緒池,從而實現執行緒級別細粒度的資源隔離,執行緒隔離具有以下優勢:
•提高業務可靠性,減少業務受其他業務影響的程度,當乙個業務耗盡自身的執行緒資源後也不會影響另外乙個業務的服務質量;
•降低新加入的業務的給系統帶來的風險,比如當前系統的乙個程序用例中有10個業務。當新加入乙個業務時,必然會搶占此前10個業務的執行緒資源,從而給系統帶來不穩定,比如效能抖動;
•利於除錯,給每乙個業務都分配乙個執行緒池名稱,當業務出故障時,通過執行緒池名稱可以很方便地定位是哪個業務出了故障,並且通過監控執行緒池的請求失敗次數、超時次數、拒絕請求次數等可以實時的反應當前業務服務質量。
1.記憶體資源隔離
監控每個任務的程序樹或者執行緒樹,程序樹和執行緒樹使用的總物理記憶體或者總虛擬記憶體量超過了預先設定值,則依次傳送term和kill兩個訊號將整個程序樹殺死。也可以通引數配置進行資源隔離。
2.cpu資源隔離
cpu資源按照百分比進行使用和隔離,通過引數的引數實現的,這種方式能夠保證每個節點上的cpu資源得到充分的共享和使用,從而產生較高的cpu利用率。限制每個執行容器的cpu資源使用上限,通過嚴格限制cpu使用上限,即使機器上仍有大量空閒cpu資源,也不會允許使用。限制使用的cpu上限,需要注意的是,資源管理系統允許配置每個節點上可使用的物理cpu個數,以及物理cpu與虛擬cpu個比例,而使用者申請資源時,只能申請虛擬cpu。
3.io資源隔離
io資源分為磁碟io和網路io兩種。io資源的隔離比cpu和記憶體複雜的多,為了量化io資源,通過「虛擬磁碟」(vdisk),使用cgroup的blkio模組實現磁碟io隔離。當然,在實現該功能之前,還需要將io資源加入排程器管理的範疇,比如公平排程器或者容量排程器,可以對磁碟io和網路io進行排程。
分布式技術專題 事務基礎及特性
在資料庫中,會將有意義的資料操作進行集中處理,利用資料庫進行資料的檢索 插入 更新 刪除操作,這裡使用者的乙個連貫的操作,就是事務 transaction 為了解決多個使用者同時訪問資料庫時不會發生問題,就需要控制這些操作,也就是通常意義上的併發控制中的上鎖 lock 操作 樂觀併發不上鎖的情況不在...
分布式事務分析
近期公司專案基於微服務架構需要涉及到實現一套分布式事務。經過幾天在網上查閱資料發現大部分文章只是講解了具體的其中乙個模型。因此在這裡做乙個總結 自己的一些感悟和看法。cap理論本身並不是一套和事務相關的理論,而是用來解釋分布式系統的理論。但是用來分析分布式事物的邊界非常適合。關於cap理論,可以檢視...
分布式計算范型
1 訊息傳遞范型 訊息傳遞是程序間通訊的基本途徑。兩個程序間傳遞訊息,乙個為傳送者,乙個為接收者。傳送者傳送一條請求訊息,該訊息被傳送到接收者,由接收著處理後返回一條應答訊息。2 客戶 伺服器范型 網路應用中使用最多的一種分布式計算型別。由客戶端和伺服器組成,將非對稱角色分配各兩個協作程序,客戶程序...