Nacos做注册中心相关 (使用版本 springboot 2.3.6RELEASE ; springcloud Hoxton.SR10 ; springcloudalibaba 2.2.6RELEASE 。 )

(有时候版本太高就算配置,注解什么的度没问题还是会报注册不上nacos,例如 boot2.3.12RELEASE ; cloudSR12 ; cloudalibaba2.2.12RELEASE 会报错)

Nacos是Alibaba的产品。因为 springcloud官方有些组件已经停更了。所以 阿里 自己写了一些用来替代

注册中心

  • 安装Nacos(服务端) : windows版,解压缩包即可。 Nacos默认就请你模式,若要单例模式运行要改配置文件 bin/startup.cmd 里model 的值为 "standlone",然后双击startup.cmd即可启动。
    或者默认启动时带参数 -m standlone
  • 客户端注册:
  1. 引依赖:
    spring-cloud-alibaba-dependencies
    spring-cloud-starter-alibaba-nacos-discovery
  2. 配置文件:spring.cloud.nacos.server-addr:localhost:8848
  3. 启动类加注解 @EnableDiscoveryClient

配置集群(配置完后,各服务之间调用优先调用同一个集群的,)
默认的 ZoneAvoidanceRule 并不能实现根据同集群优先来实现负载均衡;
因此Nacos中提供了一个 NacosRule 的实现,可以优先从同集群中挑选实例。

点击查看代码
user-server: # Nacos中,服务的名字
  ribbon:
     NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  #负载均衡规则

服务权重配置
默认情况下NacosRule是同集群内随机挑选,不会考虑机器的性能问题。因此,Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高
在Nacos控制台找到 提供者(要调用的服务)的实例列表,点击编辑即可修改权重。 权重越大可访问的频率就越高。默认为 1, 若权重为 0 则该实例永远不会被访问

环境隔离

  • nacos中可以有多个namespace
  • namespace下可以有group、service等
  • 不同namespace之间相互隔离,例如不同namespace的服务互相不可见
    创建命名空间:Nacos控制台--->点击左侧 命名空间--->新建命名空间--->按要求填写表单;
    给微服务配置namespace: spring.cloud.nacos.discovery.namespace: 命名空间 ID

Nacos的实例分两种

  • 临时(默认):如果实例宕机超过一定时间,会从服务列表剔除,默认的类型
  • 非临时(永久): 如果实例宕机,不会从服务列表剔除,也可以叫永久实例
    配置一个服务实例为永久:spring.cloud.nacos.discovery.ephemeral: false #设置为非临时实例
posted @ 2023-05-22 09:44  mty072788  阅读(38)  评论(0编辑  收藏  举报