代码改变世界

Nacos作为配置中心时,多个服务共用一个dataId的配置

2020-05-03 22:08 by 雨打夏夜, 阅读(14600) 阅读, 推荐(0) 推荐, 收藏, 编辑

写在前面

本文是对我之前一篇文章《Spring Cloud+nacos+Feign,实现注册中心及配置中心》的补充。此文章中简单写了如何将Nacos作为配置中心。在使用配置中心时,我们会遇到一种情况:多个微服务中有相同的配置,在配置中心中我们也就希望使用同一个dataId的配置。本文就是说明如何解决这个问题的。

多服务共用一个dataId

关于dataId,Nacos官网是这么解释的:

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型

上面的这段写的明白,我们可以用spring.cloud.nacos.config.prefix来替代spring.application.name的值。看到这里,大家肯定会认为,如果要多个服务共用一个dataId的配置,我将多个服务的spring.cloud.nacos.config.prefix写成一样的不就可以了吗?然后兴高采烈的去配置文件里做了这个配置,再启动程序,然后测试,可郁闷的发现,没有起作用。。。。。。。。,是不是很伤心,官方文档明明这么写的,却不起作用。

之所以没有起作用,是因为官方文档里虽然写了用spring.cloud.nacos.config.prefix配置,但没有写在哪里写这个配置,大家往往根据经验,写在了application.properties中,不对的,文档里没写,这个配置是要写在bootstrap.properties中,工程中没有这个文件?那就自己新建一个,和application.properties在相同路径下。

下面是我代码中的配置,我用的yaml格式,其他代码,参照《Spring Cloud+nacos+Feign,实现注册中心及配置中心

server:
  port: 7080
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        prefix: chris
        file-extension: yaml
  application:
    name: demo2

Nacos对应的截图为:

 

 

 

 上图中,两个箭头所指要注意:配置格式选择了YAML,配置内容就要按照YAML格式来写,配置格式选择了Properties,配置内容要按照Properties来写,不要搞错了。

Spring Cloud Gateway+Nacos,yml+properties两种配置文件方式搭建网关服务

2020-04-25 20:57 by 雨打夏夜, 阅读(11700) 阅读, 推荐(1) 推荐, 收藏, 编辑
摘要:写在前面 网关的作用不在此赘述,举个最常用的例子,我们搭建了微服务,前端调用各服务接口时,由于各服务接口不一样,如果让前端同事分别调用,前端同事会疯的。而网关就可以解决这个问题,网关屏蔽了各业务服务的端口,对前端同事来说,他们只负责调用网关服务端口下的服务就可以了。本文简单描述如何使用Spring 阅读全文

Spring Cloud+nacos+Feign,实现注册中心及配置中心

2020-04-19 17:45 by 雨打夏夜, 阅读(18386) 阅读, 推荐(1) 推荐, 收藏, 编辑
摘要:写在前面 注册中心、配置中心的概念就不在这里解释了。发现服务原来一直用的是Eureka,因为这家伙闭源了,不爽。然后就发现了nacos,阿里巴巴的,好东西,一个搞定注册中心和配置中心。官网:https://nacos.io/en-us/。官网的手册比较入门可以,实用化还需要结合项目。接下来简单介绍下 阅读全文

当td中文字过长时,显示为省略号

2014-03-05 17:01 by 雨打夏夜, 阅读(749) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:当表格中的文字过长时,可选择已省略号显示。这里是用js实现的。首先获取td中的文字长度(innerText.length),如果长度超过了设定的长度,则截取内容,加上省略号显示。示例代码如下:$(function(){ var zbnr=$(".zbnr");//获取含有class=“zbnr”的td $.each(zbnr,function(ind,item){ if(item.innerText.length>5){//循环判断td中含有的字数 item.innerText=item.innerText.substring(0,15)+".... 阅读全文

清除页面缓存

2014-02-10 20:59 by 雨打夏夜, 阅读(220) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:页面中的缓存是为了方便用户的使用。但有时候也会给我们带来不便,为了清除页面缓存,我们可以在jsp页面中添加如下代码:response.setHeader("Cache-Control", "no-cache"); response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires" 阅读全文

在dwr的调用类里获取请求信息

2014-02-10 17:04 by 雨打夏夜, 阅读(294) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:在dwr的调用类里获取请求的相关信息HttpSession session = WebContextFactory.get().getSession();HttpServletResponse response = WebContextFactory.get().getHttpServletResponse();HttpServletRequest request = WebContextFactory.get().getHttpServletRequest(); 阅读全文

解决利用hibernate连接mysql时无法插入汉字的问题

2013-12-31 11:07 by 雨打夏夜, 阅读(318) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:1、先修改mysql数据库的配置文件my.ini,此文件放在mysql安装文件的根目录下。找到default-character-set属性,并将其值更改为utf8(不是utf-8),将default-character-set属性全部属性的值修改为utf8。2、在mysql里创建新的数据库,显示设置数据库的编码格式,sql语句:create database MyDatabase charset=utf8;3、配置hibernate.cfg.xml文件里的连接字符串:jdbc:mysql://localhost:3306/MyDatabase?useUnicode=true& 阅读全文

MySql的数据库方言问题

2013-12-18 11:50 by 雨打夏夜, 阅读(1359) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:在使用hibernate将po(一般对象类)转化为数据库表时,如果mysql的版本为5.0之前的,则方言写为:org.hibernate.dialect.MySQLInnoDBDialect。如果是5.0之后的,则为org.hibernate.dialect.MySQL5InnoDBDialect。否则会报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type= 阅读全文

解决IE升级后必须以管理员运行的问题

2013-11-04 08:14 by 雨打夏夜, 阅读(354) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:很多网友可能都遇到过这样的问题,在ie升级后,无法打开,必须以管理员身份运行。今天我也遇到了这个问题。最终找到了解决办法。1、Win + R2、输入 regedit,定位到HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main3、右键点击Main >> 权限 >> 高级 >>4、勾选如下图中的复选框: 阅读全文

form表单里的button调用js函数

2013-09-17 22:23 by 雨打夏夜, 阅读(3629) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:近来发现一个特别奇怪的问题:在form表单里,button的onclick事件无法调用js函数。代码如下(这段代码放在form标签里): dropUpdateAddress调用的js函数为: 这个时候,“放弃修改”这个button是无法调用该js函数的。知道为什么吗?本人感觉很奇怪的答案:因为这个button有id这个属性。当我把id属性去掉后,js函数就可以执行了。 阅读全文
点击右上角即可分享
微信分享提示