当前位置: 首页 > news >正文

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建

文章目录

  • 【Spring Cloud Alibaba】003-Nacos 概述与单机搭建
  • 一、Nacos 概述
    • 0、新技术学习思路推荐
    • 1、什么是 Nacos
    • 2、架构图
      • 架构图
      • 架构图信息
  • 二、Nacos 单机搭建
    • 1、下载与启动
      • 下载地址
      • 编辑 startup.cmd 文件
      • 下面对两种模式的判断
      • 其他配置说明
      • 启动
      • 访问
    • 2、修改项目
      • 第一步:在两个子项目的 pom.xml 文件下加入依赖
      • 第二步:设置两个子项目的应用名
      • 第三步:启动两个子项目
      • 第四步:访问 nacos 查看服务列表
      • 第五步:测试停掉 stock 服务
      • 第六步:远程调用演示

一、Nacos 概述

0、新技术学习思路推荐

  • 先找到对应官方文档,看看官方介绍;
  • 然后找到核心架构图,架构图是能够很直观看出核心理念的;
  • 紧接着动手实战一波,加深理解;
  • 最后思考实现原理,尝试通过源码分析,找到答案。

1、什么是 Nacos

在早期 Spring Cloud 开始流行的时候,Eureka 使用得比较广泛,后来这个项目在 2018 年 7 月份的时候,官方宣布不再维护 Eureka 2.0 了,再来后阿里推出全新 Spring Cloud Alibaba 系列,其中 Nacos 就是一员。

官网地址:https://nacos.io/zh-cn/index.html

github 地址:https://github.com/alibaba/nacos

open-api 地址:https://nacos.io/zh-cn/docs/open-api.html

官方:一个更易于构建云原生应用动态服务发现、配置管理和服务管理平台。

动态服务发现:当新增一个微服务实例,Nacos 它能够感知到,也就是服务治理,这也是作为注册中心最基本的功能。

配置管理:Nacos 它不仅仅是一款注册中心,它还提供了配置管理一大特点,不仅是对服务进行管理,而且还可以管理你项目中对应的配置文件,让你整个微服务项目配置中心化,统一全部放在 Nacos 配置管理中;除此之外,它还是动态化的。那什么是动态化?举个例子,在 Spring Boot 项目中,会包含 properties、yml 配置文件,在项目启动中,如果想要修改对应的配置文件,是需要重启应用,更改后的配置文件才能生效。而 Nacos 的配置管理,它可以让你在更改配置文件后,无需重启应用,即可生效。

服务管理平台:Nacos 它提供了一套 Web 管理后台,在这个后台中,我们可以监控整个服务运行状态以及对配置管理进行操作。

Nacos 解决了微服务实例之间调用关系错综复杂、难以维护的问题!

2、架构图

架构图

img

架构图信息

从最上层开始看,首先就是 Provider(提供者)、Consumer(消费者),都需要借助于 Name(服务名称、服务地址),这是最外层。Provider、Consumer 都是需要依赖 Nacos Server

接着往下看,Nacos Server 最上层,有一层 OpenAPI,对外提供服务。那对外提供什么服务呢?

  • Naming Service注册服务,我们微服务实例的注册、注销、服务管理都是在这一块进行实现的。
  • Config Service配置服务,它提供了在微服务架构中,统一配置中心的功能。 Nacos 配置中心为服务配置提供了编辑、存储、分发、变更管理、历史版本管理等功能,并且支持在实例运行中,更改配置。

除此之外,Naming Service、Config Service 也是依赖于 Nacos Core 核心来完成的,并且在 Nacos Core 核心中还包含了Consistency Protocol(一致性协议),这一块就涉及到分布式一致性协议的内容,包括 CAP 理论、Raft 协议,这些也都是我们在使用微服务架构中需要考虑的问题。

至于 Nacos Console,这一整块相当于服务管理平台,也是依赖于 Nacos 提供的 OpenAPI 来进行扩展的额外功能。

重点:Config Server 对应配置管理中心、Naming Service 对应注册中心。

二、Nacos 单机搭建

1、下载与启动

下载地址

下载我们选择的 spring cloud alibba 版本对应的 nacos 版本,在这里可以看到:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

我这里下载这个(windows系统):nacos-server-2.0.4.zip

https://github.com/alibaba/nacos/releases

编辑 startup.cmd 文件

从解压后得到的目录里面找到nacos\bin\startup.cmd文件,由于默认配置是集群,我们改成单机模式

**不修改配置的启动方法:**单机:startup.cmd -m standalone 集群:startup.cmd -m cluster 其他系统类似!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kYRyoyne-1676962815399)(https://gudu2019.oss-cn-beijing.aliyuncs.com/mdimg/image-20230221135142353.png)]

下面对两种模式的判断

image-20230221135317564

其他配置说明

数据源,如果没有配置,则默认存在内存里。

启动

在这里提醒一点Nacos 建议在内部隔离网络环境中部署,强烈建议不要部署在公共网络环境中。Nacos 属于微服务内部所使用的组件,是没有必要暴露在公网当中。

image-20230221140201059

访问

image-20230221140219859

2、修改项目

第一步:在两个子项目的 pom.xml 文件下加入依赖

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

第二步:设置两个子项目的应用名

server:port: 8081
spring:application:name: stock-servicecloud:nacos:server-addr: localhost:8848discovery:username: nacospassword: nacosnamespace: publicserver:port: 8080
spring:application:name: order-servicecloud:nacos:server-addr: localhost:8848discovery:username: nacospassword: nacosnamespace: public

第三步:启动两个子项目

image-20230221143327937

第四步:访问 nacos 查看服务列表

image-20230221143422340

第五步:测试停掉 stock 服务

停止服务

image-20230221143516646

查看 nacos 服务列表

image-20230221143557549

第六步:远程调用演示

修改代码

image-20230221144334559

加依赖到订单服务

<!-- loadbalancer -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

加负载均衡注解

image-20230221144101977

重启并访问测试

image-20230221144932106

相关文章:

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建

【Spring Cloud Alibaba】003-Nacos 概述与单机搭建 文章目录【Spring Cloud Alibaba】003-Nacos 概述与单机搭建一、Nacos 概述0、新技术学习思路推荐1、什么是 Nacos2、架构图架构图架构图信息二、Nacos 单机搭建1、下载与启动下载地址编辑 startup.cmd 文件下面对两种模式的…...

如何使用 API 工具做 Websocket 测试

在 API 测试中&#xff0c;对 Websocket 协议的支持呼声越来越高&#xff0c;今天给大家推荐一款 开源的 API 管理工具——Postcat&#xff0c;以及教教大家&#xff0c;如何利用 API 管理工具做 Websocket 测试。 在线 Demo 链接&#xff1a;Postcat - Open Source API Ecosys…...

90%的人都理解错了HTTP中GET与POST的区别

Get和Post是HTTP请求的两种基本方法&#xff0c;要说它们的区别&#xff0c;接触过WEB开发的人都能说出一二。 最直观的区别就是Get把参数包含在URL中&#xff0c;Post通过request body传递参数。 你可能自己写过无数个Get和Post请求&#xff0c;或者已经看过很多权威网站总结…...

【C++】秋招实习面经汇总篇

C面经汇总 系列综述&#xff1a; 目的&#xff1a;本系列是个人整理为了秋招和实习面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡背诵量与深入程度。 来源&#xff1a;材料主要源于阿秀的笔记和《王道考研复习指导》进行的&#xff0c;每个知识点的修正和深入主要…...

干货分享:2023欧美市场分析与机会

1、2023年欧美市场分析美国是⼀个消费大国&#xff0c;正常情况下做外贸不可忽略的市场。如何找客户&#xff1a;专注产业链 。产业链对接&#xff0c;其上游是什么&#xff0c;那么他就是我的客户 ( 原材料-⼯⼚)南美洲是北美的经济殖民地(矿产资源农产品)&#xff0c;非洲仍然…...

介绍Kadence Elements元素模板:按您的方式设计网站

随着 Kadence Pro 1.0.4 和 Kadence Blocks Pro 1.5.8 的发布&#xff0c;Kadence 团队很高兴地宣布推出最强大的新方法&#xff0c;帮助网站所有者使用 Kadence Elements Templates 创建动态和高度定制的 WordPress 网站。如果您曾经创建过 WordPress 网站&#xff0c;并且发现…...

物联网发展的重要通信技术Wi-Fi

Wi-Fi 可以适应各种场景的联网需求 Wi-Fi 在实现物联网创新方面发挥了基础性作用&#xff0c;提供了广泛的连接性&#xff0c;将各种“事物”相互连接、连接到互联网&#xff0c;以及连接到全球使用的 180 亿台 Wi-Fi 设备。物联网的经济潜力是无限的&#xff0c;Wi-Fi 为智能…...

OSS上传(Java和Js)

OSS上传&#xff08;Java和Js&#xff09;准备工作创建RAM用户创建角色创建权限策略给角色授予权限策略获取临时访问凭证Java普通上传OSSJava分片上传OSSJS普通上传OSSJS分片上传OSS使用RAM用户或STS方式访问 由于阿里云账号AccessKey拥有所有API访问权限&#xff0c;建议遵循阿…...

【虚拟机】VirtualBox Host-Only + 主机网络共享配置

文章目录创建Host-Only虚拟机配置主机配置其它工作中经常会使用到虚拟机进行各种技术的试验&#xff0c;之前为了省事常用桥接模式&#xff0c;可是我经常变换办公地点&#xff0c;每个办公地点的局域网网段并不一样&#xff0c;所以我采取了仅主机模式网络共享这种方式&#x…...

小公司“混”的3年,我认真做了5件事,真的受益终生

小公司“混”的3年&#xff0c;我认真做了5件事&#xff0c;真的受益终生 目录&#xff1a;导读 功能测试很重要但不值钱 自动化测试在小公司没市场&#xff0c;但是你得会 给自己的一些忠告 第一件事&#xff1a;分清阶段&#xff0c;制定计划 第二件事&#xff1a;梳理…...

Linux Crontab命令定时任务基本语法与操作教程

Linux Crontab命令定时任务基本语法与操作教程 一、Crontab查看编辑重启 1、查看crontab定时执行任务列表 crontab -l 2、编辑crontab定时执行任务 crontab -e 3、删除crontab定时任务 crontab -r 4、相关命令&#xff1a; sudo service crond start #启动服务 sudo …...

文档测试要测什么,如何进行测试?

文档测试要测什么&#xff0c;如何进行测试&#xff1f; 对于交付用户文档来说&#xff0c;以需求、用户手册、安装手册等为主&#xff0c;检查用户文档是否和实际的存在差别&#xff0c;主要从以下几个方面来考虑&#xff1a; 阅读者&#xff1a;文档面向的读者定位要清晰&…...

.net 6 引入EFCore

这里默认使用sql server数据库 DBFirst nuget引入程序集 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Design Microsoft.EntityFrameworkCore.Tools Microsoft.Extensions.Logging.Console 执行脚本 设置DAL…...

MySQL------自定义排序

1、MySQL函数 field() 实现自定义 语法&#xff1a; SELECT * from table_name ORDER BY FIELD(str,str1,str2,str3,…) str: 字段名, str1,str2,str3: 自定义排序的数值 例1排序-所有值&#xff1a; 先姓名排序后出生日期排序 SELECT * from name_info ORDER BY FIELD(name…...

FFMPEG自学二 ⾳频编码实战

一、FFmpeg编码流程二、流程关键函数avcodec_find_encoder&#xff1a;根据指定的AVCodecID查找注册的编码器。 avcodec_alloc_context3&#xff1a;为AVCodecContext分配内存。 avcodec_open2&#xff1a;打开编码器。 avcodec_send_frame&#xff1a;将AVFrame⾮压缩数据给…...

​一致魔芋在北交所上市:市值突破11亿元,吴平夫妇为实控人​

2月21日&#xff0c;湖北一致魔芋生物科技股份有限公司&#xff08;下称“一致魔芋”&#xff0c;BJ:839273&#xff09;在北京证券交易所上市。本次上市&#xff0c;一致魔芋的发行价为11.38元/股&#xff0c;发行1350万股&#xff0c;募资总额约为1.54亿元。 本次发行后&…...

进程或线程终止是否会释放锁

线程锁的必要性比如一个多线程抢票程序&#xff0c;tickets作为临界资源&#xff0c;所有的线程都要对它进行判断ticket是否大于0&#xff0c;以及ticket–的操作。用ticket–操作举例&#xff0c;虽然他看起来是一行C语言的代码&#xff0c;但是实际上它的底层汇编经历了三个阶…...

mysql复制表提示某些为null字段无效

sql_mode‘ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’ explicit_defaults_for_timestamp ON 1、方式1、 首先用下面的命令看下sql_mode show variables like ‘sql_mode’; 如果查询的结果如下&#…...

【数据库】redis 配置文件与发布订阅

目录 配置文件 一&#xff0c;Units 二&#xff0c; INCLUDE 三&#xff0c;NETWORK 1&#xff0c; bind 2&#xff0c; tcp-backlog 3&#xff0c;timeout 4&#xff0c; tcp-keepalive 四&#xff0c;GENERAL 1&#xff0c;daemonize 2&#xff0c; pidfile 3&…...

ChatGPT来了,英语不能丢,但我不想上班

文 / 谷雨&#xff08;微信公众号&#xff1a;王不留&#xff09; 好久没写文&#xff0c;可能大伙已把我忘了。春节之后&#xff0c;状态一直不太好。我在2月1号时从老家直接来到了深圳出差&#xff0c;而后以996的工作状态疲于应付工作中的各种问题。 终于这周末休息了两天&a…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...