使用Nacos代替eureka,步骤与eureka类似
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
spring: cloud: nacos: server-addr: localhost:8848
Nacos服务分级存储模型
启动:
startup.cmd -m standalone
服务-集群-实例。
在服务调用时,尽可能访问本地集群,跨集群调用延迟很高。本地集群不可访问时,再去访问其他集群。
如何配置集群:
cloud: nacos: server-addr: localhost:8848 discovery: cluster-name: Bocai
如希望负载均衡的策略为优先调用本地集群的实例,则需要修改策略
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务 ribbon: NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
NacosRule特点:
优先访问本地集群
本地集群内的多个服务采用随机方式
如果本地集群中的所有服务都无法访问,则会跨集群访问。
A cross-cluster call occurs,name = userservice # 一次跨集群的访问发生了
环境隔离
namespace——命名空间
一个命名空间中的服务可以互相调用,但是不同的namespace中的不能调用。
java.lang.IllegalStateException: No instances available for userservice //找不到userservice可用的实例
cloud: nacos: server-addr: localhost:8848 discovery: namespace: c043e4a4-9940-470a-a313-a438392f8d7a # 命名空间
eureka与nacos
ephemeral: false #非临时实例
Nacos统一配置管理
在Nacos-配置管理中新建一个配置
一般明明规范为:xx(哪一个服务)-xx(哪一个环境).yaml,如:userService-dev.yaml
将核心配置填写在配置内容中,一般为一些可能会发生变化的配置,在开发环境中怎么样,项目上线了怎么样。
一般流程:
现在需要先读取nacos配置文件在读取本地文件,但是nacos的地址写在本地文件中,因此引入优先级更高的bootstrap.yml
配置文件
spring: application: name: userservice # 服务名称 profiles: active: dev #开发环境,这里是dev cloud: nacos: server-addr: localhost:8848 # Nacos地址 config: file-extension: yaml # 文件后缀名