Nacos Discovery服务治理方案如何优化微服务架构?

2026-05-26 01:521阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1949个文字,预计阅读时间需要8分钟。

Nacos Discovery服务治理方案如何优化微服务架构?

目录前言服务治理什么是服务治理?常见的注册中心:Zookeeper、Eureka、Consul、Nacos、Nacos入门搭建Nacos环境将商品微服务注册到Nacos将订单微服务注册到Nacos总结前言上一章中,我们利用Nacos实现了微服务的注册与发现。本章,我们将深入探讨服务治理的概念及其应用。

服务治理什么是服务治理?服务治理是指对微服务架构中的服务进行管理、监控、配置和优化的一系列操作。

常见的注册中心ZookeeperEurekaConsulNacosNacos

入门搭建Nacos环境将商品微服务注册到Nacos将订单微服务注册到Nacos

总结通过本章的学习,我们了解了服务治理的基本概念,并掌握了如何使用Nacos进行服务注册和发现。

目录
  • 前言
  • 服务治理
    • 什么是服务治理?
    • 常见的注册中心
      • Zookeeper
      • Eureka
      • Consul
      • Nacos
    • Nacos 入门
      • 搭建nacos环境
      • 将商品微服务注册到nacos
      • 将订单微服务注册到nacos
  • 总结

    前言

    上一章中,我们利用用户–订单–商品,实现了三个简单的微服务,实现了微服务之间的调用。但不知道大家有没有发现,我们是通过硬编码的方式,把服务者,消费者的服务Url,写到了代码中,这样做肯定是不行的,存在着许多的问题,比如:

    一旦服务提供者地址变化,就需要手工修改代码一旦是多个服务提供者,无法实现负载均衡功能一旦服务变得越来越多,人工维护调用关系困难

    那么应该怎么解决呢, 这时候就需要通过注册中心动态的实现服务治理

    服务治理

    什么是服务治理?

    服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。

    • 服务注册: 在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。
    • 服务发现: 服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实例的访问。

    常见的注册中心

    Zookeeper

    zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。

    如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

    Eureka

    Eureka是Springcloud Netflix中的重要组件,主要作用就是做服务注册和发现。但是现在已经闭源。如果是打算新建微服务到话,不推荐使用Eureka了。

    Consul

    Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现 和配置管理的功能。Consul的功能都很实用,其中包括:服务注册/发现、健康检查、Key/Value 存储、多数据中心和分布式一致性保证等特性。

    Consul本身只是一个二进制的可执行文件,所以安装和部署都非常简单,只需要从官网下载后,在执行对应的启动脚本即可。

    Nacos

    Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台

    它是SpringCloud Alibaba 组件之一,负责服务注册发现和服务配置,可以这样认为nacos=eureka+config

    Nacos 入门

    Nacos 官网介绍:

    Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

    从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

    搭建nacos环境

    第1步: 安装nacos

    下载地址: github.com/alibaba/nacos/releases

    下载zip格式的安装包,然后进行解压缩操作。

    第2步: 启动nacos

    #切换目录 cd nacos/bin #命令启动 startup.cmd -m standalone

    第3步: 访问nacos

    打开浏览器输入localhost:8848/nacos

    即可访问服务, 默认密码是nacos/nacos

    Nacos Discovery服务治理方案如何优化微服务架构?

    将商品微服务注册到nacos

    接下来开始修改 shop-product 模块的代码, 将其注册到nacos服务上 。

    1、在pom.xml中添加nacos的依赖

    <!--nacos客户端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

    2、在主类上添加@EnableDiscoveryClient注解

    @SpringBootApplication @EnableDiscoveryClient public class ProductApplication{ ...... }

    3 在application.yml中添加nacos服务的地址

    spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848

    4、启动服务, 观察nacos的控制面板中是否有注册上来的商品微服务

    将订单微服务注册到nacos

    接下来开始修改 shop_order 模块的代码, 将其注册到nacos服务上。

    1、在pom.xml中添加nacos的依赖

    <!--nacos客户端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

    2、在主类上添加@EnableDiscoveryClient注解

    @SpringBootApplication @EnableDiscoveryClient public class OrderApplication{ ..... }

    3、在application.yml中添加nacos服务的地址

    spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848

    4、修改OrderController, 实现微服务调用

    @RestController @Slf4j public class OrderController { @Autowired private RestTemplate restTemplate; @Autowired private OrderService orderService; @Autowired private DiscoveryClient discoveryClient; //准备买1件商品 @GetMapping("/order/prod/{pid}") public Order order(@PathVariable("pid") Integer pid) { log.info(">>客户下单,这时候要调用商品微服务查询商品信息"); //从nacos中获取服务地址 ServiceInstance serviceInstance = discoveryClient.getInstances("service-product").get(0); String url = serviceInstance.getHost() + ":" +serviceInstance.getPort(); log.info(">>从nacos中获取到的微服务地址为:" + url); //通过restTemplate调用商品微服务 Product product = restTemplate.getForObject( "" + url + "/product/" + pid, Product.class); log.info(">>商品信息,查询结果:" + JSON.toJSONString(product)); Order order = new Order(); order.setUid(1); order.setUsername("测试用户"); order.setPid(product.getPid()); } }

    DiscoveryClient是专门负责服务注册和发现的,我们可以通过它获取到注册到注册中心的所有服务。

    5、启动服务, 观察nacos的控制面板中是否有注册上来的订单微服务,然后通过访问消费者服务验证调 用是否成功

    总结

    这篇文章我们简单的实现了如何利用服务治理来管控微服务。那么对应的又引发一个问题,如果集群中用户访问量在某一瞬间达到最高点,可能会造成服务的瘫痪,这怎么解决呢?相信大家都知道负载均衡技术,也知道这里需要用到负载均衡,但在微服务中,如何实现服务调用的负载均衡呢?我们下篇文章再讲。

    本文共计1949个文字,预计阅读时间需要8分钟。

    Nacos Discovery服务治理方案如何优化微服务架构?

    目录前言服务治理什么是服务治理?常见的注册中心:Zookeeper、Eureka、Consul、Nacos、Nacos入门搭建Nacos环境将商品微服务注册到Nacos将订单微服务注册到Nacos总结前言上一章中,我们利用Nacos实现了微服务的注册与发现。本章,我们将深入探讨服务治理的概念及其应用。

    服务治理什么是服务治理?服务治理是指对微服务架构中的服务进行管理、监控、配置和优化的一系列操作。

    常见的注册中心ZookeeperEurekaConsulNacosNacos

    入门搭建Nacos环境将商品微服务注册到Nacos将订单微服务注册到Nacos

    总结通过本章的学习,我们了解了服务治理的基本概念,并掌握了如何使用Nacos进行服务注册和发现。

    目录
    • 前言
    • 服务治理
      • 什么是服务治理?
      • 常见的注册中心
        • Zookeeper
        • Eureka
        • Consul
        • Nacos
      • Nacos 入门
        • 搭建nacos环境
        • 将商品微服务注册到nacos
        • 将订单微服务注册到nacos
    • 总结

      前言

      上一章中,我们利用用户–订单–商品,实现了三个简单的微服务,实现了微服务之间的调用。但不知道大家有没有发现,我们是通过硬编码的方式,把服务者,消费者的服务Url,写到了代码中,这样做肯定是不行的,存在着许多的问题,比如:

      一旦服务提供者地址变化,就需要手工修改代码一旦是多个服务提供者,无法实现负载均衡功能一旦服务变得越来越多,人工维护调用关系困难

      那么应该怎么解决呢, 这时候就需要通过注册中心动态的实现服务治理

      服务治理

      什么是服务治理?

      服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。

      • 服务注册: 在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。
      • 服务发现: 服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实例的访问。

      常见的注册中心

      Zookeeper

      zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。

      如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

      Eureka

      Eureka是Springcloud Netflix中的重要组件,主要作用就是做服务注册和发现。但是现在已经闭源。如果是打算新建微服务到话,不推荐使用Eureka了。

      Consul

      Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现 和配置管理的功能。Consul的功能都很实用,其中包括:服务注册/发现、健康检查、Key/Value 存储、多数据中心和分布式一致性保证等特性。

      Consul本身只是一个二进制的可执行文件,所以安装和部署都非常简单,只需要从官网下载后,在执行对应的启动脚本即可。

      Nacos

      Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台

      它是SpringCloud Alibaba 组件之一,负责服务注册发现和服务配置,可以这样认为nacos=eureka+config

      Nacos 入门

      Nacos 官网介绍:

      Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

      从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

      搭建nacos环境

      第1步: 安装nacos

      下载地址: github.com/alibaba/nacos/releases

      下载zip格式的安装包,然后进行解压缩操作。

      第2步: 启动nacos

      #切换目录 cd nacos/bin #命令启动 startup.cmd -m standalone

      第3步: 访问nacos

      打开浏览器输入localhost:8848/nacos

      即可访问服务, 默认密码是nacos/nacos

      Nacos Discovery服务治理方案如何优化微服务架构?

      将商品微服务注册到nacos

      接下来开始修改 shop-product 模块的代码, 将其注册到nacos服务上 。

      1、在pom.xml中添加nacos的依赖

      <!--nacos客户端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

      2、在主类上添加@EnableDiscoveryClient注解

      @SpringBootApplication @EnableDiscoveryClient public class ProductApplication{ ...... }

      3 在application.yml中添加nacos服务的地址

      spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848

      4、启动服务, 观察nacos的控制面板中是否有注册上来的商品微服务

      将订单微服务注册到nacos

      接下来开始修改 shop_order 模块的代码, 将其注册到nacos服务上。

      1、在pom.xml中添加nacos的依赖

      <!--nacos客户端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

      2、在主类上添加@EnableDiscoveryClient注解

      @SpringBootApplication @EnableDiscoveryClient public class OrderApplication{ ..... }

      3、在application.yml中添加nacos服务的地址

      spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848

      4、修改OrderController, 实现微服务调用

      @RestController @Slf4j public class OrderController { @Autowired private RestTemplate restTemplate; @Autowired private OrderService orderService; @Autowired private DiscoveryClient discoveryClient; //准备买1件商品 @GetMapping("/order/prod/{pid}") public Order order(@PathVariable("pid") Integer pid) { log.info(">>客户下单,这时候要调用商品微服务查询商品信息"); //从nacos中获取服务地址 ServiceInstance serviceInstance = discoveryClient.getInstances("service-product").get(0); String url = serviceInstance.getHost() + ":" +serviceInstance.getPort(); log.info(">>从nacos中获取到的微服务地址为:" + url); //通过restTemplate调用商品微服务 Product product = restTemplate.getForObject( "" + url + "/product/" + pid, Product.class); log.info(">>商品信息,查询结果:" + JSON.toJSONString(product)); Order order = new Order(); order.setUid(1); order.setUsername("测试用户"); order.setPid(product.getPid()); } }

      DiscoveryClient是专门负责服务注册和发现的,我们可以通过它获取到注册到注册中心的所有服务。

      5、启动服务, 观察nacos的控制面板中是否有注册上来的订单微服务,然后通过访问消费者服务验证调 用是否成功

      总结

      这篇文章我们简单的实现了如何利用服务治理来管控微服务。那么对应的又引发一个问题,如果集群中用户访问量在某一瞬间达到最高点,可能会造成服务的瘫痪,这怎么解决呢?相信大家都知道负载均衡技术,也知道这里需要用到负载均衡,但在微服务中,如何实现服务调用的负载均衡呢?我们下篇文章再讲。