关闭

Nacos注册中心+配置管理

发表于:2024-11-12 09:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:周仙僧    来源:博客园

  nacos安装
  1、下载安装包
  官方下载地址
  2、修改配置
  配置文件:{nacos_home}/conf/application.properties
  # 指定端口号
  server.port=8848
  # 指定数据库类型
  spring.datasource.platform=mysql
  # 数据库初始化使用脚本
  spring.sql.init.platform=mysql
  # 数据库数量
  db.num=1
  # 数据库相关连接配置
  db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&serverTimezone=UTC
  db.user=your_login_name
  db.password=your_login_password
  # 开启权限校验,开启后登陆nacos服务端或客户端使用时都需要使用账号和密码
  nacos.core.auth.enabled=true
  # 集群相关身份认证,使用集群事,个单元服务的身份认证信息需要一致
  nacos.core.auth.server.identity.key=your_key
  nacos.core.auth.server.identity.value=your_value
  3、初始化数据库
  在数据库中执行如下sql脚本,{nacos_home}/conf/[derby-schema.sql | mysql-schema.sql],根据不同的数据库选择不同的脚本文件。
  4、启动服务
  bash startup.sh -m standalone
  若为云服务器,需要同时开启8848和9848端口;8848为配置文件中指定的nacos-server访问端口,9848为客户端与服务端的通讯端口,在nacos-server访问端口的基础上+1000。
  nacos注册中心
  nacos提供了注册中心的基本功能,包含服务注册、健康监测、动态 DNS 服务以及服务生命周期管理等功能。
  基本概念
  1. 命名空间
  命名空间是nacos中的最大逻辑分组,需要在Nacos服务端创建,实际项目中可按照不同的运行环境prod、uat、sit、dev分为不同的命名空间;Nacos会为命名空间生成一个唯一的DataID,当客户端或服务分配权限关联命名空间是都使用DataID关联。
  2. 分组
  客户端定义的业务分组,实际项目中可以将相似业务模块的所有服务放在同一个业务分组;如后端交易业务可设置为交易分组,交易分组中可包含客户、产品、订单服务;分组用于业务隔离。
  3. 服务名称
  分布式架构中的单应用服务名称,同一服务的名称为集群。
  4. 服务注册中心
  存储服务实例和服务负载均衡策略的数据库。
  5. 权重
  实例级别的配置。权重为浮点数。权重越大,分配给该实例的流量越大。
  6. 健康检查
  以指定方式检查服务下挂载的实例 (Instance) 的健康度,从而确认该实例 (Instance) 是否能提供服务。根据检查结果,实例 (Instance) 会被判断为健康或不健康。对服务发起解析请求时,不健康的实例 (Instance) 不会返回给客户端。
  7. 健康保护阈值
  为了防止因过多实例 (Instance) 不健康导致流量全部流向健康实例 (Instance) ,继而造成流量压力把健康实例 (Instance) 压垮并形成雪崩效应,应将健康保护阈值定义为一个 0 到 1 之间的浮点数。当域名健康实例数 (Instance) 占总服务实例数 (Instance) 的比例小于该值时,无论实例 (Instance) 是否健康,都会将这个实例 (Instance) 返回给客户端。这样做虽然损失了一部分流量,但是保证了集群中剩余健康实例 (Instance) 能正常工作。
  使用
  1、依赖添加
  implementation("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:${nacosVersion}")
  2、配置
  Spring Boot项目中的application.yml
  spring:
    cloud:
      nacos:
        discovery:
          server-addr: 127.0.0.1:8848
          service: ${spring.application.name}
          namespace: 33da2973-26a9-429e-93c1-19e37d1d163f
          group: fund-trade
          username: fund_trade_nacos_dev
          password: ENC(qJJ4qlt9rEmdx1HrKjDXHJysZTm7XS9XSnGr848caZ83IdTzeyV/+w==)
  nacos配置管理
  Nacos提供配置管理功能,提供统一的配置平台,用于对应用配置做动态更新、版本迭代。实际项目中如Redis、Fastftp、Seata、Mysql等相关通用配置,可在Nacos配置中心中统一做配置管理。
  Nacos配置管理同时提供了配置热更新的功能,避免了修改配置文件后需要重启应用服务才能生效的问题。(需要使用@RefreshScope)。
  使用
  1、依赖添加
  implementation("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:${nacosVersion}")
  2、配置修改
  Spring Boot项目中的application.yml
  spring:
    application:
      name: trade-server
    profiles:
      active: dev
    cloud:
      nacos:
        config:
          server-addr: 127.0.0.1:8848
          file-extension: yaml
          namespace: 33da2973-26a9-429e-93c1-19e37d1d163f
          group: fund-trade
          username: fund_trade_nacos_dev
          password: fund_trade_nacos_dev@123
  # spring boot:3.x中有兼容问题,需要开启
          import-check:
            enabled: false
    config:
      import:
  ###  指定映射的Nacos配置管理中的配置文件名称,当前示例为:trade-server-dev.yaml。除名称外,还需要与当前配置文件的namespace、group一致
        - optional:nacos:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
        - optional:nacos:${spring.application.name}-common.properties
  3、在Nacos配置管理中创建配置文件
  注意配置文件所属命名空间、分组和文件名,示例对应文件如下图:
  4、开启配置自动更新
  在需要使用自动更新的Bean类上使用@RefreshScope注解,则Bean中使用到了配置文件中的属性会响应配置文件的更新。
  @Component
  @RefreshScope
  public class TradeController {
      @Value("${test.prop.name}")
      private String testName;
  }
  如上述示例中的testName,当配置文件中的test.prop.name属性变更时,程序中的testName值会自动更新。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2024软件测试行业从业人员调查问卷》,您的见解,行业的声音!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号