二、dubbo高级特性使用
1、启动时检查
-
check=true,检测到某接口没有提供者时,抛异常,阻止系统启动, reference对象置null,在系统测试阶段,开启可快速发现问题。reference对象为空,则即使后续补进了provider,也不能补救 2、 check=false,不检测接口是否有提供者,直接为reference生成代理对象只要后续补入provider,程序会自动探测到,线上正式环境使用
2、集群容错配置
-
Failover :当出现失败,重试其它服务器。 retries=“2” 来设置重试次数(不含第一次)。幂等性操作使用,如读操作 Failfast :快速失败,只发起一次调用,失败立即报错,非幂等性操作,如写操作 Failsafe :出现异常时,直接忽略无关紧要的旁支操作,如打日 Failback :后台记录失败请求,定时重发。后续专业处理 Forking :并行调用多个服务器,只要一个成功即返回 forks=“2” 来设置最大并行数
<dubbo:consumer cluster="failover” retries="2" forks="2" />
3、负载均衡配置
<dubbo:consumer loadbalance="random"/>
-
Random :按权重随机------根据weight值(服务方设置)来随机 RoundRobin :轮询 LeastActive :最少活跃数(正在处理的数)慢的机器,收到的请求少
4、只订阅/只注册
禁止注册register=“false“/禁止订阅subscribe=“false”
5、服务分组
group=“xxx" 使用一个注册中心,分出多个环境,各自互不影响
6、结果缓存
<dubbo:reference interface="com.enjoy.service.ProductService" cache="lru"/>
-
lru :基于最近最少使用原则删除多余缓存 threadlocal :当前线程缓存
7、异步调用
配置异步调用 代码调用 在发送2个请求后,会立马返回,拿到futurn之后阻塞等待就可以,节省了先等待第一个接口返回,再等待第二个的时间
8、事件通知
-
配置 调用
如果调用时候不关心调用方法的返回时优先使用回调的方式,完全不存在阻塞的步骤,效率时最高的。
9、Provider 端应尽量配置的属性
Dubbo 的属性配置优先度上,遵循如下顺序:reference 属性->service 属性->Consumer属性,对于服务调用的超时时间、重试次数等属性,服务的提供方比消费方更了 解服务性能,因此我们应该在 Provider 端尽量多配置 Consumer 端属性, 让其漫游到消费端发挥作用。
-
建议在 Provider 端配置的 Consumer 端属性有: 建议在 Provider 端配置的 Provider 端属性有:
上一篇:
IDEA上Java项目控制台中文乱码