服务注册+配置中心+总线
Nacos=Eureka+Config+Bus
优点:支持AP,CP模式切换
父POM
- <dependencyManagement>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>Greenwich.SR3</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencyManagement>
2.1 子POM
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
- </dependency>
2.2.YML
- server:
- port: 9001
-
- spring:
- application:
- name: nacos-payment-provider
- cloud:
- nacos:
- discovery:
- server-addr: localhost:8848 #配置Nacos地址
-
- management:
- endpoints:
- web:
- exposure:
- include: '*'
2.3. 主启动类
@EnableDiscoveryClient
2.4 业务类
3.1 基础配置
3.1.1 子POM
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
- </dependency>
3.1.2 YML
3.1.2.1 bootstrap
- # nacos配置
- server:
- port: 3377
-
- spring:
- application:
- name: nacos-config-client
- cloud:
- nacos:
- discovery:
- server-addr: localhost:8848 #Nacos服务注册中心地址
- config:
- server-addr: localhost:8848 #Nacos作为配置中心地址
- file-extension: yaml #指定yaml格式的配置
-
-
- # ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
3.1.2.2 application
- spring:
- profiles:
- active: dev # 表示开发环境
3.1.3 主启动类
@EnableDiscoveryClient
3.1.4 业务类
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能
3.1.5 配置公式
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
3.2 分类配置
Namespace+Group+Data ID三者关系?为什么这么设计?
3.2.1 是什么
类似Java里面的package名和类名
最外层的namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。
3.2.2 三者情况
默认情况:
Namespace=public,Group=DEFAULT_GROUP, Cluster是DEFAULT
Nacos默认的命名空间是public,Namespace主要用来实现隔离。
比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。
Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去
Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认 Cluster DEFAULT,Cluster是对指定微服务的一个虚拟划分。比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。
最后是Instance,就是微服务的实例。
3.2.3 NAMESPACE方案
bootstrap
- # nacos注册中心
- server:
- port: 3377
-
- spring:
- application:
- name: nacos-order
- cloud:
- nacos:
- discovery:
- server-addr: localhost:8848 #Nacos服务注册中心地址
- config:
- server-addr: localhost:8848 #Nacos作为配置中心地址
- file-extension: yaml #这里我们获取的yaml格式的配置
- namespace: 5da1dccc-ee26-49e0-b8e5-7d9559b95ab0
- #group: DEV_GROUP
- group: TEST_GROUP
application
- # Nacos注册配置,application.yml
- spring:
- profiles:
- #active: test
- active: dev
- #active: info
默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。
为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。
