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 端属性有: