1、多版本支持
多版本支持 veresion1.0 , version1.0.1 可以做版本隔离,
Server端配置
Client 端配置
zk注册中心的服务节点:
2、主机绑定
[dubbo://192.168.2.105:20880%2Fcom.gupao.edu.dubbo.IGpHello%3Fanyhost%3Dtrue%26application%3Ddubbo-server%26dubbo%3D2.5.3%26interface%3Dcom.gupao.edu.dubbo.IGpHello%26methods%3DsayHello%26owner%3Dmic%26pid%3D16730%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1580894926755%26version%3D1.0.0, dubbo://192.168.2.105:20880%2Fcom.gupao.edu.dubbo.IGpHello2%3Fanyhost%3Dtrue%26application%3Ddubbo-server%26dubbo%3D2.5.3%26interface%3Dcom.gupao.edu.dubbo.IGpHello%26methods%3DsayHello%26owner%3Dmic%26pid%3D16730%26revision%3D1.0.1%26side%3Dprovider%26timestamp%3D1580894929777%26version%3D1.0.1]
主机绑定指的是绑定,dubbo的服务注册节点的地址 即标红的地址
- 从配置文件中获取host: NetUtils.isInvalidLocalHost(host).
- 若配置文件中获取的host是非法的,从网卡(本地地址)中去获取:host = InetAdress.getLocalHost().getHostAdress();
- 若网卡中的host也是非法的,会获取注册中心的地址,循环遍历地址,最后通过socket去产生一个连接,在通过socket去获取本地的地址
- 若还拿不到 host调用getLocalAddress,遍历本地网卡返回合理 Ip
主机绑定有四个过程,是中断的(即进入第一步拿到了后续的步骤就不会执行了),所以会存在发布服务的ip地址与期盼的ip地址不一样。
默认情况下,dubbo支持不同协议提供了主机不同端口号的绑定dubbo:20880,rmi:1099,http:80,hessian:80,webService:80
3、负载均衡
RandomLoadBalance 随机调用负载均衡
RoundRobinLoadBlance 轮询调用
LeastActiveLoadBlance 最小活跃数调用法
ConsistentHashLoadBalance 一致性hash算法
4、集群容错
容错机制:是指在系统的控制范围内,允许或者包容某些错误的发生
各个服务节点直接存在依赖关系,一个节点出现故障将会导致雪崩。
dubbo 中提供六种容错机
- failsafe 失败安全,如果当前请求失败后,它会记录这个请求,定时去重发,将这个错误吞掉(会记录日志)。
- failover (默认) 如果出现失败回去重试其他服务器。retries(默认值为2,不包含第一次,即总共三次) 重试次数
- failfast 快速失败,只要失败后立马报错。
- failback 失败后自动恢复。(恢复表示会在某一个地方记录失败请求,在定时重发)
- forking 并行访问,只要有一个返回成功,就表示成功。forks 设置并行数
- broadcast 广播任意一台报错,则执行的方法报错
集群容错通过cluster来配置
5、配置的优先级
客户端(customer)的配置优于服务端(server)
1、方法级别优先,然后是接口,最后是全局配置
2、如果级别一样客户端优先
retires(重试次数 在客户端配置)、LoadBanlance(负载均衡 在服务端配)、cluster(容错机制 在客户端配)、timeout(超时时间,在服务端配置)
6、服务降级
降级的目的是为了保证核心服务可用。核心的服务不会降级,只会降级和当前流程没有关系的方式。主要的目的就是关闭一些服务提升整个架构的吞吐量。
dubbo的降级方式:Mock,如果服务端出现网络异常或者挂掉的情况下,他回去调用默认的一个Mock机制去完成一个对应的返回。 Mock 是客户端的一个策略。