首页 > 其他分享 >服务治理与 Nacos Discovery 入门

服务治理与 Nacos Discovery 入门

时间:2024-08-15 18:27:50浏览次数:16  
标签:product 服务 入门 Nacos nacos 注册 order Discovery

导言

微服务架构中,服务治理是至关重要的,它通过服务注册与发现机制,使得微服务可以自动注册和发现其他服务,从而简化了服务间的调用与管理。本文将详细介绍服务治理的核心概念及其在 Nacos 平台中的实现。

1. 服务治理概述

服务治理 是微服务架构的核心,用于管理服务的注册与发现。其主要功能包括:

  • 服务注册:微服务向注册中心登记其信息,注册中心保存所有服务的详细信息并定期检测服务的可用性。
  • 服务发现:服务消费者从注册中心获取服务实例清单,从而实现对具体服务的访问。

在微服务架构中,服务注册中心作为一个协调者,起着关键作用,帮助管理服务的健康状态和可用性。

2. 常见的服务注册中心

目前市场上常见的服务注册中心有以下几种:

Zookeeper:主要用于分布式应用的数据管理,如集群管理和统一命名服务等。

Eureka:Spring Cloud Netflix 组件之一,专注于服务注册与发现(已闭源)。

Consul:基于 GO 语言开发,提供服务注册、服务发现、健康检查等功能。

Nacos:Spring Cloud Alibaba 组件之一,集服务发现、配置管理、服务元数据等功能于一体。

3. Nacos 简介与核心功能

Nacos 是一个动态服务发现、配置管理和服务管理平台,提供了丰富的功能集来支持微服务架构的构建。其核心功能包括:

服务注册:通过 REST 请求将服务信息注册到 Nacos Server。

服务心跳:定期向 Nacos Server 发送心跳,确保服务处于可用状态。

服务同步:Nacos Server 集群间相互同步服务实例,确保一致性。

服务发现:服务消费者通过 REST 请求获取注册服务清单。

服务健康检查:定期检查服务实例的健康状态,并根据心跳情况调整服务清单。

4. Nacos 实战入门

4.1 环境搭建

安装 Nacos 下载地址: Nacos Releases 解压后进入 nacos/bin 目录,执行命令 startup.cmd -m standalone 启动 Nacos。

访问 Nacos 浏览器访问 http://localhost:8848/nacos,默认登录账户为 nacos/nacos

4.2 服务注册到 Nacos

4.2.1 商品服务注册

shop-product-server 模块的 pom.xml 中添加 Nacos 依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

application.yml 中配置 Nacos 服务器地址:

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

启动服务,检查 Nacos 控制台是否显示注册的商品服务。

4.2.2 订单服务注册

shop-order-server 模块的 pom.xml 中添加 Nacos 依赖,配置类似于商品服务。

修改 OrderServiceImpl,实现服务调用:

@Service
@Slf4j
public class OrderServiceImpl implements OrderService {
    @Autowired
    private OrderDao orderDao;
    @Autowired
    private DiscoveryClient discoveryClient;
    @Autowired
    private RestTemplate restTemplate;

    @Override
    public Order createOrder(Long productId, Long userId) {
        log.info("接收到{}号商品的下单请求, 接下来调用商品微服务查询此商品信息", productId);
        ServiceInstance instance = discoveryClient.getInstances("product-service").get(0);
        String url = instance.getHost() + ":" + instance.getPort();
        Product product = restTemplate.getForObject("http://" + url + "/product/get?pid=" + productId, Product.class);
        log.info("查询到{}号商品的信息, 内容是: {}", productId, JSON.toJSONString(product));

        Order order = new Order();
        order.setUid(userId);
        order.setUsername("用户");
        order.setPid(productId);
        order.setPname(product.getPname());
        order.setPprice(product.getPprice());
        order.setNumber(1);
        orderDao.save(order);
        log.info("创建订单成功, 订单信息为{}", JSON.toJSONString(order));

        return order;
    }
}

启动订单服务,检查 Nacos 控制台是否显示注册的订单服务。

总结

本文介绍了服务治理的基本概念及其在 Nacos 中的实现,通过详细的步骤指导,帮助读者快速入门 Nacos 服务注册与发现。希望这些内容能为微服务架构的实践提供实用的参考。

推荐阅读:

标签:product,服务,入门,Nacos,nacos,注册,order,Discovery
From: https://blog.csdn.net/m0_62993574/article/details/141228342

相关文章

  • nacos 服务注册原理
    springboot的各种starter会根据SPI机制,读取META-INFO/spring.factories文件,自动注册一些bean,spring-cloud-starter-alibaba-nacos-discovery的spring.factories如下:org.springframework.cloud.bootstrap.BootstrapConfiguration=\com.alibaba.cloud.nacos.discover......
  • .NET辅助角色服务入门简介
    在日常开发中,并不是所有的功能都是用户可见的,还在一些背后默默支持的程序,这些程序通常以服务的形式出现,统称为辅助角色服务。今天以一个简单的小例子,简述基于.NET开发辅助角色服务的相关内容,仅供学习分享使用,如有不足之处,还请指正。 概述 根据项目需求不同,创建长时间运行的......
  • Docker入门教程:10分钟掌握基础
    Docker入门教程:10分钟掌握基础1.Docker是什么?Docker是一种容器化技术,它允许开发者打包他们的应用以及应用的依赖环境到一个可移植的容器中,这个容器可以在任何支持Docker的操作系统上运行。2.Docker的基本组成镜像(Image):一个只读的模板,用于创建Docker容器。容器(Containe......
  • Go 链路追踪入门 Opentelemetry
    前言Opentelemetry分布式链路跟踪( DistributedTracing)的概念最早是由Google提出来的,发展至今技术已经比较成熟,也是有一些协议标准可以参考。目前在Tracing技术这块比较有影响力的是两大开源技术框架:Netflix公司开源的OpenTracing和Google开源的OpenCensus。两大框架......
  • 第38课 Scratch入门篇:绘制抛物线
    画正多边形故事背景: 神奇的抛物线程序原理: 抛物线在坐标轴的上体现内容是X坐标等值增加,Y坐标是线增加到达一个峰值后然后减少。我们可以通过X,Y坐标值的增加减少实现坐标的效果,然后通过画笔绘制出来!开始编程1、删除预设的猫咪角色,加入棒球角色,扩展模块的画笔......
  • 第39课 Scratch入门篇:绘制折线图
    画正多边形故事背景: 神奇的折线图程序原理: 为了实现折线图变化的数字,我们把30个随机数加入到列表中,通过读取列表中的随机数作为Y坐标,X坐标均匀增加来绘制图形。开始编程1、删除预设的猫咪角色,绘制一个空白的角色,增加一个自制积木名称为xy轴。2、绘制折线......
  • 零基础STM32单片机编程入门(三十四) JDY-31蓝牙模块实战含源码
    文章目录一.概要二.JDY-31蓝牙模块主要性能参数三.JDY-31蓝牙模块主芯片BK3432内部框图四.BK3432参考设计五.JDY-31蓝牙模块与单片机通讯方法1.与STM32F103板子硬件连接2.JDY-31蓝牙模块AT指令介绍六.STM32单片机与JDY-31蓝牙模块通讯实验1.硬件准备2.软件工程3.软......
  • 【Python快速入门和实践011】Python常用脚本-目标检测之VOC格式转YOLO格式脚本
    一、数据集介绍        NEU-DET数据集是由东北大学(NortheasternUniversity,简称NEU)发布的一个用于钢材表面缺陷检测的数据集。这个数据集特别设计用于支持和促进工业领域中的缺陷检测研究。NEU-DET数据集的一些主要特点包括:多样性和复杂性:数据集包含了多种类型......
  • SpringBoot整合MyBatis,入门教程,细节无敌,不能错过
    需求SpringBoot整合MyBatis。实现步骤搭建SpringBoot工程引入mybatis起步依赖、添加mysql驱动编写DataSource和MyBatis相关配置定义表和实体类编写dao和mapper文件/纯注解开发测试惨痛的教训同一个项目里,application.*文件只能有一个,如果有多个就会出现一些神奇问题......
  • AI大模型零基础入门学习路线(非常详细)从入门到精通,看这篇就 够了
    学习AI大模型从零基础入门到精通是一个循序渐进的过程,涉及到理论知识、编程技能和实践经验。下面是一份详细的指南,帮助你从头开始学习并逐步掌握AI大模型的构建与应用。第一阶段(10天):初阶应用该阶段让大家对大模型AI有一个最前沿的认识,对大模型AI的理解超过95%的人,可......