《面向模式的軟體體繫結構3-資源管理員模式》讀書筆記(4)— Partial Acquisition模式

來源:互聯網
上載者:User

2.4 Partial Acquisition模式

      Partial Acquistion(部分擷取)模式描述了如何把資源擷取分成多個階段來最佳化資源管理。每個階段都擷取資源的一部分,這取決於系統的約束,比如記憶體以及其他資源的可用性。

 

1.問題

      具有高健壯性和延展性的系統必須高效地擷取資源,包括本地和遠端資源。預先擷取資源對於滿足資源的可獲得性和可訪問性限制很重要。但如果這些系統都在一開始就擷取全部資源,那麼就會帶來很大的額外開銷,會浪費很多資源。而另一方面,延遲擷取所有資源也是不現實的,因為有的資源可能在應用系統啟動或恢複的時候就要用到,為瞭解決這些衝突的資源擷取需求,我們需要關注以下幾點問題:

      1)可用性(Availability)。資源擷取應當受參數(比如可用的系統記憶體、CPU負載、其他資源的可用性)的影響。

      2)靈活性(Flexibility)。解決方案應當對固定尺寸的資源和未知或者不可預測尺寸的資源工作得同樣好。

      3)延展性(Scalability)。解決方案應當對資源的尺寸具有延展性。

      4)效能(Performance)。資源的擷取應當對系統效能的影響儘可能小。 

 

2.解決方案

      把資源擷取分成兩步或者更多步。在每一步中,擷取資源的一部分。每步擷取資源的數目都應當用一個或多個策略來配置。例如,每步擷取的資源的數目可以取決於考慮到可用緩衝區。系統回應時間需求以及所依賴的資源的可用性的策略。當一個資源被部分擷取時,資源使用者就可以開始使用它,假定使用之前不需要獲得完整的資源。

      可以用Eager Acquisition和Lazy Acquisition之類的模式來決定何時執行部分擷取資源的一步或者多步。Partial Acquisition模式則決定了資源應該分多少步擷取,還決定了每一步擷取的資源的比例。

 

3.結構

      資源使用者擷取並使用資源。

      資源是一個實體(比如影音/視頻內容),資源被分多步擷取。

      資源提供者管理並提供多個資源。

      

 

      

       

4.實現

1)決定步驟的數目。資源應該分多少步擷取取決於系統約束,比如可用的記憶體和CPU,以及其他的因素,比如時間限制和所依賴的資源的可用性。對於未知或者不可預測尺寸的資源,可能無法決定要分幾步來獲得整個資源,在這種情況下,步驟數沒有上限,會一步步執行下去直到完整地獲得資源。

2)選擇擷取策略。決定何時應該執行資源擷取的哪一個步驟,可以用Lazy Acquisition和Eager Acquisition之類的模式來控制何時應執行一個或多個資源擷取步驟。例如,可以用Eager Acquisition模式來擷取資源的起始部分,然後用Lazy Acquisition模式來擷取資源的剩餘部分,或者在某個系統啟動完成之後但使用者還沒有請求資源的中間時間來擷取。

3)決定擷取多少。配置策略來決定每一步要部分地擷取多少資源。可以配置不同的策略來決定每一步獲得多少資源。如果資源的尺寸是確定的,那麼可以用簡單的策略,平均分配每一步所獲得的資源。更複雜的策略會考慮可用的系統資源,例如,當具有足夠記憶體的時候,這樣的策略可能會在一步中獲得較多部分的資源。稍後,當系統資源不足的時候,這樣的策略可能會擷取較少部分的資源。

      如果要擷取的資源的尺寸未知或者不可預測,那麼可以用這樣的自適應策略。還可以配置其他的策略來利用其他的參數,比如需要的相應時間。如果沒有系統約束,那麼另一個策略可以貪心地儘可能多地擷取資源。這樣的策略可以保證整個資源在可能的最短時間內被獲得。為了判斷使用何種策略比較合適,有必要良好地理解應用程式的語義。

4)引入緩衝(可選項)。決定是否要把部分擷取的資源緩衝起來。如果資源尺寸未知,或者整個資源使用前需要在某處合并,那麼緩衝資源是有用的。如果資源需要被緩衝,那麼需要決定分配多大空間的緩衝區,以確保可以裝入整個資源。對未知或者不確定大小的資源,分配的緩衝區尺寸應該在系統限制(比如可用記憶體)之內,但又要足夠大,以處理系統中資源尺寸的上限。

5)實現擷取觸發器,建立一個負責執行資源擷取的每一步的機制。這樣的機制應當負責用多個步驟來擷取資源的不同部分。Reactor(反應器)之類的模式可以用於實現這樣的機制。

6)處理錯誤條件和部分失敗。錯誤條件和部分失敗是分布式系統的特性。當使用Partial Acquisition模式時,有可能會在一步或者多步結束之後出錯。結果可能是擷取了一部分資源,但是試圖接著擷取資源的剩下部分會失敗。取決於應用程式的語義,這樣的部分失敗可能可以結束,也可能不可以接受。

      處理部分失敗的一種方式是使用Coordinator模式。這個模式有助於確保資源擷取的所有步驟都成功完成,或者確保一步都沒有成功。 

 

5.結論

優點:

1)反應式行為(Reactive behavior)。Partial Acquisition模式使我們可以擷取緩慢地變得可用或者局部可用的資源。如果不使用Partial Acquisition模式,資源使用者就不得不等待不定長的時間以等待整個資源變得可用。

2)延展性(Scalability)。Partial Acquisition模式允許要擷取的資源的尺寸具有延展性。資源擷取的步驟數目可以依據要擷取的資源的尺寸來配置。

3)可配置性(Configurability)。Partial Acquisition模式可以用一個或多個決定分多少步擷取資源以及一步擷取多少資源的策略來配置。

 

缺點:

1)複雜性(Complexity)。使用者處理資源的演算法需要可以處理只獲得了一部分的資源。這可能會給應用程式帶來一定程式的複雜性。此外,用Partial Acquisition模式會導致錯誤處理變得更為複雜。如果某一步失敗了,那麼錯誤處理策略必須確保完整的動作被重新執行或者更正。另一方面,錯誤處理也會變得健壯。如果某一步擷取失敗,那麼可以重新執行同一步而不需要重新進行全部擷取操作。

2)額外開銷(Overhead)。Partial Acquisition模式要求資源分步擷取。這可能會帶來額外的調用開銷(多次調用以獲得相同資源的不同部分)。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.