Spring Cloud学习(三)【Nacos注册中心】

news2024/11/27 10:23:01

文章目录

  • 认识 Nacos
  • Nacos 安装
  • 使用 Nacos 完成服务注册
  • Nacos 服务分级存储模型
  • 集群负载均衡策略 NacosRule
  • 根据权重负载均衡
  • Nacos 环境隔离
  • Nacos 和 Eureka 的区别


认识 Nacos

Nacos 是阿里巴巴的产品,现在是 SpringCloud 中的一个组件。相比Eureka 功能更加丰富(服务注册与发现、分布式配置),在国内受欢迎程度较高。

Nacos 安装

在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:

GitHub主页:https://github.com/alibaba/nacos

GitHub的Release下载页:https://github.com/alibaba/nacos/releases

注意 Linux 和 Mac 解压时,要使用 tar -xvf 命令解压(不能手动)

tar -xvf nacos-server-1.4.1.tar.gz

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

解压完成后通过如下命令启动 nacos(进入到 nacos/bin 目录下[linux])

sh startup.sh -m standalone

然后访问地址 http://localhost:8848/nacos/#/login ,出现如下界面代表安装成功

在这里插入图片描述

默认账号和密码都是 nacos

使用 Nacos 完成服务注册

  1. cloud-demo 父工程中添加 spring-cloud-alilbaba 的管理依赖:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
  1. 注释掉 order-serviceuser-service 中原有的 eureka 依赖。

  2. 添加 nacos 的客户端依赖:

<!-- nacos客户端依赖包 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. 修改 user-service&order-service 中的 application.yml 文件,注释 eureka 地址,添加 nacos 地址:
spring:
	cloud:
	    nacos:
	      server-addr: localhost:8848  # nacos 服务地址
  1. 启动并测试:

在这里插入图片描述
可以发现服务成功注册到 nacos

Nacos 服务分级存储模型

在这里插入图片描述

服务调用尽可能选择本地集群的服务,跨集群调用延迟较高
本地集群不可访问时,再去访问其它集群

集群具有容灾的作用

在这里插入图片描述

配置实例的集群属性

yaml 文件中配置为 HZ 集群将 userservice1 / userservice2 实例启动

在这里插入图片描述

spring: 
	cloud:
	    nacos:
	      server-addr: localhost:8848  # nacos 服务地址
	      discovery:
	        cluster-name: HZ

yaml 文件中配置为 SH 集群将 userservice3 实例启动

spring: 
	cloud:
	    nacos:
	      server-addr: localhost:8848  # nacos 服务地址
	      discovery:
	        cluster-name: SH

可以看到 userservice 有 2 个集群,3 个实例

在这里插入图片描述

HZ 集群 和 SH 集群

在这里插入图片描述

总结:

在这里插入图片描述

集群负载均衡策略 NacosRule

我们现在要做的是让 orderservice 远程调用 userservice 时,优先选择本地集群,所以需要给 orderservice 配置集群

  1. orderservice 的 yaml 配置文件中
spring:
  cloud:
    nacos:
      server-addr: localhost:8848  # nacos 服务地址
      discovery:
        cluster-name: HZ  # 集群名称
  1. order-service 中设置负载均衡的 IRuleNacosRule,这个规则优先会寻找与自己同集群的服务:
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

上述配置是当 orderservice 访问 userservice 服务时生效

当同集群要访问的服务挂掉时,则会访问其它集群的服务

在这里插入图片描述

根据权重负载均衡

实际部署中会出现这样的场景:

  • 服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求

Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高

在这里插入图片描述

总结:

在这里插入图片描述

Nacos 环境隔离

Nacos中服务存储和数据存储的最外层都是一个名为 namespace 的东西,用来做最外层隔离

在这里插入图片描述

  1. 在 Nacos 控制台可以创建 namespace,用来隔离不同环境

在这里插入图片描述

  1. 然后填写一个新的命名空间信息:

在这里插入图片描述

  1. 保存后会在控制台看到这个命名空间的 id

在这里插入图片描述

  1. 修改 order-serviceapplication.yml,添加 namespace
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice # 微服务名称
  cloud:
    nacos:
      server-addr: localhost:8848  # nacos 服务地址
      discovery:
        cluster-name: HZ  # 集群名称
        namespace: 52a45462-a6cf-4d9d-9627-110d4896d696  # dev命令空间 ID

在这里插入图片描述

  1. 重启 order-service 后,再来查看控制台:

在这里插入图片描述

  1. 此时访问 order-service,因为 namespace 不同,会导致找不到 userservice,控制台会报错:

在这里插入图片描述

在这里插入图片描述

Nacos 和 Eureka 的区别

nacos注册中心细节分析

Nacos 中将实例分为临时实例与非临时实例

在这里插入图片描述

临时实例和非临时实例

服务注册到Nacos时,可以选择注册为临时或非临时实例,通过下面的配置来设置(ephemeral):

spring:
	nacos:
	      server-addr: localhost:8848  # nacos 服务地址
	      discovery:
	        cluster-name: HZ  # 集群名称
	        namespace: 52a45462-a6cf-4d9d-9627-110d4896d696  # dev命令空间 ID
	        ephemeral: false   # 是否是临时实例

临时实例宕机时,会从nacos的服务列表中剔除,而非临时实例则不会

在这里插入图片描述

在这里插入图片描述

  1. Nacos 与 eureka 的共同点
  • 都支持服务注册和服务拉取
  • 都支持服务提供者心跳方式做健康检测
  1. Nacos 与 Eureka 的区别
  • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
  • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
  • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
  • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

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

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

相关文章

同立海源携CGT核心试剂与技术服务整体解决方案亮相SITC 2023年会

2023年11月1日至5日&#xff0c;备受瞩目的第38届癌症免疫治疗学会&#xff08;SITC&#xff09;在美国圣地亚哥会议中心盛大召开&#xff0c;作为世界上最大的专注于癌症免疫治疗的国际盛会&#xff0c;本届SITC年会专注于探讨和分享最新的癌症免疫治疗技术和应用研究成果&…

Libra R-CNN: Towards Balanced Learning for Object Detection(2019.4)

文章目录 AbstractIntroduction引入问题1&#xff09; Sample level imbalance2) Feature level imbalance3) Objective level imbalance进行解决贡献 Related Work&#xff08;他人的work&#xff0c;捎带与我们的对比&#xff09;Model architectures for object detection&a…

2023长三角G60科创走廊高质量发展要素对接大会举行

11月8日&#xff0c;第六届中国国际进口博览会2023长三角G60科创走廊高质量发展要素对接大会在国家会展中心隆重举行。会上&#xff0c;G60“一廊九城”同向同行、共赴未来&#xff0c;立足“三先走廊”战略定位&#xff0c;围绕“服务‘一带一路’建设&#xff0c;赋能一体化高…

Java进阶API第二章

Java进阶API第二章 一. 抛出企业问题&#xff0c;脱离main测试&#xff0c;模块化编程 1.学校里如何测试的 //学校教的测试方法 public static void main(String[] args) {//2.本地测试//3.调用函数//4.看输出&#xff0c;查看结果是否符合预期//5.预期结果和测试结果是通过人工…

【开源】基于Vue和SpringBoot的大学兼职教师管理系统

项目编号&#xff1a; S 004 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S004&#xff0c;文末获取源码。} 项目编号&#xff1a;S004&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管…

电动汽车多时段动态充电价格及网损策略研究

摘要&#xff1a;电动汽车以无序充电方式接入配电网时与网内基础用电负荷叠加&#xff0c;会形成峰上加峰的现象&#xff0c;不利于配电网的稳定运行。针对上述问题&#xff0c;首先对私家车充电负荷进行建模&#xff0c;采用蒙特卡罗抽样模拟电动汽车无序行为下的充电负荷曲线…

灵活运用Vue指令:探究v-if和v-for的使用技巧和注意事项

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、作…

10道高频React面试题快问快答

※其他的快问快答&#xff0c;看这里&#xff01; 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试…

modbus-TCP协议详解

modbus-TCP协议详解 1996年施耐德公司推出基于以太网TCP/IP的modbus协议&#xff1a;modbus-TCP。 MODBUS-TCP使MODBUS-RTU协议运行于以太网&#xff0c;MODBUS-TCP使用TCP/IP以太网在站点间传送MODBUS报文&#xff0c;MODBUS-TCP结合了以太网物理网络和网络标准TCP/IP以及以…

【Spring】Spring IOC DI

Spring IOC & DI IOC DI入门什么是Spring什么是容器什么是IOC IOC介绍传统程序开发解决方案 DI IOC详解Bean的存储Controller(控制器存储)Service(服务存储)Repository(仓库存储)Component(组件存储)Configuration(配置存储) 为什么需要这么多类注解类注解之间的关系方法注…

二十二、W5100S/W5500+RP2040树莓派Pico<SMTP发送邮件>

文章目录 1 前言2 简介2 .1 什么是SMTP&#xff1f;2.2 SMTP是如何工作的&#xff1f;2.3 SMTP、IMAP和POP32.4 SMTP应用场景 3 WIZnet以太网芯片4 SMTP发送邮件示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前…

VINS-Mono-后端优化 (三:视觉雅可比推导)

用逆深度是因为这样可以在优化中从优化3个变量降低到1个&#xff0c;降低优化的维度加快求解速度 用逆深度是因为当距离很远的时候&#xff0c; 1 x \frac{1}{x} x1​ x x x 就会无穷大&#xff0c;而3D点很近的情况也一般不会有&#xff0c;这也是为了数值稳定性 用逆深度的…

微服务治理

微服务治理 什么是服务治理 服务治理 是一种方法和实践&#xff0c;用于管理和监控分布式系统中的服务。它旨在确保服务能够在整个生命周期内可靠地运行、可维护、可扩展和符合业务需求。服务治理涉及一系列的实践、策略和工具&#xff0c;用于管理和优化服务的交付和运行。 …

强化学习 - DQN及进化过程(Double DQN,Dueling DQN)

1.DQN 1.1概念 DQN相对于Q-Learning进行了三处改进&#xff1a; 1.引入神经网络&#xff1a;如下图所示希望能从状态A中提取Q(s,a) 2.经验回放机制&#xff1a;连续动作空间采样时&#xff0c;前后数据具有强关联性&#xff0c;而神经网络训练时要求数据之间具有独立同分布特性…

GZ038 物联网应用开发赛题第4套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 &#xff08;第4套卷&#xff09; 工位号&#xff1a;______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具&#xff0c;操作安全规范&#xff1b; 2、竞赛过程中如有异议&#xff0c;可向现场考评…

双休日做什么副业?适合不同人群的副业赚钱方法

双休日是大多数人可以用来兼职或者做副业的时间&#xff0c;它是大家可以利用的宝贵时光。通过合理规划和努力工作&#xff0c;双休日的副业可以带来额外的收入&#xff0c;并且可以适应不同人群的需求和兴趣。那么&#xff0c;具体来说&#xff0c;适合不同人群的副业赚钱方法…

什么是特权会话管理

特权会话是由具有管理权限的用户在访问 IT 基础架构中的系统、设备或应用程序&#xff08;本地或远程&#xff09;时启动的 Internet 会话&#xff0c;包括在该会话期间执行的所有活动。 特权会话可以是数据库或安全管理员&#xff0c;通过 RDP 或 SSH 会话访问数据中心的机密…

Docker 安装与优化

一、安装Docker 1、关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02、安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2#解释 yum-utils #提供了yum-config-manager工具 device mapper #是linux内核中支持逻辑卷…

高压MOS/低压MOS在单相离线式不间断电源上的应用-REASUNOS瑞森半导体

一、前言 单相离线式不间断电源只是备援性质的UPS&#xff0c;市电直接供电给用电设备再为电池充电&#xff0c;一旦市电供电品质不稳或停电时&#xff0c;市电的回路会自动切断&#xff0c;电池的直流电会被转换成交流电接手供电的任务&#xff0c;直到市电恢复正常。UPS只有…

Zeitgeist ZTG Token以及其预测市场加入Moonbeam生态

波卡上的首选多链开发平台Moonbeam宣布与Zeitgeist达成XCM集成&#xff0c;将ZTG Token引入Moonbeam。此集成将使波卡内的Moonbeam和Zeitgeist网络之间的流动性得以流动&#xff0c;并通过Moonbeam的互连合约实现远程链集成。 Zeitgeist是一个基于波卡的Substrate区块链框架构…