dubbo-配置中心

dubbo在2.7版本之前只配备了注册中心,2.7中新增的功能-配置中心和元数据中心,因此dubbo现在拥有三大中心,指的是注册中心、元数据中心和配置中心。

注册中心:分布式环境下提供服务的注册和发现功能,服务治理的关键组件

元数据中心:元数据指的是描述数据的数据。在服务治理中的数据可以理解成provider供者提供的服务、consumer需要消费的服务,而这些服务通常都会有一些描述信息例如接口名、版本号、重试次数、容错机制等等,这些对服务的描述信息就是服务的元数据。

2.7以前,元数据一股脑的丢在注册中心,造成了一系列的问题:

推送量大大->存储数据量大->网络传输量大->延迟

生产者端注册 30+ 参数,有接近一半是不需要作为注册中心进行传递;消费者端注册 25+ 参数,只有个别需要传递给注册中心。

有了以上的理论分析,Dubbo 2.7 进行了大刀阔斧的改动,只将真正属于服务治理的数据发布到注册中心之中,大大降低了注册中心的负荷。同时,将全量的元数据发布到另外的组件中:元数据中心。元数据中心目前支持 redis(推荐),zookeeper。

Dubbo 2.6 元数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
dubbo://30.5.120.185:20880/com.alibaba.dubbo.demo.DemoService?
anyhost=true&
application=demo-provider&
interface=com.alibaba.dubbo.demo.DemoService&
methods=sayHello&
bean.name=com.alibaba.dubbo.demo.DemoService&
dubbo=2.0.2&
executes=4500&
generic=false&
owner=kirito&
pid=84228&
retries=7&
side=provider&
timestamp=1552965771067

从本地的 zookeeper 中取出一条服务数据,通过解码之后,可以看出,的确有很多参数是不必要。

Dubbo 2.7 元数据
在 2.7 中,如果不进行额外的配置,zookeeper 中的数据格式仍然会和 Dubbo 2.6 保持一致,这主要是为了保证兼容性,让 Dubbo 2.6 的客户端可以调用 Dubbo 2.7 的服务端。如果整体迁移到 2.7,则可以为注册中心开启简化配置的参数:

1
<dubbo:registry address=“zookeeper://127.0.0.1:2181” simplified=“true”/>

Dubbo 将会只上传那些必要的服务治理数据,一个简化过后的数据如下所示:

Dubbo 将会只上传那些必要的服务治理数据,一个简化过后的数据如下所示:

1
2
3
4
5
dubbo://30.5.120.185:20880/org.apache.dubbo.demo.api.DemoService?
application=demo-provider&
dubbo=2.0.2&
release=2.7.0&
timestamp=1552975501873

对于那些非必要的服务信息,仍然全量存储在元数据中心之中

动态配置中心:

老版本中,我们要注册一个服务,需要在服务中配置注册中心地址、协议、版本号等信息,在服务集群中,每个服务都要进行一些相同内容的配置,相同配置代码在不同服务中重复率很高,为了解决这种重复配置,2.7版本的dubbo推出了外部配置功能,就是配置中心了。

我们将一些重复的配置内容配置在配置中心里面,服务只需要配置注册中心的地址就能获取这些配置。配置中心的配置有两种作用域:global级别和应用级别。

使用配置中心进行配置需要通过dubbo-admin来操作,配置完成会在zookeeper中生成一个文件:dubbo/config/dubbo/dubbo.properties

服务启动的时候,配置中心的全局配置项优先级最高,其次是应用级配置,再然后才是本地配置。

配置中心-源码解析:

https://blog.csdn.net/u012881904/article/details/95891448