Dubbo2.0
1.Dubbo启动时检查
1.1提供者和消费者都会注册在注册中心,消费者需要提供者的服务地址,如果没有启动提供者,只启动了消费者,消费者找不着服务地址就会报错;
1.2Dubbo默认会在启动时检查依赖的服务是否可用,不可用会抛出异常,默认chack="true",可以设置成false不检查;
2.超时设置&配置覆盖关系
2.1方法级优先,接口级次之,全局配置再次之
2.2级别一样时,消费者优先,提供者次之
3.重试次数retries(如果是0就是不重试)
3.1第一次不计入次数,如果有多个服务器,第一次调用的服务失败会再调用一次,再失败会去调用其他服务重试;
3.2幂等可以设置重试次数[查询,删除,修改]
非幂等不可以设置重试次数[新增(如果超时,一直重试,数据库会执行很多次)]
4.多版本
灰度发布
版本控制:version,平滑过渡,
当一个接口实现出现不兼容需要升级时,可以用版本号过渡,版本号不同的服务相互 间不引用。
可以按照以下的步骤进行版本迁移:
1. 在低压力时间段,先升级一半提供者为新版本
2. 再将所有消费者升级为新版本
3. 然后将剩下的一半提供者升级为新版本
5.本地存根Stub
远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想要在客户端也执行部分逻辑;比如本地缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在API中带上Stub,客户端生成Proxy实例,会把Proxy通过构造函数传给Stub,然后把Stub暴露给用户,Stub可以决定要不要去调用Proxy
6.高可用
6.1监控中心宕掉不影响使用,只是丢失部分采样数据;
6.2数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新的服务;
6.3注册中心对等集群,任意一台宕掉后,将自动切换到另一台;
6.4注册中心全部宕掉后,服务提供者和服务消费者人能通过本地缓存通讯;
6.5服务提供者无状态,任意一台宕掉后,不影响使用,如果全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复;
Dubbo直连:@Reference(url="127.0.0.1:10880")
7.负载均衡LoadBalance
7.1Random ~: 基于权重的随机负载均衡机制(权重百分比);
7.2RounRobin ~: 基于权重的轮询负载均衡机制(轮流权重百分比);
7.3LeastActive ~: 最少活跃数负载均衡机制(会找上次处理请求最快的)
7.4ConsistentHash ~: 一致性Hash负载均衡机制
8.服务降级
8.1当服务器压力剧增的情况下,根据实际业务情况及流量,对一些业务和页面有策略的不处理或换种简单的方式处理,从而西方服务器资源以保证核心交易正常运作或高效运作;
8.2mock=force:return+null 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。 还可以改为 mock=fail:return+null 表示消费方对该服务的方法调用失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响