// TODO 2022-08-04
Dynamic Naming and Configuration Service
Spring Cloud Alibaba Nacos = SpringCloudEureka + SpringCloudConfig(git) +SpringCloudBus(Kafka或RabbitMQ)
Nacos就是:注册中心 + 配置中心的组合
配置文件加载顺序,两方面:文件名,文件类型
重点:
Spring Cloud 组件:重要组件,所承担的角色;列出优缺点,是否维护,为何被替代
远程文件配置以及加载顺序
灰度发布
问题:
实现原理?
为什么快?
配置文件优先级??
配置问题:1.指明了文件拓展类型是否还可以用其他类型文件,如: file-extension: properties,是否下面可以用yml文件?
shared-configs不用下标直接写重复文件会被覆盖还是直接报错?
同时承担:
Nacos:服务注册中心、配置中心
Sentinel:流控、服务降级
Seata:分布式事务
RocketMQ:时间驱动
Dubbo:微服务调用(Java)
可以把Nacos理解为一个中介,连接消费者consumer和生产者provider
// todo 画图
对比和优势:
集成dubbo, 怎么集成的,其他的也能用,有什么区别?dubbo和http的区别?ribbon转发 dubbo openfeign(feign)
集成k8s
@LoadBalanced //ribbon的负载均衡注解-网关的负载均衡 (算法几种?怎么配置?)
常见问题:
https://www.youkuaiyun.com/tags/Mtjagg4sODAzMzktYmxvZwO0O0OO0O0O.html
主流的配置中心:Spring Cloud Config、Apollo(携程)、Nacos(阿里);Apollo支持最完善,性能上nacos>Apollo>Spring Cloud Config.
服务注册发现:Nacos、Eureka、Consult、Zookeeper;从上面的对比可以知道,Nacos作为服务发现中心具备更多的功能支持,且从长远来看Nacos在以后的版本会支持SpringCloud+K8s的组合,填补两者的鸿沟,在两套体系下可以采用同一套服务发现和配置管理的解决方案,这将大大的简化使用和维护成本。
参考:https://www.cnblogs.com/jpymll/p/15843342.html
- 注册发现:服务发现与服务健康检查
- 配置中心:动态配置管理
- 动态DNS服务
- 服务和元数据管理
从配置中心角度来看,性能方面Nacos的读写性能最高,Apollo次之,Spring Cloud Confifig依赖Git场景不适合开
放的大规模自动化运维API。功能方面Apollo最为完善,nacos具有Apollo大部分配置管理功能,而Spring Cloud
Confifig不带运维管理界面,需要自行开发。Nacos的一大优势是整合了注册中心、配置中心功能,部署和操作相比
Apollo都要直观简单,因此它简化了架构复杂度,并减轻运维及部署工作。
项目地址:https://github.com/alibaba/nacos/
# 非集群启动,单机启动 # Linux/Unix/Mac 操作系统,执行命令 sh startup.sh -m standalone # Windows 操作系统,执行命令 startup.cmd -m standalone
使用:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
配置文件
代码
nacos config可以读取三种类型的配置文件内容:
- 基础配置文件。
- 扩展配置文件,可以多个。
- 共享配置文件,可以多个。
想读取那个配置文件,均需要手动指定
3、配置文件加载优先级:a < b1 < b2 < c1 < c2 < d1 < d2 < e < f a、application.properties b1、bootstrap.properties b2、bootstrap-{profile}.properties c1、通过 spring.cloud.nacos.config.shared-configs[1].data-id 支持多个共享 Data Id 的配置 c2、通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置 d1、通过 spring.cloud.nacos.config.extension-configs[0].data-id 的方式支持多个扩展 Data Id 的配置 d2、通过 spring.cloud.nacos.config.extension-configs[n].data-id e、通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置 ,如 scrm-base-service.properties f、VM option