SpringCloud-Nacos服务注册

Nacos服务注册

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高

地址是8848

Nacos的注册和发现

1.在父工程中加入依赖

<!--nacos的管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

2.子模块中加入客户端依赖(不使用原来的Eureka依赖)

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3.修改application.yml文件

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  # 负载均衡规则

Nacos分级处理模型(地域划分)

问题:访问其他的集群比较的慢

解决:分级处理,访问本地集群比较的快

具体操作:

服务提供者的application.yml,添加如下内容

spring:
  datasource:
    url: jdbc:mysql://mysql:3306/cloud_user?useSSL=false
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
  shardingsphere:
    sharding:
      default-database-strategy:
      tables:
#      discovery:
#        cluster-name: HZ  

SpringCloud-Nacos服务注册_第1张图片

Nacos服务分级存储模型

一级是服务,例如userservice
二级是集群,例如杭州或上海
三级是实例,例如杭州机房的某台部署了userservice的服务器

Nacos优先选择本地集群

消费者调用提供者的接口时,优先选用本地集群

1、消费者的yml文件中修改


  shardingsphere:
    sharding:
      default-database-strategy:
      tables:
#      discovery:
#        cluster-name: HZ

2、yml文件中修改负载均衡规则

NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则

负载均衡策略总结

1、优先选择同集群服务实例列表

2、本地集群找不到提供者,才去其它集群寻找,并且会报警告
3、确定了可用实例列表后,再采用随机负载均衡挑选实例

根据权重负载均衡

服务器性能设备好的承担更多的请求(Nacos控制台选择编辑)

1.优先选择同集群服务实例列表
2.本地集群找不到提供者,才去其它集群寻找,并且会报警告
3.确定了可用实例列表后,再采用随机负载均衡挑选实例

环境隔离namespace

不同的namespace下的命名空间不可见

例:设置了消费者的隔离环境,就没有办法使用服务接口访问提供者
SpringCloud-Nacos服务注册_第2张图片

形成命名空间之后有个命名空间id配置在消费者yml文件中

Nacos和Eureka的区别

SpringCloud-Nacos服务注册_第3张图片

一、Nacos与eureka的共同点
1、都支持服务注册和服务拉取

2、都支持服务提供者心跳方式做健康检测
二、Nacos与Eureka的区别
1、Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

2、临时实例心跳不正常会被剔除,非临时实例则不会被剔除

3、Nacos支持服务列表变更的消息推送模式,服务列表更新更及时/

4、Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

Nacos配置管理

问题:当微服务越来越多的时候,某一个配置文件需要修改,会影响整个服务

解决办法:统一管理配置——配置管理服务,配置完成之后,微服务自动读取

SpringCloud-Nacos服务注册_第4张图片

Nacos中修改配置文件
SpringCloud-Nacos服务注册_第5张图片

统一配置管理

SpringCloud-Nacos服务注册_第6张图片

方式:

1.添加管理依赖(提供者)


<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>

2.添加bootstrap.yml

因为要先读取nacos文件

spring:
  application:
    name: userservice
  profiles:
    active: dev # 环境
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos地址
      config:
        file-extension: yaml # 文件后缀名

3.提供者的控制层读取

SpringCloud-Nacos服务注册_第7张图片

配置的自动更新

不用重启微服务自动更新

方式一:在有value注解类上加一个注解@Refreshscope

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oVRR5Qwt-1686295408315)(C:\Users\14065\AppData\Roaming\Typora\typora-user-images\image-20230609001212268.png)]

方式二:

新建一个配置类,在配置类中配置

使用@ConfigurationProperties

SpringCloud-Nacos服务注册_第8张图片

多环境配置共享

开发,生产,测试等环境下的值是一样的,配一次,都能被加载

SpringCloud-Nacos服务注册_第9张图片

Nacos集群搭建

SpringCloud-Nacos服务注册_第10张图片

Nacos集群搭建:
1、搭建MySQL集群并初始化数据库表

2、下载解压nacos

3、修改集群配置(节点信息)、数据库配置

4、分别启动多个nacos节点

5、nginx反向代理

你可能感兴趣的:(spring,cloud,java,eureka)