调用结果缓存
通过缓存结果加速访问速度
功能说明
Dubbo支持了服务端结果缓存和客户端结果缓存。
缓存类型
目前Dubbo3.0版本及高于其的版本都支持以下几种内置的缓存策略:
lru基于最近最少使用原则删除多余缓存,保持最热的数据被缓存。lfu基于淘汰使用频次最低的原则来实现缓存策略。expiring基于过期时间原则来实现缓存策略。threadlocal当前线程缓存,比如一个页面渲染,用到很多 portal,每个 portal 都要去查用户信息,通过线程缓存,可以减少这种多余访问。jcache与 JSR107 集成,可以桥接各种缓存实现。
缓存类型可扩展 缓存扩展
关于 示例代码
使用场景
结果缓存,用于加速热门数据的访问速度,Dubbo 提供声明式缓存,以减少用户加缓存的工作量。
使用方式
客户端缓存
Dubbo中对RPC调用结果缓存支持接口粒度和方法粒度的配置控制。
接口粒度
xml配置方式:
1. <dubbo:reference interface="com.foo.DemoService" cache="lru" />
注解配置方式:
1. @DubboReference(cache = "lru")
2. private DemoService demoService;
方法粒度
1. <dubbo:reference interface="com.foo.DemoService">
2. <dubbo:method name="sayHello" cache="lru" />
3. </dubbo:reference>
注解配置方式:
1. @DubboReference(methods = {@Method(name="sayHello",cache = "lru")})
2. private DemoService demoService;
服务端缓存
接口粒度
xml配置方式:
1. <bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
2. <dubbo:service interface="com.foo.DemoService" ref="demoService" cache="lru" />
注解配置方式:
1. @DubboService(cache = "lru")
2. public class DemoServiceImpl implements DemoService {
4. private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
5. @Override
6. public String sayHello(String name) {
7. logger.info("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
8. return "Hello " + name;
10. }
12. }
方法粒度
1. <bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
2. <dubbo:service interface="com.foo.DemoService" ref="demoService" cache="lru" />
3. <dubbo:method name="sayHello" cache="lru" />
4. </dubbo:service>
注解配置方式:
1. @DubboService(methods = {@Method(name="sayHello",cache = "lru")})
2. public class DemoServiceImpl implements DemoService {
4. private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
5. @Override
6. public String sayHello(String name) {
7. logger.info("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
8. return "Hello " + name;
10. }
12. }
最后修改 September 13, 2024: Refactor website structure (#2860) (1a4b998f54b)
