Spring Cloud Alibaba 之Nacos

大家好,我是升仔

引言

在微服务架构中,服务治理和动态配置管理是两个核心问题。Spring Cloud Alibaba 的 Nacos 组件以其出色的服务发现和配置管理功能,在解决这些问题上发挥着重要作用。本文将通过一个实战场景,展示如何在Spring Cloud项目中集成Nacos,实现服务注册、发现和动态配置管理。

Nacos 简介

Nacos是Alibaba开源的项目,旨在提供服务发现和配置管理功能。在微服务架构中,Nacos可以帮助服务相互找到对方(服务发现),并且可以集中管理配置信息(配置管理),支持配置的动态更新。

实战场景概述

假设我们有一个简单的在线书店系统,包含两个服务:book-serviceorder-servicebook-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服务

  1. 从 Nacos Release 页面下载 Nacos Server。
  2. 解压下载的包,并在命令行中运行 startup.cmd(Windows)或 startup.sh(Linux/Mac)启动 Nacos Server。
  3. 访问 http://localhost:8848/nacos,使用默认用户名和密码(nacos/nacos)登录。

步骤二:创建Spring Boot服务

创建 book-service
  1. 新建Spring Boot项目:

    • 项目名称:book-service
    • 依赖选择:Spring Web, Spring Cloud Alibaba Nacos Discovery
  2. 配置 application.properties:

    spring.application.name=book-service
    server.port=8081
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    
  3. 创建 BookController:

    @RestController
    @RequestMapping("/books")
    public class BookController {
    
        @GetMapping
        public ResponseEntity> getAllBooks() {
            // 示例数据
            return ResponseEntity.ok(Arrays.asList("The Alchemist", "1984", "The Great Gatsby"));
        }
    }
    
创建 order-service

重复上述步骤,创建 order-service,端口设置为8082,控制器名称改为OrderController

步骤三:服务注册与发现

  1. 启动 book-service 和 order-service。
  2. 在 Nacos 控制台中,你将看到这两个服务已注册。

步骤四:配置管理

  1. 在 Nacos 控制台创建配置:

    • Data ID: book-service.properties

    • Group: DEFAULT_GROUP

    • 配置内容:

      book.name=The Little Prince
      
  2. 在 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 getFeaturedBook() {
          return ResponseEntity.ok(bookName);
      }
      

测试

  1. 访问 http://localhost:8081/books/featured,应返回 “The Little Prince”。
  2. 在 Nacos 控制台更改配置,修改 book.name 的值。
  3. 再次访问相同URL,将看到返回的书名已更新,无需重启服务。

总结

通过本文的实战案例,我们可以看到Nacos作为服务注册和配置中心的强大功能。它不仅简化了服务发现的复杂性,还提供了动态配置管理的能力,极大地提升了微服务架构的灵活性和可维护性。在微服务的世界中,Nacos无疑是一个不可或缺的组件。

参考文献

  • Nacos官方文档
  • Spring Cloud Alibaba GitHub
最后说一句(求关注,求赞,别白嫖)

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

本文已收录于我的技术网站,next-java.com, 有大厂完整面经,工作技术等经验分享

求一键三连:点赞、分享、收藏

点赞对我真的非常重要!在线求赞,加个关注非常感激

你可能感兴趣的:(SpringCloud,springcloud)