尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

第42篇:Spring Cloud Alibaba入门:Nacos服务注册与配置中心

第42篇:Spring Cloud Alibaba入门:Nacos服务注册与配置中心 专栏Spring Cloud Alibaba 微服务入门实战微服务架构落地过程中服务注册发现和统一配置管理是两大核心基础能力。传统Spring Cloud架构中Eureka停更、Config配置繁琐、组件碎片化严重而Spring Cloud Alibaba(SCA)一站式解决了微服务架构的各类痛点。本文将从零带大家入门 Spring Cloud Alibaba 核心组件Nacos手把手完成环境安装、服务注册、服务发现、动态配置、多环境配置、高可用搭建附完整实战代码新手也能快速上手本文核心知识点Spring Cloud Alibaba 核心优势Nacos 核心功能与环境部署Spring Boot 集成 Nacos 实现服务注册与发现Nacos 配置中心动态配置刷新、多环境隔离Nacos 集群高可用配置实战完整微服务基础组件实战案例一、Spring Cloud Alibaba 核心优势Spring Cloud Alibaba 是阿里开源的一站式微服务解决方案基于Spring Cloud 规范开发完美适配Spring Boot生态是目前国内企业微服务落地的主流选型对比传统Spring Cloud 原生架构优势极其明显1. 一站式全组件覆盖一套生态搞定微服务全部核心能力服务注册发现、配置中心、熔断限流、网关、分布式事务、链路追踪等无需整合第三方零散组件避免版本冲突问题。2. 组件稳定开源持续迭代替代停更的 Eureka、低效的 Spring Cloud ConfigNacos、Sentinel、Seata 等组件长期维护适配新版本Spring Boot企业生产级稳定可用。3. 极简集成、低侵入性基于Spring Boot 自动配置仅需引入依赖、少量配置即可快速接入无代码侵入学习成本、改造成本极低。4. 中文文档完善、社区活跃国内生态友好中文文档齐全问题排查方案丰富适配国内中小型企业微服务落地场景。5. 统一管控、可视化运维所有组件均提供可视化控制台服务状态、配置信息、流量监控一目了然运维成本大幅降低。二、Nacos 核心介绍与环境安装配置1. Nacos 是什么Nacos (Dynamic Naming and Configuration Service)是 Spring Cloud Alibaba 的核心基石一个集服务注册中心 配置中心 动态DNS服务于一体的开源组件。核心两大能力注册中心替代 Eureka、Consul实现微服务自动注册、健康检测、服务发现配置中心替代 Spring Cloud Config实现配置统一管理、动态刷新、多环境隔离2. Nacos 环境部署单机版本次实战使用Nacos 2.4.2 稳定版支持Windows/Linux/Mac推荐单机快速部署用于学习测试。Step1下载安装包官网下载地址https://nacos.io/zh-cn/index.html 选择对应系统的压缩包解压至无中文、无空格路径的目录。Step2启动 Nacos 服务Nacos 默认集群模式启动单机启动需修改启动参数Windows进入bin目录执行startup.cmd -m standaloneLinux/Mac进入bin目录执行sh startup.sh -m standaloneStep3访问控制台启动成功后浏览器访问http://localhost:8848/nacos默认账号密码nacos / nacos看到Nacos管理控制台界面即代表环境部署成功。三、实战一Spring Boot 集成 Nacos 服务注册与发现我们通过新建Spring Boot项目手把手实现服务注册、服务发现、远程调用完成微服务基础通信。1. 项目环境版本说明Spring Boot2.7.15Spring Cloud Alibaba2021.0.5.0Nacos Server2.4.2JDK1.82. 引入核心Maven依赖父工程统一管理SCA版本子工程引入Nacos服务注册依赖父pom版本管理dependencyManagement dependencies !-- Spring Cloud Alibaba 版本控制 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version2021.0.5.0/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement服务提供者pom依赖dependencies !-- Spring Boot Web -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- Nacos 服务注册发现 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency /dependencies3. 配置Nacos注册中心application.ymlserver: port: 8081 # 服务端口 spring: application: name: nacos-service-provider # 服务名称注册到Nacos的唯一标识 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # Nacos服务地址 username: nacos password: nacos namespace: public # 命名空间默认public group: DEFAULT_GROUP # 服务分组4. 开启服务注册注解在启动类添加EnableDiscoveryClient注解开启微服务注册发现功能import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; SpringBootApplication EnableDiscoveryClient // 开启Nacos服务注册与发现 public class NacosProviderApplication { public static void main(String[] args) { SpringApplication.run(NacosProviderApplication.class, args); } }5. 编写测试接口import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class TestController { GetMapping(/hello/nacos) public String helloNacos() { return ✅ Nacos 服务注册成功服务提供者响应; } }6. 验证服务注册成功启动项目访问Nacos控制台 → 服务管理 → 服务列表可看到nacos-service-provider服务已成功注册实例数为1代表注册功能完成。7. 服务消费者实现服务发现新建消费者项目nacos-service-consumer依赖、配置方式与提供者一致端口改为8082。配置RestTemplate实现负载均衡调用import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; Configuration public class RestTemplateConfig { Bean LoadBalanced // 开启负载均衡支持服务名调用 public RestTemplate restTemplate() { return new RestTemplate(); } }消费者调用测试接口import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; RestController public class ConsumerController { Resource private RestTemplate restTemplate; // 通过服务名远程调用提供者接口 GetMapping(/consumer/hello) public String consumerHello() { String url http://nacos-service-provider/hello/nacos; return restTemplate.getForObject(url, String.class); } }启动消费者项目访问http://localhost:8082/consumer/hello成功获取提供者响应服务发现与远程调用功能完成。四、实战二Nacos 配置中心动态配置多环境配置Nacos 配置中心核心解决配置文件分散、修改配置需重启服务、多环境配置混乱问题支持配置动态实时刷新、环境隔离、版本回溯。1. 引入配置中心依赖在上述项目中新增Nacos配置中心依赖!-- Nacos 配置中心 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId /dependency2. 核心配置规则Nacos 配置文件拼接规则${spring.application.name}-${spring.profiles.active}.${file-extension}默认配置后缀为yaml优先级环境配置 全局配置。3. 基础动态配置实战Step1bootstrap.yml 核心配置配置中心配置必须放在bootstrap.yml优先于application.yml加载spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 username: nacos password: nacos file-extension: yaml # 配置文件格式 application: name: nacos-service-providerStep2Nacos控制台新建配置配置管理 → 配置列表 → 新建配置Data IDnacos-service-provider.yamlGroupDEFAULT_GROUP配置格式YAML配置内容自定义测试参数demo: app-name: Nacos配置中心测试服务 app-version: 1.0.0 app-desc: 支持动态配置刷新Step3代码读取配置动态刷新添加RefreshScope注解开启配置动态刷新import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController RefreshScope // 核心注解配置动态刷新无需重启服务 public class ConfigController { Value(${demo.app-name:默认服务名}) private String appName; Value(${demo.app-version:0.0.1}) private String appVersion; GetMapping(/config/info) public String getConfigInfo() { return 服务名称 appName 版本号 appVersion; } }Step4验证动态刷新启动项目访问接口获取配置信息在Nacos控制台修改配置内容并发布无需重启服务再次访问接口即可看到最新配置动态配置生效。4. 多环境配置隔离实战通过spring.profiles.active区分开发、测试、生产环境实现环境配置隔离。Step1指定运行环境在application.yml中激活dev环境spring: profiles: active: devStep2新建多环境配置文件公共配置nacos-service-provider.yaml开发环境配置nacos-service-provider-dev.yaml生产环境配置nacos-service-provider-prod.yamlNacos会自动合并公共配置当前环境配置环境配置优先级更高可覆盖公共配置参数。五、Nacos 高可用集群配置生产级单机版Nacos仅适用于测试环境生产环境必须搭建Nacos集群实现高可用避免单点故障。1. 集群架构说明推荐3节点集群架构所有节点对等通过MySQL实现数据同步配合Nginx做负载均衡。2. 集群搭建核心步骤Step1准备MySQL数据库执行Nacos源码中的nacos-mysql.sql脚本创建Nacos数据库用于集群数据持久化。Step2修改集群配置文件修改所有节点conf/cluster.conf配置文件配置集群节点信息# 集群节点IP:端口 127.0.0.1:8848 127.0.0.1:8849 127.0.0.1:8850Step3配置数据库连接修改conf/application.properties配置MySQL数据源所有节点配置一致# 数据库配置 spring.datasource.platformmysql db.num1 db.url.0jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncodingutf8serverTimezoneGMT%2B8 db.userroot db.password你的数据库密码Step4Nginx负载均衡配置配置Nginx反向代理统一集群入口实现请求分发与故障转移upstream nacos-cluster { server 127.0.0.1:8848; server 127.0.0.1:8849; server 127.0.0.1:8850; } server { listen 80; server_name nacos.local.com; location / { proxy_pass http://nacos-cluster; } }3. 项目接入集群配置修改项目Nacos地址为Nginx代理地址即可接入高可用集群spring: cloud: nacos: discovery: server-addr: nacos.local.com:80 config: server-addr: nacos.local.com:80六、全文总结与核心知识点复盘本文完整讲解了Spring Cloud Alibaba核心组件Nacos的全场景实战核心要点总结SCA核心价值一站式微服务解决方案解决传统Spring Cloud组件碎片化、停更问题适配企业生产落地。Nacos两大核心能力服务注册发现替代Eureka、配置中心替代Config支持动态刷新、多环境隔离。核心注解EnableDiscoveryClient开启服务注册、RefreshScope开启配置动态刷新。配置优先级环境配置 公共配置Nacos远程配置 本地配置。生产高可用3节点Nacos集群MySQL持久化Nginx负载均衡彻底解决单点故障。Nacos 是Spring Cloud Alibaba 微服务架构的基石掌握注册中心与配置中心的使用是搭建微服务架构的第一步后续熔断限流、网关、分布式事务等组件均基于此基础扩展。
返回列表