首页 > 项目 > 当前页面

Dubbo的缓存机制了解吗

2024-11-01 NEW个对象

Dubbo的缓存机制了解吗?在Dubbo里有两种缓存:

1、调用结果缓存

2、缓存服务提供者的地址列表

调用结果缓存:客户端缓存和服务端缓存

客户端缓存:

客户端缓存是指在服务消费者(客户端)一侧缓存调用结果,避免多次调用相同请求时每次都访问服务提供者。

<dubbo:reference interface="com.example. DemoService" ref="demoService" cache="lru"/>

服务端缓存:

服务端缓存是在服务提供者(服务端)一侧缓存调用结果,通常用于处理重复请求,提高服务端的响应速度,减少资源消耗。服务端缓存的使用较少,因为它会占用服务端的资源,在请求量较大时也可能带来额外压力。

<dubbo:service interface="com.example.DemoService" ref="demoService" cache="lru"/>

原理:


Dubbo 通过 CacheFilter 过滤器,提供结果缓存的功能,目前提供三种实现:


lru :基于最近最少使用原则删除多余缓存,保持最热的数据被缓存。

threadlocal :当前线程缓存。

jcache :暂不作了解

消费者会在启动时从注册中心拉取并缓存服务提供者的地址列表。即便注册中心挂掉了,消费者依然能够根据本地缓存的地址信息找到服务提供者并发起调用。只有当服务提供者发生了变动(如新增或下线)时,才需要重新从注册中心获取最新信息。

相关文章

  • B树与B+树的区别

    B树与B+树的区别

    NEW个对象 2024-10-20

  • BigDecimal

    为什么不能用BigDecimal的equals方法做等值比较? 两个BigDecimal的数值进行比较的话,可以使用compareTo方法。 以:0.1和0.10为例子,equals会比较value和精度,很显然这两个数的精度不一样,会返回false

    NEW个对象 2025-02-11

  • Kafka保证消息不丢失主要从三个方面考虑

    Kafka保证消息不丢失主要从三个方面考虑

    NEW个对象 2026-07-07

NEW个对象 NEW个对象
JAVA是世界上最好的语言