spring-cloud版本依赖查找地址:
|--https://github.com/spring-projects/spring-cloud/wiki#release-notes
spring-cloud-alibaba版本依赖查找地址:
|--https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
分布式微服务中的CAP原则:
|--一致性(Consistency):一个集群中的每个机器上的数据应保持一致
|--可用性(Availability):当集群中有节点宕机了,整个集群依旧可以对外提供服务
|--分区容错性(Partition tolerance):由于网络或者其他等原因,允许一个集群中各机器之间的数据出现短暂的不一致
|--注意CAP原则指的就是以上三个特性不能同时实现,最多只能同时实现两个
|--注意eureka注册中心采用AP原则,zookeeper注册中心采用CP原则
搭建基于eureka的项目:
|--搭建eureka注册中心
|--使用springboot构造器创建项目,并在起步依赖中勾选eureka server选项
|--修改pom文件,将springboot、springcloud的版本进行适配
|--一般使用2.3.12.RELEASE版本的springboot + Hoxton.SR12版本的springcloud
|--在springboot核心配置文件中配置eureka的服务名称和端口号,具体如下
|--server.port=端口号
|--spring.application.name=服务名称
|--在springboot的启动类上方添加 @EnableEurekaServer注解开启eureka服务端功能
|--注意每个eureka服务端同时也可以是eureka客户端
|--搭建客户端
|--使用springboot构造器创建项目,并在起步依赖中勾选eureka Discovery Client选项和Spring Web选项
|--修改pom文件,将springboot、springcloud的版本进行适配
|--一般使用2.3.12.RELEASE版本的springboot + Hoxton.SR12版本的springcloud
|--在springboot核心配置文件中配置eureka的服务名称和端口号,具体如下
|--server.port=端口号
|--spring.application.name=服务名称
|--在springboot核心配置文件中注册服务,具体如下
|--eureka.client.service-url.defaultZone=http://XX:YY/eureka
|--XX为eureka注册中心的ip地址
|--YY为eureka注册中心的端口号
|--注意如果同时向多个注册中心注册用逗号间隔即可
|--在springboot的启动类上方添加 @EnableEurekaClient注解开启eureka客户端功能
|--注意如果想复制客户端并仅仅只改端口的话,可以如下操作
|--在启动编辑配置项中复制一份启动项
|--设置Configuratrion表单中Environment栏的Program arguments属性值为--server.port=端口号
eureka常用配置:
|--eureka.server.eviction-interval-timer-in-ms=XX
|--用于设置注册中心间隔多久执行一次删除操作
|--eureka.server.renewal-percent-threshold=XX
|--用于设置续约百分比,即如果执行删除操作时超过该百分比的客户端未进行续约,则不删除任何一个
|--eureka.instance.instance-id=XX
|--用于设置服务实例的id(一般为主机名:服务名:服务端口号)
|--注意主机名、服务名、服务端口号一般都通过${}动态获取配置文件中的
|--eureka.instance.hostname=XX
|--用于设置服务实例的主机名
|--eureka.instance.lease-renewal-interval-in-seconds=XX
|--用于设置服务向注册中心续约的时间间隔
|--eureka.client.register.with.eureka=XX
|--用于设置该服务是否往注册中心中注册,XX为true时表示注册,为false时表示不注册
|--eureka.client.fetch-registry=XX
|--用于设置客户端是否拉取注册中心中的列表在本地缓存,XX为true时表示拉取,为false时表示不拉取
|--eureka.client.interval-seconds=XX
|--用于设置客户端拉取注册中心列表的时间间隔
eureka集群搭建:
|--建立多个eureka注册中心,并且注册中心之间两两注册
|--这是利用了eureka注册中心也可以做客户端和客户端可以拉取注册中心列表的特性完成集群
|--注意一个集群中每个eureka注册中心的名称应保持一样,变的只是端口号
服务发现(即同一个注册中心中的服务可以相互得到其他服务的信息):
|--在需要得到其他服务信息的地方注入DiscoveryClient对象
|--注意DiscoveryClient类不是eureka提供的,而是springcloud社区提供的
|--通过DiscoveryClient对象调用getInstances(XX)即可取到注册中心中指定服务的对象
|--XX为需要取到服务信息的服务应用名
|--注意由于一个服务可能部署在多个服务器上,故该对象是一个集合
|--根据服务的对象即可调用各种方法取到诸如ip、port等一系列信息,拼出请求地址
RestTemplate实现服务交互:
|--根据eureka服务发现拼出需要请求的url地址
|--实例化RestTemplate,并通过实例化对象调用各种方法发送请求
|--getForObject(XX,YY):发送get请求,得到响应报文
|--XX为请求的url地址
|--YY用于设置返回数据的类型
|--注意get请求要传数据的话直接拼在路径中即可
|--getForEntity(XX,YY):发送get请求,得到整个响应体
|--XX为请求的url地址
|--YY用于设置返回数据的类型
|--注意get请求要传数据的话直接拼在路径中即可
|--postForObject(XX,YY,ZZ):发送post请求,得到响应报文
|--XX为请求的url地址
|--YY为需要发送的内容
|--注意发送的内容为对象的话,会自动将其转换为json字符串
|--ZZ用于设置返回数据的类型
|--postForEntity(XX,YY,ZZ):发送post请求,得到整个响应体
|--XX为请求的url地址
|--YY为需要发送的内容
|--注意发送的内容为对象的话,会自动将其转换为json字符串
|--ZZ用于设置返回数据的类型
springcloud中ribbon组件的使用:
|--依赖准备(应确保已经具备了eureka客户端的环境)
|--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
|--在启动类中构建RestTemplate的bean对象并纳入spring容器的管理,具体如下
|-- @Bean
public RestTemplate createRestTemplate(){
return new RestTemplate();
}
|--在第二步的基础上将RestTemplate的对象的操作权限授予ribbon,具体如下
|-- @Bean
@LoadBalanced
public RestTemplate createRestTemplate(){
return new RestTemplate();
}
|--配置ribbon的负载均衡算法
|--局部配置(即指定该消费者调用的个别服务采用该算法)
|--在消费者的springboot核心配置文件中修改ribbon负载均衡的策略,具体如下
|--XX.ribbon.NFLoadBalancerRuleClassName:YY
|--XX为需要修改负载均衡策略的服务应用名
|--YY为所采用负载均衡策略的全限定类名
|--全局配置(即该消费者调用的所有服务均采用该算法)
|--在启动类中构建IRule对象并纳入spring容器的管理,具体如下
|-- @Bean
public IRule myRule(){
return XX;
}
|--XX为需要采用的负载均衡策略的实例化对象
|--注意不做配置的话ribbon默认采用轮询算法
|--在需要访问其他服务的地方注入RestTemplate实例化对象
|--通过RestTemplate实例化对象调用各种方法即可访问其他服务
|--注意可以调用的方法与RestTemplate原生的一致
|--注意此时应用所访问服务的服务名代替url中的ip地址和端口号
|--此时url的格式为http://服务应用名/处理器路径
|--注意被ribbon托管的RestTemplate对象是无法再使用原生ip+端口号的请求方式
|--可以理解为ribbon其实就是拦截了发送的请求,通过服务发现和负载均衡算法后,重构了请求地址后做二次发送
springboot中feign组件的使用:
|--依赖准备(应确保已经具备了eureka客户端的环境)
|--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
|--在启动类的上方添加 @EnableFeignClients开启feign的功能
|--定义一个接口专门用于服务调用,具体格式如下
|-- @FeignClient(value="XX")
public interface YY(){ZZ}
|--XX为需要调用的服务应用名
|--YY为自定义的接口名
|--ZZ为需要调用服务中处理函数的注解+方法签名
|--注意与所调用服务中处理函数形参列表不同的是,该接口中函数的形参都应加上对应的注解
|--基本类型应添加 @RequestParm注解
|--对象类型应添加 @RequestBody注解
|--REST风格参数应添加 @PathVariable注解
|--在核心配置文件中配置feign的调用超时时间
|--ribbon.ReadTimeout:XX
|--XX用于设置超时时间
|--在核心配置文件中配置feign的连接超时时间
|--ribbon.ConnectTimeout:XX
|--XX用于设置超时时间
|--开启feign的日志功能
|--在启动类中构建Logger.level对象并纳入spring容器的管理,具体如下
|-- @Bean
public Logger.level level(){
return Logger.level.FULL;
}
|--在核心配置文件中设置日志级别
|--logging.level.XX=YY
|--XX为用于服务调用接口的全限定名
|--YY用于设置日志级别
|--在需要调用服务的地方注入服务调用接口对象
|--通过服务调用接口对象调用接口中的方法即可完成最终的功能调用
|--可以理解为feign其实就是对ribbon的封装(即通过反射机制取到服务名、处理器路径、请求参数后调用ribbon进行请求)
springcloud中hystrix组件(即熔断器组件)的使用:
|--依赖准备(应确保已经具备了eureka客户端和feign的环境)
|--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
|--编写熔断器类并实现用于服务调用的接口
|--注意该熔断器类必须纳入spring容器的管理
|--在进行服务调用的接口上的 @FeignClient注解中添加fallback=XX属性
|--XX为熔断类类名.class
|--在核心配置文件中开启feign请求下的熔断器功能
|--feign.hystrix.enabled=true
|--hystrix组件常用配置:
|--hystrix.command.default.circuitBreaker.requestVolumeThreshold:XX
|--XX为失败阈值
|--hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds:XX
|--XX为窗口时间
|--熔断运行流程简单剖析
|--一旦有新服务进行注册就为该服务准备一个熔断器,并将熔断器设置为默认关闭状态
|--每次访问失败会记录当前失败次数
|--一旦监测到规定窗口时间范围内失败次数到达指定值时会开启熔断器
|--在熔断器开启一小段时间后将熔断器设置为半开状态,允许少量请求尝试访问,看看服务是否修好
|--一旦有请求访问成功,再次将熔断器设置为关闭状态并重置失败次数
|--可以理解为熔断器就是提前准备一个备用方案,以便在目标服务宕机时整个程序不会挂掉
springcloud中链路追踪(即Zipkin监控中心)的使用:
|--下载并启动zipkin监控中心
|--下载地址:https://repo1.maven.org/maven2/io/zipkin/zipkin-server/2.24.0/zipkin-server-2.24.0-exec.jar
|--执行java -jar XX命令运行zipkin
|--XX为下载好的zipkin包
|--在所有需要被监控的服务中添加如下依赖
|--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
|--在所有需要被监控服务的核心配置文件中进行配置,具体如下
|--spring.zipkin.base-url:http://XX:YY
|--XX为监控中心所在的ip地址
|--YY为监控中心所在的端口号
|--spring.sleuth.sampler.probability:XX
|--XX用于设置抽样采集的比例(取值范围为0~1)
|--spring.sleuth.sampler.rate:XX
|--XX用于设置采集的时间间隔
|--通过http://localhost:9411/zipkin 即可访问监控中心界面
|--注意zipkin监控中心监控的是各个服务之间调用的过程信息
springcloud中admin监控中心的使用:
|--监控服务端
|--依赖准备
|--<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-dependencies</artifactId>
<version>版本号</version>
<type>pom</type>
<scope>import</scope>
</dependency>
|--将监控服务注册到注册中心
|--在监控服务的启动类上添加 @EnableAdminServer注解开启监控功能
|--监控客户端
|--依赖准备
|--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
|--在核心配置文件中设置允许监控中心访问自己的所有信息,具体如下
|--management.endpoints.web.exposure.include:'*'
|--可以理解为admin监控的原理就是将自己打入注册中心,通过拉取注册中心的列表来进而获得服务的各种信息
|--注意admin监控中心监控的是各个服务的详细信息
springcloud中gateway(即网关)的使用:
|--依赖准备(应确保已经具备了eureka客户端的环境)
|--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-boot-starter-gateway</artifactId>
</dependency>
|--注意网关模块用的是netty服务器,一定不能导入springmvc依赖
|--配置网关(非动态路由方式)
|--方式一:在核心配置文件中配置网关信息,具体如下
|--server.port=XX
|--XX用于设置网关的端口
|--spring.application.name=XX
|--XX用于设置网关的服务应用名
|--spring.cloud.gateway.enabled=XX
|--XX用于设置网关是否开启,true表示开启,false表示关闭
|--spring.cloud.gateway.routes[XX].id=YY
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置需转发路由的id
|--spring.cloud.gateway.routes[XX].uri=http://YY:ZZ
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置需转发路由所在的ip地址
|--ZZ用于设置需转发路由所在的端口号
|--spring.cloud.gateway.routes[XX].predicates[YY].Path=ZZ
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置是配置第几个断言规则
|--ZZ用于设置断言规则
|--方式二:在配置类中配置网关信息,具体如下
|--public RouteLocator customRouteLocator(RouteLocatorBuilder builder){
return builder.routes()
.route("XX",r->r.path("YY").uri("http://ZZ:KK"))
.build();
}
|--XX用于设置需转发路由的id
|--YY用于设置断言规则
|--ZZ用于设置需转发路由所在的ip地址
|--KK用于设置需转发路由所在的端口号
|--配置网关(动态路由方式)
|--在核心配置文件中进行配置,具体如下
|--spring.cloud.gateway.discovery.locator.enabled=XX
|--XX用于设置是否开启动态路由,true表示开启,false表示不开启
|--spring.cloud.gateway.discovery.locator.lower-case-service-id=XX
|--XX用于设置应用服务名是否采取小写模式,true表示采取,false表示不采取
|--注意使用动态路由必须确保网关服务也位于注册中心中
|--注意使用动态路由后默认的断言规则就是注册中心中各个服务的服务名
|--断言工厂(即为我们准备好的一些辅助性断言规则),常用的如下
|--spring.cloud.gateway.routes[XX].predicates[YY].After=ZZ
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置是配置第几个断言规则
|--ZZ用于设置在什么时间后才可以访问该路由
|--spring.cloud.gateway.routes[XX].predicates[YY].Before=ZZ
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置是配置第几个断言规则
|--ZZ用于设置在什么时间前才可以访问该路由
|--spring.cloud.gateway.routes[XX].predicates[YY].Method=ZZ
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置是配置第几个断言规则
|--ZZ用于设置什么请求方式才可以访问该路由
|--spring.cloud.gateway.routes[XX].predicates[YY].Query=ZZ
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置是配置第几个断言规则
|--ZZ用于设置必须携带什么参数才可以访问该路由
|--注意断言工厂对动态路由不生效
|--自定义网关过滤器
|--自定义过滤器类并实现GlobalFilter接口中的filter()方法和Ordered接口中的getOrder()方法
|--在filter()方法中编写我们的过滤业务
|--通过方法提供的ServerWebExchange对象调用getRequest()方法即可获取ServerHttpRequest对象
|--使用ServerHttpRequest对象调用各种方法即可获取到请求的相关信息
|--通过方法提供的ServerWebExchange对象调用getResponse()方法即可获取ServerHttpResponse对象
|--使用ServerHttpResponse对象调用各种方法即可设置响应的相关信息
|--通过方法提供的GateWayFilterChain对象调用filter(XX)方法即可对请求放行
|--XX为ServerWebExchange对象
|--在getOrder()方法中设置该过滤器类的执行顺序
|--解决网关访问跨域问题(在核心配置文件中进行如下配置即可)
|--spring.cloud.gateway.globalcors.corsConfigurations.'[/**]'.allowCredentials:true
|--spring.cloud.gateway.globalcors.corsConfigurations.'[/**]'.allowedHeaders:'*'
|--spring.cloud.gateway.globalcors.corsConfigurations.'[/**]'.allowedMethods:'*'
|--spring.cloud.gateway.globalcors.corsConfigurations.'[/**]'.allowedOrigins:'*'
|--注意网关应该单独为一个服务模块
|--可以理解为请求访问网关,网关去查找路由容器,根据断言规则进行匹配,匹配成功后根据对应的uri拼出url进行转发
|--gateway和nginx的区别
|--gateway是项目级别的,而nginx是服务器级别的(可以理解为先通过nginx确定gateway,再通过gateway定位服务)
springcloud-alibaba中nacos注册中心的使用:
|--启动
|--下载并解压nacos压缩包
|--下载地址:https://github.com/alibaba/nacos/tags
|--可以理解为别人帮我们写好了这个注册中心,我们下下来用就好
|--创建用于支持nacos的数据库,并将解压后nacos/conf文件夹下的nacos-mysql.sql导入数据库
|--修改解压后nacos/conf文件夹下的application.properties文件
|--将spring.datasource.platform的注释打开并修改为我们自己创建的数据库信息
|--将db.num的注释打开并修改为我们自己创建的数据库信息
|--将db.url.0的注释打开并修改为我们自己创建的数据库信息
|--将db.user.0的注释打开并修改为我们自己创建的数据库信息
|--将db.password.0的注释打开并修改为我们自己创建的数据库信息
|--修改解压后nacos/conf文件夹下的startup.cmd文件
|--修改set MODE="XX"设置nacos的启动模式
|--XX为cluster表示集群模式
|--XX为standalone表示单机模式
|--双击nacos/conf文件夹下的startup.cmd文件即可启动nacos
|--注册
|--在需要注册的服务模块中添加如下依赖(确保已经具备基础的web环境)
|--<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>版本号</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>版本号</version>
</dependency>
|--在需要注册的服务模块核心配置文件中进行配置,具体如下
|--server.port=XX
|--XX用于设置服务的端口号
|--spring.application.name=XX
|--XX用于设置服务的名称
|--spring.cloud.nacos.server-addr=XX:YY
|--XX为注册中心的ip地址
|--YY为注册中心的端口号
|--spring.cloud.nacos.username=XX
|--XX为访问注册中心的用户名
|--spring.cloud.nacos.password=XX
|--XX为访问注册中心的密码
|--spring.cloud.nacos.discovery.namespace=XX
|--XX为命名空间的id,不做设置的话默认为public空间
|--spring.cloud.nacos.discovery.group=XX
|--XX为组名称,不做设置的话默认为default组
|--spring.cloud.nacos.discovery.service=XX
|--XX用于设置该服务在注册中心中的名字,不做设置的话默认为该服务的名称
|--在需要注册的服务模块启动类上方添加 @EnableDiscoveryClient注解开启注册功能
|--服务发现
|--注入DiscoveryClient实例对象
|--通过DiscoveryClient实例对象调用getInstances("XX")获得注册中心中指定服务的对象
|--XX为指定服务在注册中心中的名字
|--注意nacos中只能发现同一命名空间下同一组别内的其他服务
|--集群搭建
|--修改解压后nacos/conf文件夹下的cluster.conf文件,具体如下
|--XX:YY
|--XX为集群中nacos的IP地址
|--YY为集群中nacos的端口号
springcloud-alibaba中集成openFeign组件:
|--依赖准备(确保具备springcloud和nacos的依赖环境)
|--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
|--在启动类的上方添加 @EnableFeignClients开启feign的功能
|--定义一个接口专门用于服务调用,具体格式如下
|-- @FeignClient(value="XX")
public interface YY(){ZZ}
|--XX为需要调用的服务在注册中心中的名字
|--YY为自定义的接口名
|--ZZ为需要调用服务中处理函数的注解+方法签名
|--注意与所调用服务中处理函数形参列表不同的是,该接口中函数的形参都应加上对应的注解
|--基本类型应添加 @RequestParm注解
|--对象类型应添加 @RequestBody注解
|--REST风格参数应添加 @PathVariable注解
|--在需要调用服务的地方注入服务调用接口对象
|--通过服务调用接口对象调用接口中的方法即可完成最终的功能调用
|--其他关于openFeign的操作同springcloud中一致
springcloud-alibaba中集成gateway组件:
|--依赖准备(应确保已经具备了springcloud和nacos的依赖环境)
|--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-boot-starter-gateway</artifactId>
</dependency>
|--注意网关模块用的是netty服务器,一定不能导入springmvc依赖
|--在网关服务的核心配置文件中将网关注册至注册中心
|--注意由于nacos注册中心的特性,网关也只对同一命名空间下同一组内的服务生效
|--在网关服务的核心配置文件中配置网关,具体如下
|--非动态路由方式
|--server.port=XX
|--XX用于设置网关的端口
|--spring.application.name=XX
|--XX用于设置网关的服务应用名
|--spring.cloud.gateway.enabled=XX
|--XX用于设置网关是否开启,true表示开启,false表示关闭
|--spring.cloud.gateway.routes[XX].id=YY
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置需转发路由的id
|--spring.cloud.gateway.routes[XX].uri=http://YY:ZZ
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置需转发路由所在的ip地址
|--ZZ用于设置需转发路由所在的端口号
|--spring.cloud.gateway.routes[XX].predicates[YY].Path=ZZ
|--XX用于设置是配置哪一个路由的信息
|--YY用于设置是配置第几个断言规则
|--ZZ用于设置断言规则
|--动态路由方式
|--在核心配置文件中进行配置,具体如下
|--spring.cloud.gateway.discovery.locator.enabled=XX
|--XX用于设置是否开启动态路由,true表示开启,false表示不开启
|--spring.cloud.gateway.discovery.locator.lower-case-service-id=XX
|--XX用于设置应用服务名是否采取小写模式,true表示采取,false表示不采取
|--注意使用动态路由必须确保网关服务也位于注册中心中
|--注意使用动态路由后默认的断言规则就是注册中心中各个服务的服务名
|--其他关于gateway的操作同springcloud中一致
springcloud-alibaba中nacos对配置文件的管理:
|--在注册中心页面的配置管理模块创建需要的配置文件
|--修改核心配置文件的名字为bootstrap.properties
|--在bootstrap.yml文件中进行如下配置
|--读取单个配置文件方式
|--spring.cloud.nacos.server-addr=XX:YY
|--XX为注册中心的ip地址
|--YY为注册中心的端口号
|--spring.cloud.nacos.config.username=XX
|--XX为访问注册中心的用户名
|--spring.cloud.nacos.config.password=XX
|--XX为访问注册中心的密码
|--spring.cloud.nacos.config.namespace=XX
|--XX为命名空间的id,不做设置的话默认为public空间
|--spring.cloud.nacos.config.group=XX
|--XX为组名称,不做设置的话默认为default组
|--spring.cloud.nacos.config.prefix=XX
|--XX为需要读取配置文件在注册中心的名字,不做设置的话默认为当前服务的名称
|--spring.cloud.nacos.config.file-extension=XX
|--XX用于设置以哪种格式读取注册中心中的配置文件,默认为properties
|--读取多个配置文件方式
|--spring.cloud.nacos.server-addr=XX:YY
|--XX为注册中心的ip地址
|--YY为注册中心的端口号
|--spring.cloud.nacos.config.username=XX
|--XX为访问注册中心的用户名
|--spring.cloud.nacos.config.password=XX
|--XX为访问注册中心的密码
|--spring.cloud.nacos.config.namespace=XX
|--XX为命名空间的id,不做设置的话默认为public空间
|--spring.cloud.nacos.config.extension-configs[XX].dataId=YY
|--XX用于设置是第几个配置文件
|--YY用于设置所读取配置文件的id
|--spring.cloud.nacos.config.extension-configs[XX].group=YY
|--XX用于设置是第几个配置文件
|--YY用于设置所读取配置文件所在的组名称
|--spring.cloud.nacos.config.file-extension=XX
|--XX用于设置以哪种格式读取注册中心中的配置文件,默认为properties
|--后缀踩坑
|--在注册中心中创建的配置文件名有时候需要加后缀才能读取的到,具体的视情况而定
|--一般来说会都加上后缀,因为加后缀一定能读取的到