Dubbo 能做什么
透明化的远程方法调用,就像调用本地方法一样调用远程方法,
软负载均衡及容错机制,可在内网替代F5 等硬件负载均衡器,降低成本,减少单点
服务自动注册于发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址
常用配置
容错机制
什么是容错机制? 容错机制指的是某种系统控制在一定范围内的一种允许或包容犯错情况的发生,举个简单例子,我们在电脑上运行一个程序,有时候会出现无响应的情况,然后系统会弹出一个提示框让我们选择,是立即结束还是继续等待,然后根据我们的选择执行对应的操作,这就是“容错”。
在分布式架构下,网络、硬件、应用都可能发生故障,由于各个服务之间可能存在依赖关系,如果一条链路中的其中一个节点出现故障,将会导致雪崩效应。为了减少某一个节点故障的影响范围,所以我们才需要去构建容错服务,来优雅的处理这种中断的响应结果
Dubbo提供了6种容错机制
- failsafe 失败安全,可以认为是把错误吞掉(记录日志)
- failover(默认) 重试其他服务器;失败后再重试两次retries :适用于sql查询
- failfast 快速失败, 失败以后立马报错 :适用于事务操作
- failback 失败后自动恢复。 :适用于事务操作
- forking forks. 设置并行数,并行调用,一个成功就返回
- broadcast 广播,任意一台报错,则执行的方法报错
服务降级
降级的目的是为了保证核心服务可用。dubbo的降级方式: Mock
实现步骤
- 在client端创建一个TestMock类,实现对应IHello的接口(需要对哪个接口进行mock,就实现哪个)
- 在client端的xml配置文件中,添加如下配置,增加一个mock属性指向创建的TestMock
- 模拟错误(设置timeout),模拟超时异常,运行测试代码即可访问到TestMock这个类。当服务端故障解除以后,调用过程将恢复正常
配置优先级别
以timeout为例,显示了配置的查找顺序,其它retries, loadbalance等类似。
- 方法级优先,接口级次之,全局配置再次之。
<dubbo:service interface="com.guaoran.source.dubbo.demo.IHelloService"
ref="versionService" timeout="30">
<dubbo:method name="test" timeout="20"/>
</dubbo:service>
- 如果级别一样,则消费方优先,提供方次之。
其中,服务提供方配置,通过URL经由注册中心传递给消费方。
建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。
主机绑定规则
从环境变量中获取:DUBBO_IP_TO_BIND
先从 配置文件中获取主机,存在且校验合理即返回
获取本地 ip 地址 校验合理即返回
通过socket 连接注册中心去获取本机ip
遍历本地网卡