alibaba_cloud(alibabacloudlinux)

5个月前 (04-23)

alibaba_cloud(alibabacloudlinux)

11:服务配置中心:Nacos Config

11.1,服务配置中心

首先我们来看看微服务架构下配置文件的一些问题:

配置文件的相对哈希。在微服务架构下,配置文件会随着微服务的增加越来越多,会分散在各个微服务中,统一配置和管理。配置文件无法区分环境。微服务项目可能有多个环境,如测试环境、预发布环境和生产环境。每个环境使用不同的配置。一旦需要修改,我们需要手动维护每个微服务,难度很大。配置文件不能实时更新。我们修改配置文件后,必须重启微服务才能使配置生效,这对于正在运行的项目来说是非常陌生的。基于这些问题,除了解决这些问题,我们还需要配置中心。配置的思想是:

首先,在一个集中的位置管理项目中的所有配置,并提供一组标准接口。当需要配置每项服务时,配置*接口以获取配置。在配置中心更新各种参数时,也会通知各服务同步的信息,以便动态更新。添加服务配置中心后,我们的系统架构图如下所示:

业内有几种类型的服务配置中心:

Apollo阿波罗是携程开源的分布式配置中心。功能很多,比如:配置更新后可以实时生效,支持灰度发布功能,可以使用所有配置进行管理、操作和审计等。并提供开放平台API。信息也写得很详细。Disconf Disconf是Pali的一个开源分发中心。它基于ZooKeeper实现了实时通知,并在配置改变后生效。这是Spring cloud中的配置中心组件。它与Spring无缝集成,使用起来非常方便,其配置存储支持Git。但是它没有可视化的操作界面,配置的有效性不是实时的,需要重启或者刷新。这是SpingCloud阿里巴巴技术栈中的一个组件。我们用它在前面有一个服务注册中心。其实它还集成了服务配置的功能,我们可以直接把它作为服务配置中心。11.2,Nacos Config入门

使用Nacos作为配置中心。实际上,它以NacoS为服务器,以每个微控制器为客户端。我们会在Nacos上统一每个微服务的配置文件,然后每个微服务会从Nacos上拉配置。

1介绍产品的微服务

com . Alibaba . cloud . groupid spring-cloud-start-Alibaba-Nacos-Config器id依赖代码在微服务中添加Nacos Config配置。

您不能使用原始应用程序。YML作为配置文件,但是创建一个新的BootStrap.yml作为配置文件。

配置文件优先级(从高到低):bootstrap . properties-bootstrap . yml-application . properties-application . yml

我注意到原始的YML配置文件保留了下来,只留下了惟一的配置,比如端口和服务名。

spring:application:name:product Service cloud:Nacass:configuration:server-addr:127 . 0 . 0 . 1:8848 # Nacos中心地址文件扩展名:yaml# # Profile格式介绍:activity: dev# #环境ID代码在Nacos中添加配置,然后将order Micro Service application . yml配置到配置内容中。

它是本地应用程序中的内容,启动程序经过测试。

11.3,Nacos Config配置动态刷新

我们已经实现了远程存储,但是如果修改配置,我们的程序就无法读取,所以需要开启配置的动态刷新功能。

Nacos中Order-service-dev.yaml配置键中的此配置(它必须位于远程配置文件中,而不是本地)

配置:AppName:Order# #不代表只要测试动态刷新,当你更改参数时,请参考是否可以动态刷新代码,在订单微服务中添加NacosconFigControlller。

@ restcontroller。@ refresh scope//动态刷新公共类nacosconfigcontroller { @ value(" $ { appconfig . name })私有字符串AppConfigname的说明;@ requestmapping ("/nacosconfig1 ")公共字符串nacosconfig(){ returns " remote information:app configname;}}复杂

制代码11.4,NACOS配置配置共享

当配置越来越多时,我们发现有许多配置要重复。此时,我们需要考虑提取公共1个配置文件,然后实现需要直接导入的配置文件共享。

11.4.1,在相同微型服务的不同环境之间共享配置

如果要在同一微服务的不同环境之间配置共享,则只需提取由Spring.Application.name(Spring.Service Name)名的配置文件,然后将公共配置放入其所有环境中。创建新订单服务.YAML配置文件此配置文件用于存储公共配置文件。

服务器: 港口:8080 Tomcat: 线程: 最多:10#Tomcat的并发值修改为10,春天: 紫皮金: Base-URL:http://127.0.0.1:9411/ #zzipkin服务器请求地址 DiscoveryClientEnabled:False#让Nacos作为URL,不是服务名称 雪松: 取样器: 概率:1.0#百分比 应用: 名称:订单服务 数据源: 驱动程序类 - 名称:com.mysql.jdbc.driver URL:JDBC:MySQL:///商店 - 产品? ServerTimeZone = UTC&UnderUnicode = True&CharmentEncoding = UTF-8和USESSL = TRUE 用户名:root. 密码:1101121833 云: 纳卡斯: 发现: Server-addr:localhost:8848 哨: 运输: 端口:9999#与控制台的端口,您将自由指定未使用的端口。 仪表板:localhost:8080#指定控制台服务的地址 网络上下文统一:FALSE JPA: 特性: 休眠: HBM2DDL: 自动更新 DIALECT:org.hibernate.dialect.mysql5innodbdalect.产品 - 服务:#提供的提供商的名称 丝带: nfloadbalancerreClassName:com网站站点" rel="nofollow" />