【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验

news2025/1/11 1:20:18

文章目录

  • 前言
  • 服务治理介绍
    • 什么是服务治理
      • 1、服务发现
      • 2、服务配置
      • 3、服务健康检测
    • 常见的注册中心
      • Zookeeper
      • Eureka
      • Consul
      • Nacos
  • Nacos 简介
  • Nacos 实战入门
    • 搭建nacos环境
      • 1、安装nacos
      • 2、配置nacos
      • 3、访问nacos
    • 将商品微服务注册到 nacos
      • 1、在 pom. xml 中添加 nacos 的依赖
      • 2、在主类上添加 @EnableDiscoveryClient 注解
      • 3、在 application. yml 中添加 nacos 服务的地址
      • 4、启动服务,
    • 将订单微服务注册到 nacos
      • 实现微服务调用
  • 总结

欢迎来到阿Q社区
https://bbs.csdn.net/topics/617897123

前言

在开始今天的学习之前,大家先来思考一个问题:

通过上一章的操作,我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址(ip,端口)等硬编码到了代码中,这种做法存在许多问题:

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

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

服务治理介绍

什么是服务治理

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

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

在这里插入图片描述

通过上面的调用图你会发现,除了微服务,还有一个组件是服务注册中心,它是微服务架构非常重要的一个组件,在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能:

1、服务发现

  • 服务注册:保存服务提供者和服务调用者的信息;
  • 服务订阅:服务调用者订阅服务提供者的信息,注册中心向订阅者推送提供者的信息;

2、服务配置

  • 配置订阅:服务提供者和服务调用者订阅微服务相关的配置;
  • 配置下发:主动将配置推送给服务提供者和服务调用者;

3、服务健康检测

  • 检测服务提供者的健康情况,如果发现异常,执行服务剔除。

常见的注册中心

Zookeeper

Zookeeper 是一个分布式服务框架,是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

Eureka

Eureka 是 SpringCloud Netflix 中的重要组件,主要作用就是做服务注册和发现,但是现在已经闭源。

Consul

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

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

Nacos

Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它是 SpringCloud Alibaba 组件之一,负责服务注册发现和服务配置,可以这样认为 nacos=eureka+config

Nacos 简介

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

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

Nacos 实战入门

接下来,我们就在现有的环境中加入nacos,并将我们的两个微服务注册上去。

搭建nacos环境

1、安装nacos

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

下载zip格式的安装包,然后进行解压缩操作,下载不下来的可以直接联系阿Q:qingqing-4132

2、配置nacos

将 conf 下的 nacos-mysql.sql 导入数据库

在这里插入图片描述

修改 conf 下的 application.properties,添加数据库配置

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos

修改bin目录下的 startup.cmd文件,将 set MODE=“cluster” 改为 set MODE=“standalone”

然后在 bin 下启动 nacos,访问地址127.0.0.0:8848/nacos,默认用户名密码nacos,可以在里边创建配置列表

3、访问nacos

打开浏览器输入http://127.0.0.1:8848/nacos/index.html,即可访问服务,默认密码是 nacos/nacos

在这里插入图片描述

将商品微服务注册到 nacos

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

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

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

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

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

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

4、启动服务,

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

在这里插入图片描述

将订单微服务注册到 nacos

接下来开始修改 shop-order 模块的代码,将其注册到 nacos 服务上,前三个步骤和商品微服务完全相同,此处直接省略。

启动之后如下

在这里插入图片描述

实现微服务调用

OrderController 中将请求路径写死变为从nacos中获取,代码如下:

ServiceInstance serviceInstance = discoveryClient.getInstances("shop-product").get(0);
String url = serviceInstance.getHost()+":"+serviceInstance.getPort();
//通过restTemplate调用商品微服务
ShopProduct shopProduct = restTemplate.getForObject("http://"+url+"/product/"+pid, ShopProduct.class);
Integer count = restTemplate.postForObject("http://"+url+"/product/reduceStock", productReduceDTO, Integer.class);

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

改好之后再次重启服务,请求地址127.0.0.1:8091/order/2,查看数据库

在这里插入图片描述

总结

到这儿,我们的 nacos 入门案例就结束了。下一篇将为大家带来基于nacos的负载均衡和基于feign实现微服务调用的文章,敬请期待吧!

后续的文章,我们将继续完善我们的微服务系统,集成更多的Alibaba组件。想要了解更多JAVA后端知识,请点击文末名片与我交流吧。留下您的一键三连,让我们在这个寒冷的东西互相温暖吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1412116.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pycharm2023.3.2使用conda创建工程

1 conda环境 举个例子&#xff0c;创建一个环境&#xff0c;名叫Pytorch&#xff0c;使用的python版本是3.7 &#xff08;1&#xff09;创建环境 conda create -n Pytorch python3.7&#xff08;2&#xff09;激活环境 conda activate Pytorch&#xff08;3&#xff09;查看…

小型商用机器人,如何做到小而强?

兼顾体型和性能。 体型和性能的矛盾 一直以来&#xff0c;商用清洁机器人的应用场景主要集中在大型商场、超市、写字楼等&#xff0c;为什么1000平米以下的小型商超等中小场景却很少涉足&#xff1f;原因可以说有很多&#xff0c;但核心为两方面&#xff0c;一方面&#xff0…

windows?linux?如何使用JMeter

windows?linux?如何使用JMeter 安装JMeter的步骤以GUI模式启动JMeter如何在非GUI模式下运行JMeter在linux中使用JMeter 安装JMeter的步骤 JMeter 是一个纯 Java应用程序&#xff0c;应该在任何具有兼容Java实现的系统上正确运行。 安装 JMeter 的步骤 步骤1&#xff09;安…

网络安全防御保护实验(一)

目录 一、规划ip地址 二、配ip地址 三、交换机和防火墙的配置 四、进行测试 实验要求&#xff1a;防火墙向下使用子接口连接生产区和办公区&#xff0c;所有分区设备可以ping通网关。 一、规划ip地址 二、配ip地址 三、交换机和防火墙的配置 四、进行测试

IP被封怎么办?访问网站时IP被阻止?解决IP禁令全方法

相信很多人遇到过IP禁令&#xff1a;比如你在访问社交媒体、搜索引擎或电子商务网站时会被限制访问&#xff0c;又或者你的的账号莫名被封&#xff0c;这些由于网络上的种种限制我们经常会遭遇IP被封的情况&#xff0c;导致无法使用继续进行网络行动。在本文中&#xff0c;我们…

Android开发修炼之路——(一)Android App开发基础-1

本文介绍基于Android系统的App开发常识&#xff0c;包括以下几个方面&#xff1a;App开发与其他软件开发有什么不一样&#xff0c;App工程是怎样的组织结构又是怎样配置的&#xff0c;App开发的前后端分离设计是如何运作实现的&#xff0c;App的活动页面是如何创建又是如何跳转…

scoped属性和深度选择器

在Vue单文件组件&#xff08;SFC&#xff09;中&#xff0c;为了防止样式全局污染&#xff0c;可以给 所有的scoped的css编译出来都会变成.class[哈希值]的形式 我们只能修改带data-v-0dca3a9a作用域的样式&#xff0c;像是 如果修改el-table的宽度 .el-table {width: 60…

惠友小课堂】拇外翻常见的几个误区,来看看你中了几个?

拇外翻作为常见的足部畸形&#xff0c;在日常生活中困扰着许多人。歪脚趾不仅外观不好看&#xff0c;还会出现疼痛、影响行走运动。但大多数人对于拇外翻的认识都不足常常落入认知误区&#xff0c;快来看看你中了几个&#xff1f; 误区一 Q 我都没穿过高跟鞋&#xff0c;怎么也…

科大讯飞 再次引爆Ai

去年「科大讯飞版ChatGPT」星火大模型刚上线的时候&#xff0c;小编给大家推荐过一波&#xff0c;演示了其强大的功能&#xff0c;不少小伙伴都立马申请体验了一把&#xff0c;有小伙伴还私信我说功能非常强大&#xff0c;工作效率提高不少&#xff0c;支持国产大模型之类赞扬。…

Azure AI - 沉浸式阅读器,阅读障碍用户福音

目录 一、什么是沉浸式阅读器将内容划分开来提高可读性显示常用字词的图片突出显示语音的各个部分朗读内容实时翻译内容将单词拆分为音节 二、沉浸式阅读器如何工作&#xff1f;环境准备创建 Web 应用项目设置身份验证配置身份验证值安装标识客户端 NuGet 包更新控制器以获取令…

Dify学习笔记-工具(七)

1、工具 工具定义 工具可以扩展 LLM 的能力&#xff0c;比如联网搜索、科学计算或绘制图片&#xff0c;赋予并增强了 LLM 连接外部世界的能力。Dify 提供了两种工具类型&#xff1a;第一方工具和自定义工具。 你可以直接使用 Dify 生态提供的第一方内置工具&#xff0c;或者轻…

基于Java的高校运动会管理系统的设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言 详细视频演示 具体实现截图 技术栈 后端框架SpringBoot 前端框架Vue 持久层框架MyBaitsPlus 系统测试 系统测试目的 系统功能测试 系统测试结论 代码参考 数据库参考 源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、…

倍增算法笔记

主要应用场景 RMQ&#xff1a;区间最值问题 LCA&#xff1a;最近公共祖先问题 RMQ问题——区间最值 如果用数组f[N]存储,用数组a[i][j]表示从第i个数起连续 2^j 个数中的最大值,[i,i 2^j - 1],显然a[i][0] f[i],则很容易得到状态转移方程: a[i][j] max(a[i][j - 1], a[i …

免 费 小程序商城搭建之鸿鹄云商 SAAS云产品概述

【SAAS云平台】打造全行业全渠道全场景的SaaS产品&#xff0c;为店铺经营场景提供一体化解决方案&#xff1b;门店经营区域化、网店经营一体化&#xff0c;本地化、全方位、一站式服务&#xff0c;为多门店提供统一运营解决方案&#xff1b;提供丰富多样的营销玩法覆盖所有经营…

Java Web(五)--DOM

介绍 DOM 全称是 Document Object Model 文档对象模型&#xff1b; DOM 是 W3C&#xff08;万维网联盟&#xff09;的标准。 DOM 定义了访问 HTML 和 XML 文档的标准&#xff1a; "W3C 文档对象模型 &#xff08;DOM&#xff09; 是中立于平台和语言的接口&#xff0…

伊恩·斯图尔特《改变世界的17个方程》薛定谔方程笔记

想法是等这学期学到薛定谔方程后再把整份完善下。 它告诉我们什么&#xff1f; 这个方程不是把物质作为粒子&#xff0c;而是作为波&#xff0c;并描述这样的波如何传播。 为什么重要&#xff1f; 薛定谔方程是量子力学的基础&#xff0c;它与广义相对论一起构成了当今最有效的…

JAVA_EE_api_中英文对照版

点击即可下载&#xff1a; JAVA_EE_api_中英文对照版

外包干了4个月,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了差不多4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能…

K/HW/E03-SY850/150型测宽测厚组合测量仪

关键字:测宽测厚组合测量仪,扁钢测宽仪器,板材测厚仪器,冷轧测宽测厚设备,组合测量仪, 产品简介&#xff1a; 设备同时对扁钢或钢板的宽度和厚度进行即时测量 基本原理 该设备共设置2只二维激光测量传感器和2只激光位移传感器。二维传感器设置在两侧&#xff0c;可根据板材厚…

(2)(2.8) Holybro 900Mhz XBP9X无线电遥测设备

文章目录 前言 1 特点 2 规格 3 电源 4 引脚输出 5 下载 前言 Holybro XBP9X 无线电设备可使用 Digi 免费的 XCTU 软件或通过 Digi 简化的 AT 或 API 命令集轻松进行配置。无线电台采用 256 位 AES 加密技术&#xff0c;可在设备之间安全可靠地传输关键数据。无线电的射…