Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台【入门级教程】

1,197 阅读2分钟

Nacos简介

Nacos(Namely, Config and Service)是一个易于构建服务发现与配置管理平台的中间件,它主要解决了企业在微服务架构中的以下痛点需求:

  1. 服务发现与注册

    • 自动发现和注册服务实例。
    • 动态获取服务实例的位置信息。
  2. 服务配置管理

    • 集中化配置管理,统一管理不同环境下的配置。
    • 支持配置的动态推送和变更。
  3. 服务健康监测

    • 实时监控服务的健康状况。
    • 快速识别并隔离不健康的服务实例。
  4. 服务元数据管理

    • 管理服务相关的元数据,如版本、标签等。
  5. 流量管理

    • 支持基于路由规则的服务调用。
    • 负载均衡策略的灵活配置。
  6. 平滑迁移与同步

    • 支持注册中心之间的双向同步和平滑迁移。
    • 确保服务信息的一致性。
  7. 易用性和可扩展性

    • 提供友好的用户界面和API接口。
    • 支持插件化和扩展性设计,便于集成和二次开发。

通过这些功能,Nacos帮助企业简化了微服务架构的复杂度,提高了服务治理的效率和灵活性,降低了运维成本,增强了系统的可靠性和可维护性。

Nacos下载和安装

image.png

Nacos安装

docker run --env MODE=standalone \
    -v /dockerdata/nacos/config/application.properties:/home/nacos/conf/application.properties \
    --name nacos -d -p 8848:8848 nacos/nacos-server:2.4.0

image.png

Nacos使用手册(中文)

nacos.io/docs/latest…

Spring cloud项目中的应用

总网关

mall-gateway
server:
  port: 8201
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true #使用小写service-id
      routes: #配置路由路径
        - id: mall-auth
          uri: lb://mall-auth
          predicates:
            - Path=/mall-auth/**
          filters:
            - StripPrefix=1

各子微服务关键配置

经常根据业务需要会划分不同的微服务:例如鉴权服务、系统管理服务、手机服务、搜索服务、工作流服务、规则服务等。

bootstrap.yml
spring:
  profiles:
    active: dev
  application:
    name: mall-auth
bootstrap-dev.yml
spring:
  cloud:
    nacos:
      server-addr: 192.168.0.100:8848 # Nacos 服务器地址
      username: nacos # 开启了鉴权 Nacos 账号
      password: nacos # 开启了鉴权 Nacos 密码
      discovery:
        server-addr: http://192.168.0.100:8848
      config:
        server-addr: http://192.168.0.100:8848
        file-extension: yaml

Nacos管理端导入配置

例如:

  • 将项目config目录下的配置文件添加到Nacos中,只要添加包含dev的配置即可,配置文件的文件名称需要和Nacos中的Data Id一一对应; 例如:
mall-gateway-dev.yaml
spring:
  redis:
    host: 192.168.0.100 # Redis服务器地址
    database: 0 # Redis数据库索引(默认为0)
    port: 6379 # Redis服务器连接端口
    password:  # Redis服务器连接密码(默认为空)
    timeout: 3000ms # 连接超时时间(毫秒)
  security:
    oauth2:
      resourceserver:
        jwt:
          jwk-set-uri: 'http://localhost:8201/mall-auth/rsa/publicKey'
logging:
  level:
    root: info
    com.macro.mall: debug
logstash:
  host: localhost

启动后,自动出现在服务列表中

image.png