开发者学堂课程【Spring Cloud Alibaba Nacos 详解(上):应用于分布式系统-自定义扩展 dataid】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/724/detail/12927
应用于分布式系统-自定义扩展 dataid
内容介绍
一.自定义 Group
二.自定义扩展的 Data ID 配置
三.自定义扩展动态
四.自定义共享动态 Data ID
一.自定义 Group
学习自定义的配置方法,首先 Dacos 可以自定义 Group,我们已经学过自定义的Test group 包括 test 包括 Prod,当我们需要从指定的具体的 Group 当中来获取配置的时候,我们要知道配置文件的指定方法,配置文件指定的时候这里 Namespace 在 Config 下面有一个 Namespace 的项目,这里就是指定具体的 Namespace ,
那 Group 就可以指定具体的测试组, DateID 是自动的拼装,根据项目的名称和扩展来拼装,如果我的配置文件不是这种 yqml 的格式是 properties,如果是Properties,那你就需要把你的扩展名改一下,这样就会自动拼接成Service1.properties,这就是它的方法,这就是自定义 Namespace 和 group 配置以及配置的方法。
可以在文档里面看见这里面还有就是学习过 spring 的了解,在配置文件当中我们可以新建一个 application.yml,它俩的区别就是学过 springboot 的知道,
bootstrap 它加载的顺序要优先于 application.yml,所以这里面一定要记住针对 Nacos 配置管理里面的 config,包括地址管理的配置我们要把它写在 Bootstrap 里面,就是因为它是要优先加进去的,不要把这些配置原来弄过开发,弄一个 Application.ym l放进去,这就是自定义 Group 和 Data ID 配置。
每一个微服务都对应一个配置文件 Service1
它是对应 Service1.yml 配置文件,这个配置文件在配置列表里面我们可以看见有,所有的微服务都会对应一个配置文件,有没有可能各个微服务公共一个配置信息,或者公共不止一个配置文件,它有多个配置文件,就是一个微服务不可能对应一个配置文件,它可能还对应另外多个配置文件,多个配置文件放公共的配置 Service1 可能要引用,Service2 可能要引用,这是一种情况,还有就是每个微服务可能不止一个配置文件还有多个,它自己需要,比如说我把数据库的配置文件放在测试组,完全可以,所以我们要思考。
二.自定义扩展的 Data ID 配置
dataID 就是每个微服务自己对应一个 dataID 就是配置文件的名称,现在如何去扩展让我们每一个微服务可以扩展对应多个 dataID 。
这个时候就可以用到扩展 dataID 的功能,扩展 dataID,可以扩展多个所以扩展的 config 是以数组的形式配置,从0开始不要从1开始,具体的配置方法,在 config 下面扩展是0,下边可以写 data ID ,data ID 没有的话,就可以在下面建,没有指定group 对应的就是以后的 group,所以原来的配置文件 group,就是 test group,所以就这样来写,就是配置文件,
然后配置文件的内容根据
common.age 等于 12.common.address=beijing
这个配置文件的内容只是因为我们测试需要我们把它定义一个内容,这个内容测试需要,但具体的配置文件的内容要根据具体的系统的需要,回到做具体的实际应用开发的时候,配置文件的内容一定是根据具体需要,而不是想当然的。
按照讲义把测试的结果配置内容写上,因为现在是 properties,所以这里面要选择properties,age=12,然后 Address 等于 bwijing,然后发布,这时发布是发布到第一批,它的默认的 group,扩展的配置它就是找到了当前 Navospeace 下边默认的这个 group,继续配置扩展多个再配,同一个可以对多个 Data ID 。
我们照样来仿照写,它的 group ID 会发现是另外一个新起的名,可以应用到新的文件,参数配置都一样,让各个微服务都扩展,这个组都可以大致理解这个组放的公共的,这个配置里面配了哪些东西,这是为了测试需要。
根据讲义来配置,common.brithday=1990—1—1,现在这时候就是第二个配置的文件,配完了之后第三个我们拷贝,数组0和1.2组织的新建的,这个 refresh 是动态刷新配置,这里面加一个 Refresh,它的组名就叫 refresh_group ,它的内容按照讲义上来是 Common.fullname=zhangsanff 现在配置文件就弄好了,这是扩展的配置也就是说微服务不光读取 ysm,还读取其他三个,我们可以写一个程序来测试,因为前面我们写过这样的程序,叫 getconfig,就是读取配置。
我们可以参考来写一个,会发现我们把刚才配置的这些key都读取到,因为我们讲的就是扩展 Data ID ,如果能读取到说明我们扩展的 data ID在配置文件里面读取的这些配置文件就可以正常读取到,说明我们这个扩展配置成功,我们就可以访问其他的,其他的信息都有,都是刚才建立的,zhangsan 前面的是不一样的,三个配置文件,出生日期发布完毕之后如果不行,因为是第二个配置,需要重启,如果要加一个 Refresh:true 就可以支持动态刷新,现在来刷新,这就说明我们的动态配置都生效了,这就是自定义扩展动态 ID。
三.自定义扩展动态 ID
解决了一个服务对应一个配置文件的问题,可以对应多个配置文件,并且可以把公共的配置文件放在一个配置夹里面,由各个微服务来引用,但其实还有一个功能叫自定义共享 Data ID配置。
四.自定义共享 Data ID
也可以将很多配置文件也可以放在同一个微服务当中来叠加,这个配置就是引用了配置文件,如果要引用三个配置文件就要动态分割,把动态名加上就可以了,重启可以加载多个动态 ID,刷新多个配置文件。
重启完了之后现在来刷新,就有两个配置信息 Null,一个 Birthday 一个 Fullname。
它们分别在 Group 里面 一个在 Refresh group 里面,前两个有值,因为前两个都在 Deeault group 里面,也就是说我们写的程序会发现第一个配置文件在 Deeault group 所以可以刷新出来,所以后面两个是空的,我们现在操作的只认 Deeault的东西,所以其他的 group 不认识,这是总结出来的问题,建议引用之前的方法,用扩展的方法。
扩展 Data ID 讲了两种,一种是扩展 Data ID 以这一种数组的方式扩展,另外一种是共享 Data ID 的方式,都可以实现让一个微服务对应多个共享ID,而且把配置公共的部分放在一个配置文件当中,由不同的微服务去引用,但是我们发现共享的 Data ID 方式是只支持 Deeault group ,而自定义扩展 ID 方式会发现它是可以灵活的配置这个扩展的文件方式。