常用的軟體技術思想-池化技術
常用的軟體技術思想
池化技術
簡單來說就是提前儲存大量的資源,以備不時之需
核心是複用
池化技術作用
- 複用相同的資源,減少浪費,減少新建和銷燬的成本;
- 減少單獨管理的成本,統一交由"池";
- 集中管理,減少"碎片";
- 提高系統響應速度,因為池中有現成的資源,不用重新去建立;
使用池化技術的例子
java執行緒池
java中所有的池化技術都有一個好處,就是通過複用池中的物件,降低系統資源消耗。設想一下如果我們有n多個子任務需要執行,如果我們為每個子任務都建立一個執行執行緒,而建立執行緒的過程是需要一定的系統消耗的,最後肯定會拖慢整個系統的處理速度。而通過執行緒池我們可以做到複用執行緒,任務有多個,但執行任務的執行緒可以通過執行緒池來複用,這樣減少了建立執行緒的開銷,系統資源利用率得到了提升!
通俗一點,執行緒池,就是提前建立 n 個執行緒在池中等待執行,當有任務過來時,直接從池中撈一個執行緒負責執行這個任務,執行完成之後,再放回池中,等待執行新的任務。
池中的執行緒可以多次利用,提高了資源利用率。
因為會預製 n 個執行緒,所以提高了響應速度。
資料庫連線池
資料庫連線池基本的思想是在系統初始化的時候,將資料庫連線作為物件儲存在記憶體中,當用戶需要訪問資料庫時,並非建立一個新的連線,而是從連線池中取出一個已建立的空閒連線物件。使用完畢後,使用者也並非將連線關閉,而是將連線放回連線池中,以供下一個請求訪問使用。而連線的建立、斷開都由連線池自身來管理。同時,還可以通過設定連線池的引數來控制連線池中的初始連線數、連線的上下限數以及每個連線的最大使用次數、最大空閒時間等等,也可以通過其自身的管理機制來監視資料庫連線的數量、使用情況等
java 記憶體池
如果每次需要記憶體時都是重新申請,會產生很多記憶體碎片,影響記憶體的利用率。 如果一開始就申請一大塊記憶體,按需使用,那麼就會減少記憶體碎片。
計算系統池化技術
不同型別資源之間也存在生命週期不同步的問題。譬如,CPU 是發展速度最快的,每兩三年就效能翻倍,然而儲存的技術發展相對緩慢,從而會造成CPU效能和功耗的浪費。 伺服器資源池化技術,除了能夠帶來靈活、彈性的資源部署,提高資源利用率這個優勢,還能夠更有效的提高伺服器的故障修復能力,提升伺服器運營效率。硬碟是故障率最高的部件之一,在實現儲存池化技術後,多盤儲存資源池為單體硬碟提供了很好的冗餘設計能力。當單個硬碟出現故障後,可以及時使用其他硬碟資源進行無損恢復,無需立即現場更換硬碟
虛擬化技術
虛擬化技術和雲服務都是基於虛擬化技術,將單個伺服器硬體虛擬成多個虛擬機器VM,其目的也是在於提高伺服器資源的利用率