Dubbo
Dubbo是一个分布式服务治理框架,提供高性能和透明化的RPC远程服务调用方案及
SOA架构治理方案。
远程通信
提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及
“请求-响应”模式的信息交换方式。
集群容错
提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败
容错,地址路由,动态配置等集群支持。
自动发现
基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使
服务提供方可以平滑增加或减少机器。
springboot整合dubbo
引入依赖
在服务提供者、消费者工程中的pom.xml文件中添加依赖。
配置Dubbo相关参数
启动类添加 @EnableDubbo 注解
服务提供方和服务消费方
实现服务提供者和消费者
服务治理和配置管理
服务治理
服务治理主要作用是改变运行时服务的行为和选址逻辑,达到限流,权重配置等目的,主要有以下几个功能:
应用级别的服务治理
在Dubbo2.6及更早版本中,所有的服务治理规则都只针对服务粒度,如果要把某条规则作用到应用粒度上,需要为应用下的所有服务配合相同的规则,变更,删除的时候也需要对应的操作,这样的操作很不友好,因此Dubbo2.7版本中增加了应用粒度的服务治理操作,对于条件路由(包括黑白名单),动态配置(包括权重,负载均衡)都可以做应用级别的配置:
上图是条件路由的配置,可以按照应用名,服务名两个维度来填写,也可以按照这两个维度来查询。标签路由
标签路由是Dubbo2.7引入的新功能,配置以应用作为维度,给不同的服务器打上不同名字的标签,配置如下图所示:
调用的时候,客户端可以通过setAttachment
的方式,来设置不同的标签名称,比如本例中,setAttachment(tag1)
,客户端的选址范围就在如图所示的三台机器中,可以通过这种方式来实现流量隔离,灰度发布等功能。条件路由
条件路由是Dubbo一直以来就有的功能,目前可以配置服务和应用两个维度,条件路由为
yaml
格式,具体的规则体以及各种适用场景,请参考这里黑白名单
黑白名单是条件路由的一部分,规则存储和条件路由放在一起,为了方便配置所以单独拿出来,同样可以通过服务和应用两个维度,指定黑名单和白名单:
动态配置
动态配置是和路由规则平行的另一类服务治理治理功能,主要作用是在不重启服务的情况下,动态改变调用行为,从Dubbo2.7版本开始,支持服务和应用两个维度的配置,采用
具体的规则体说明请参考这里yaml
格式,界面如下:权重调节
权重调节是动态配置的子功能,主要作用是改变服务端的权重,更大的权重会有更大的几率被客户端选中作为服务提供者,从而达到流量分配的目的:
负载均衡
负载均衡也是动态配置的子功能,主要作用是调整客户端的选址逻辑,目前可选的负载均衡策略有随机,轮训和最小活跃,关于各个策略的解释请参考这里
配置管理
配置管理也是配合Dubbo2.7新增的功能,在Dubbo2.7中,增加了全局和应用维度的配置,分别在全局和应用范围内生效,其中应用配置也可以指定该应用中的服务级别的配置,可以在控制台中查看,修改配置规则,默认展示全局维度的配置。
- 全局配置:
全局配置里可以指定注册中心,元数据中心的地址,服务端和客户端的超时时间等,这些配置在全局内生效。除了配置写入,也可以用来查看。如果使用zookeeper作为注册中心和元数据中心,还可以看到配置文件所在位置的目录结构。- 应用, 服务配置
应用级别的配置可以为应用或者应用内的服务指定配置,在服务维度上,需要区分提供者和消费者。dubbo.reference.{serviceName}
表示作为该服务消费者的配置,dubbo.provider.{servcieName}
表示作为该服务提供者的配置。其中注册中心和元数据中心的地址,只能在全局配置中指定,这也是Dubbo2.7中推荐的使用方式。
来源:oschina
链接:https://my.oschina.net/u/4442945/blog/3160097