大家好,我是升仔
引言
在微服务架构中,服务治理和动态配置管理是两个核心问题。Spring Cloud Alibaba 的 Nacos 组件以其出色的服务发现和配置管理功能,在解决这些问题上发挥着重要作用。本文将通过一个实战场景,展示如何在Spring Cloud项目中集成Nacos,实现服务注册、发现和动态配置管理。
Nacos 简介
Nacos是Alibaba开源的项目,旨在提供服务发现和配置管理功能。在微服务架构中,Nacos可以帮助服务相互找到对方(服务发现),并且可以集中管理配置信息(配置管理),支持配置的动态更新。
实战场景概述
假设我们有一个简单的在线书店系统,包含两个服务:book-service
和 order-service
。book-service
负责书籍信息的管理,order-service
负责处理订单。我们将使用 Nacos 作为服务注册中心,以实现服务之间的相互发现。同时,我们也将使用 Nacos 进行配置管理,动态调整服务行为而无需重启服务。
环境准备
- Java 8 或以上
- Maven 3.6 或以上
- Spring Boot 2.3.0.RELEASE
- Spring Cloud Hoxton.SR1
- Spring Cloud Alibaba 2.2.0.RELEASE
- Nacos Server 1.3.0
步骤一:搭建Nacos服务
- 从 Nacos Release 页面下载 Nacos Server。
- 解压下载的包,并在命令行中运行
startup.cmd
(Windows)或startup.sh
(Linux/Mac)启动 Nacos Server。 - 访问
http://localhost:8848/nacos
,使用默认用户名和密码(nacos/nacos)登录。
步骤二:创建Spring Boot服务
创建 book-service
-
新建Spring Boot项目:
- 项目名称:
book-service
- 依赖选择:
Spring Web
,Spring Cloud Alibaba Nacos Discovery
- 项目名称:
-
配置 application.properties:
spring.application.name=book-service server.port=8081 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
-
创建 BookController:
@RestController @RequestMapping("/books") public class BookController { @GetMapping public ResponseEntity<List<String>> getAllBooks() { // 示例数据 return ResponseEntity.ok(Arrays.asList("The Alchemist", "1984", "The Great Gatsby")); } }
创建 order-service
重复上述步骤,创建 order-service
,端口设置为8082,控制器名称改为OrderController
。
步骤三:服务注册与发现
- 启动 book-service 和 order-service。
- 在 Nacos 控制台中,你将看到这两个服务已注册。
步骤四:配置管理
-
在 Nacos 控制台创建配置:
-
Data ID:
book-service.properties
-
Group:
DEFAULT_GROUP
-
配置内容:
book.name=The Little Prince
-
-
在 book-service 中使用 Nacos 配置:
-
在application.properties中添加:
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.file-extension=properties
-
在 BookController中注入配置:
@Value("${book.name:Unknown}") private String bookName; @GetMapping("/featured") public ResponseEntity<String> getFeaturedBook() { return ResponseEntity.ok(bookName); }
-
测试
- 访问
http://localhost:8081/books/featured
,应返回 “The Little Prince”。 - 在 Nacos 控制台更改配置,修改
book.name
的值。 - 再次访问相同URL,将看到返回的书名已更新,无需重启服务。
总结
通过本文的实战案例,我们可以看到Nacos作为服务注册和配置中心的强大功能。它不仅简化了服务发现的复杂性,还提供了动态配置管理的能力,极大地提升了微服务架构的灵活性和可维护性。在微服务的世界中,Nacos无疑是一个不可或缺的组件。
参考文献
最后说一句(求关注,求赞,别白嫖)
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软
本文已收录于我的技术网站,next-java.com, 有大厂完整面经,工作技术等经验分享
求一键三连:点赞、分享、收藏
点赞对我真的非常重要!在线求赞,加个关注非常感激