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" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值