Dubbo特性結果緩存、併發與連接控制


對於熱點數據,或者對於一些長期不會變化的數據來說,減少數據庫訪問查詢,對查詢結果進行緩存處理。

一、結果緩存

結果緩存 ,用於加速熱門數據的訪問速度,Dubbo 提供聲明式緩存,以減少用戶加緩存的工作量 。

dubbo緩存是在本地緩存,在分佈式服務中,會緩存多份,在每個服務中緩存。
redis緩存是分佈式緩存,所有服務共用一份緩存。

緩存類型
  • lru 算法基於最少使用原則刪除多餘緩存,保持最熱的數據被緩存。
  • thradlocal:當前線程緩存, 比如一個頁面渲染,用到很多protal, 每個protal都要去查用戶信息,通過線程緩存,可以減少這種多餘訪問。
  • jcache 與JSR107 集成, 可以橋接各種緩存實現。(用的少)。
配置
<dubbo:reference interface="com.foo.BarService" cache="lru" />

或:

<dubbo:reference interface="com.foo.BarService">
    <dubbo:method name="findBar" cache="lru" />
</dubbo:reference>

註解配置

   @Reference(interfaceClass = CinemaServiceAPI.class,cache = "lru")

dubbo可以對連接和併發屬性進行控制。
超出部門以錯誤形式返回。

二、 連接控制

多個消費者訪問服務提供者,就會創建多個連接(dubbo長連接)。創建連接數過多會造成服務端資源壓力多大。所以需要進行連接訪問控制。

服務端連接控制

限制服務端接受的連接不能超過10個。

<dubbo:provider protocol="dubbo" accepts="10" />

<dubbo:protocol name="dubbo" accepts="10" />
客戶端連接控制

限制客戶端服務使用連接不能超過10個。如果是長連接,比如dubbo協議,connections表示該服務對每個提供者建立的長連接數。

 <dubbo:reference interface="com.foo.BarService" connections="10" />

<dubbo:service interface="com.foo.BarService" connections="10" />

三、 併發控制

配置樣例
樣例1

限制com.foo.BarService的每個方法,服務器端併發執行(或佔用線程池線程數)不能超過10個:

<dubbo:service interface="com.foo.BarService" executes="10" />
樣例2

限制com.foo.BarServicesayHello方法,服務器端併發執行(或佔用線程池線程數)不能超過10個。

<dubbo:service interface="com.foo.BarService">
    <dubbo:method name="sayHello" executes="10" />
</dubbo:service>
樣例3

限制 com.foo.BarService 的每個方法,每個客戶端併發執行(或佔用連接的請求數)不能超過 10 個:

<dubbo:service interface="com.foo.BarService" actives="10" />

<dubbo:reference interface="com.foo.BarService" actives="10" />
樣例 4

限制 com.foo.BarServicesayHello 方法,每客戶端併發執行(或佔用連接的請求數)不能超過 10 個:

<dubbo:service interface="com.foo.BarService">
    <dubbo:method name="sayHello" actives="10" />
</dubbo:service>

<dubbo:reference interface="com.foo.BarService">
    <dubbo:method name="sayHello" actives="10" />
</dubbo:service>
load Balance 均衡

配置服務的客戶端的 loadbalance 屬性爲 leastactive,此Loadbalance會調用併發數最小的Provider(consumer端併發數)。

<dubbo:reference interface="com.foo.BarService" loadbalance="leastactive" />

<dubbo:service interface="com.foo.BarService" loadbalance="leastactive" />
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章