Dubbo特性结果缓存、并发与连接控制

文章目录

      • 一、结果缓存
          • 缓存类型
          • 配置
      • 二、 连接控制
          • 服务端连接控制
          • 客户端连接控制
      • 三、 并发控制
          • 配置样例
            • 样例1
            • 样例2
            • 样例3
            • 样例 4
          • load Balance 均衡

对于热点数据,或者对于一些长期不会变化的数据来说,减少数据库访问查询,对查询结果进行缓存处理。

一、结果缓存

结果缓存 ,用于加速热门数据的访问速度,Dubbo 提供声明式缓存,以减少用户加缓存的工作量 。

dubbo缓存是在本地缓存,在分布式服务中,会缓存多份,在每个服务中缓存。
redis缓存是分布式缓存,所有服务共用一份缓存。

缓存类型
  • lru 算法基于最少使用原则删除多余缓存,保持最热的数据被缓存。
  • thradlocal:当前线程缓存, 比如一个页面渲染,用到很多protal, 每个protal都要去查用户信息,通过线程缓存,可以减少这种多余访问。
  • jcache 与JSR107 集成, 可以桥接各种缓存实现。(用的少)。
配置

或:


    

注解配置

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

dubbo可以对连接和并发属性进行控制。
超出部门以错误形式返回。

二、 连接控制

多个消费者访问服务提供者,就会创建多个连接(dubbo长连接)。创建连接数过多会造成服务端资源压力多大。所以需要进行连接访问控制。

服务端连接控制

限制服务端接受的连接不能超过10个。



客户端连接控制

限制客户端服务使用连接不能超过10个。如果是长连接,比如dubbo协议,connections表示该服务对每个提供者建立的长连接数。

 


三、 并发控制

配置样例
样例1

限制com.foo.BarService的每个方法,服务器端并发执行(或占用线程池线程数)不能超过10个:


样例2

限制com.foo.BarServicesayHello方法,服务器端并发执行(或占用线程池线程数)不能超过10个。


    

样例3

限制 com.foo.BarService 的每个方法,每个客户端并发执行(或占用连接的请求数)不能超过 10 个:



样例 4

限制 com.foo.BarServicesayHello 方法,每客户端并发执行(或占用连接的请求数)不能超过 10 个:


    


    

load Balance 均衡

配置服务的客户端的 loadbalance 属性为 leastactive,此Loadbalance会调用并发数最小的Provider(consumer端并发数)。



你可能感兴趣的:(dubbo)