如何做网站轮播大图,天津滨海新区旅游景点,网络营销的主要手段,网站建设为主题调研材料参考#xff1a;黑马程序员之微服务 #x1f4a5; 该系列属于【SpringBoot基础】专栏#xff0c;如您需查看其他SpringBoot相关文章#xff0c;请您点击左边的连接 目录
一、引言
二、配置共享
1. 添加共享配置到nacos
#xff08;1#xff09;jdbc的共享配置 shared… 参考黑马程序员之微服务 该系列属于【SpringBoot基础】专栏如您需查看其他SpringBoot相关文章请您点击左边的连接 目录
一、引言
二、配置共享
1. 添加共享配置到nacos
1jdbc的共享配置 shared-jdbc.yaml
2日志的共享配置 shared-log.yaml
3swagger共享配置 shared-swagger.yaml
2. 微服务从nacos拉取共享配置
1引入依赖
2新建bootstrap.yaml
3修改application.yaml
4测试
三、配置热更新
1. 添加配置到Nacos
2. 配置热更新 一、引言
微服务有几个问题需要解决 网关路由在配置文件中写死了如果变更必须重启微服务 某些业务配置在配置文件中写死了每次修改都要重启服务 每个微服务都有很多重复的配置维护成本高
这些问题都可以通过统一的配置管理器服务解决。而Nacos不仅仅具备注册中心功能也具备配置管理的功能 二、配置共享
以把微服务共享的配置抽取到Nacos中统一管理这样就不需要每个微服务都重复配置了。分为两步 在Nacos中添加共享配置 微服务拉取配置
1. 添加共享配置到nacos
在nocos的配置列表中新建配置 1jdbc的共享配置 shared-jdbc.yaml
spring:datasource:url: jdbc:mysql://${hm.db.host:192.168.88.128}:${hm.db.port:3306}/${hm.db.database}?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: ${hm.db.un:root}password: ${hm.db.pw:wangjx17}mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandlerglobal-config:db-config:update-strategy: not_nullid-type: auto 2日志的共享配置 shared-log.yaml
logging:level:com.hmall: debugpattern:dateformat: HH:mm:ss:SSSfile:path: logs/${spring.application.name}
3swagger共享配置 shared-swagger.yaml
knife4j:enable: trueopenapi:title: ${hm.swagger.title:黑马商城接口文档}description: ${hm.swagger.desc:黑马商城接口文档}email: zhanghuyiitcast.cnconcat: 虎哥url: https://www.itcast.cnversion: v1.0.0group:default:group-name: defaultapi-rule: packageapi-rule-resources:- ${hm.swagger.package}2. 微服务从nacos拉取共享配置
接下来我们要在微服务拉取共享配置。将拉取到的共享配置与本地的application.yaml配置合并完成项目上下文的初始化。
不过读取Nacos配置是SpringCloud上下文ApplicationContext初始化时处理的发生在项目的引导阶段。然后才会初始化SpringBoot上下文去读取application.yaml。
也就是说引导阶段application.yaml文件尚未读取根本不知道nacos 地址该如何去加载nacos中的配置文件呢
SpringCloud在初始化上下文的时候会先读取一个名为bootstrap.yaml(或者bootstrap.properties)的文件如果我们将nacos地址配置到bootstrap.yaml中那么在项目引导阶段就可以读取nacos中的配置了。 1引入依赖
在cart-service模块引入依赖 !--nacos配置管理--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!--读取bootstrap文件--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependency
2新建bootstrap.yaml
在cart-service中的resources目录新建一个bootstrap.yaml文件
spring:application:name: cart-service # 服务名称profiles:active: devcloud:nacos:server-addr: 192.168.88.128 # nacos地址config:file-extension: yaml # 文件后缀名shared-configs: # 共享配置- dataId: shared-jdbc.yaml # 共享mybatis配置- dataId: shared-log.yaml # 共享日志配置- dataId: shared-swagger.yaml # 共享日志配置
3修改application.yaml
server:port: 8082
feign:okhttp:enabled: true # 开启OKHttp连接池支持
hm:swagger:title: 购物车服务接口文档package: com.hmall.cart.controllerdb:database: hm-cart
4测试 购物车正常查询因此共享配置全部生效。
三、配置热更新
有很多的业务相关参数将来可能会根据实际情况临时调整。例如购物车业务购物车数量有一个上限默认是10对应代码如下 现在这里购物车是写死的固定值我们应该将其配置在配置文件中方便后期修改。
但现在的问题是即便写在配置文件中修改了配置还是需要重新打包、重启服务才能生效。能不能不用重启直接生效呢
这就要用到Nacos的配置热更新能力了分为两步 在Nacos中添加配置 在微服务读取配置
1. 添加配置到Nacos
首先我们在nacos中添加一个配置文件将购物车的上限数量添加到配置中
hm:cart:maxAmount: 1 # 购物车商品数量上限
注意文件的dataId格式 [服务名]-[spring.active.profile].[后缀名]
文件名称由三部分组成 服务名我们是购物车服务所以是cart-service spring.active.profile就是spring boot中的spring.active.profile可以省略则所有profile共享该配置 后缀名例如yaml
这里我们直接使用cart-service.yaml这个名称则不管是dev还是local环境都可以共享该配置。
2. 配置热更新
接着我们在微服务中读取配置实现配置热更新。
在cart-service中新建一个属性读取类 接着在业务中使用该属性加载类 重启springboot测试
此时购物车有一件商品 再次添加 把nocos的maxAmount配置修改成3然后重新发布 无需重启再次测试购物车功能 无需重启服务配置热更新就生效了