Nacos注册中心

认识Nacos

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

服务注册到Nacos

  1.在cloud-demo父工程中添加spring-cloud-alibaba的管理依赖

            <!-- 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.注释掉order-service和user-service中原有的eureka依赖

        <!--eureka客户端依赖-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
<!--        </dependency>-->

 

  3.添加nacos的客户端依赖

        <!-- nacos客户端依赖包 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

 

  4.修改user-service&order-service中的application.yml文件,注释eureka地址,添加nacos地址

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: userserver # user服务的服务名称
  cloud: #nacos服务地址
    nacos:
      server-addr: localhost:8848
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: # eureka的地址信息
#      defaultZone: http://127.0.0.1:10086/eureka

  5.启动并测试

 

 

Nacos-服务多级存储模型

一个服务可以有多个实例,咧如我们的user-service,可以有:

  • 127.0.0.1:8081

  • 127.0.0.1:8082

  • 127.0.0.1:8083

假如这些实例分布于全国各地的不同机房,例如:

  • 127.0.0.1:8081,在上海机房

  • 127.0.0.1:8082,在上海机房

  • 127.0.0.1:8083,在杭州机房

Nacos 就将同一机房的实例,划分为一个集群

一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:

 

 

配置集群

  修改application.yml文件,添加集群配置:

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: userserver # user服务的服务名称
  cloud: #nacos服务地址
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ #集群名称
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: # eureka的地址信息
#      defaultZone: http://127.0.0.1:10086/eureka

 

Nacos环境隔离

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离

  1.在Nacos控制台可以创建namespace,用来隔离不同环境

 

  2.填写一个新命名空间信息

   3.保存后会在控制台看到这个命名空间的id

 

  4.修改application.yml,添加namespace

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderserver # order服务的服务名称
  cloud: #nacos服务地址
    nacos:
      server-addr: localhost:8848
      discovery: #nacos配置
        namespace: c615e01a-d98e-440a-817a-772536ea110a #命名空间 填ID dev环境
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#eureka:
#  client:
#    service-url: # eureka的地址信息
#      defaultZone: http://127.0.0.1:10086/eureka
ribbon: # 饥饿加载
  eager-load:
    enabled: true #开启饥饿加载
    clients:  #指定饥饿加载的服务名称
      - userserver

 

posted @ 2023-10-24 10:50  monkey大佬  阅读(11)  评论(0)    收藏  举报