SpringCloud-Alibaba学习笔记01——Nacos介绍以及注册中心的演变和Nacos核心功能

news2024/11/18 17:50:47

文章参考自图灵大佬课程:https://www.bilibili.com/video/BV1fe4y1b7ha?p=1&vd_source=5f425e0074a7f92921f53ab87712357b

1.什么是Nacos

  官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )服务配置(Nacos Config)和服务管理平台。
  简单来说就是:集注册中心+配置中心+服务管理的平台。
  Nacos的关键特性包括:

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态 DNS 服务
  • 服务及其元数据管理

2. Nacos注册中心

  管理所有微服务、解决微服务之间调用关系错综复杂、难以维护的问题;

2.1 注册中心演变及其设计思想

如下图:
  1、传统的分布式架构通过RestTemplate实现服务之间的相互调用,但是如果将被调用方的IP:端口维护在调用方的话,当服务非常多的时候,调用关系十分复杂难以维护。如果每个被调用方的IP:端口发生改变的话,需要更改代码,十分不方便。集群部署也十分麻烦。

  所以我们可以通过手动维护一张注册表来通过服务名来调用微服务。

  2、为什么可以通过服务来调用服务?
  因为我们手动的维护了一个注册表,里面存放着每个服务的服务名和IP:端口,我们通过服务名去调用某个服务时,先通过服务名去数据库中查询该服务对应的IP:端口,然后再通过IP:端口对服务进行调用,实际上还是通过IP:端口进行调用,只不过将这一步给封装了起来,方便开发者使用而已。
在这里插入图片描述在这里插入图片描述

如下图:
  3、但是如果当会员服务进行横向扩展的时候,通过一个服务名可以查询出好几个IP:端口,怎么选择去调用哪个会员服务呢?
  (1)我们可以通过自己编写一个轮询(负载均衡的机制) 来实现服务的选择问题,按顺序对服务进行调用。
  (2)使用nginx维护订单服务列表,把所有的服务配置在nginx中(服务端负载均衡)。问题:如果一个服务挂掉了,我们下次不想再调用这个服务,那么nginx实现不了这个功能,因为nginx不会对服务进行监控,发现不了服务已经挂掉了。而且当成百上千的微服务配置在nginx中时,配置文件会变得十分复杂,运维人员会崩溃的。
在这里插入图片描述

如下图:
  4、注册中心诞生
  信息也会被存到数据库中。我们通过服务名去调用某个服务时,先通过服务名去数据库中查询该服务对应的IP:端口,然后再通过IP:端口对服务进行调用。如果是订单服务列表的话,会通过负载均衡算法来进行选择(默认是轮询,可以修改,通过负载均衡组件来管理负载均衡算法)(客户端负载均衡)。如果某个服务挂掉的话,注册中心会检测到该服务不可用,则该服务会被忽略不会被调用(心跳机制)。
在这里插入图片描述

2.2 核心功能

服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。

服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。

服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。

服务发现:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存。

服务健康检查:Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)。

2.3 主流的注册中心

CAP : C 一致性 A 可用性 P 分区容错性
在这里插入图片描述

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

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

相关文章

threejs 模型 世界坐标系和设备坐标系

前言 开发中遇到需求需要点击屏幕位置处,生成一个类似圆形弹窗面板,这个交互需要进行的坐标转换为模型坐标(局部坐标)>场景坐标(世界坐标)>标准设备坐标>屏幕空间坐标,也就是一个将3D…

开启分片支持需要如何去做?

开启分片支持 如果您计划使您的Javashop系统数据分片,请参考本文档进行相应的配置。 一、做好分片策略 在开始之前,您应该根据自己的业务情况准备好分片策略,包括: 1、要用几个数据库来分片 2、相应的表要分几张表 在本例&#x…

大数据 | 实验一:大数据系统基本实验 | MapReduce 初级编程

文章目录📚实验目的📚实验平台📚实验内容🐇编程实现文件的合并和去重🐇编程实现对输入文件的排序🐇对指定的表格进行信息挖掘📚实验目的 1)通过实验掌握基本的 MapReduce 编程方法。…

警惕“Money Message”勒索软件!数据安全不容忽视

近段时间,出现了一个名为“Money Message”的新型勒索软件,他们利用Money Message 病毒加密文件并以此向受害者勒索巨额赎金。 Money Message勒索软件是用 C编写,包含一个嵌入式JSON 配置文件,用于确定设备的加密方式。加密设备后…

小红书内容种草,曝光渠道分析总结

这是一个内容为王的时代,也是一个内容爆炸的时代。想要在以分享特色的小红书平台,实现内容种草,迅速出圈。今天来马文化传媒就从实操的角度,为大家带来小红书内容种草,曝光渠道分析总结的各种干货! 一、什…

关于图形界面Pyqt与QT的区别选择

关于图像界面(GUI)想必大家都并不陌生,想要将一段已经完善的功能列表进行可视化操作并且具有一定的操作空间,将功能可视化必不可少,一个好的可视化工具不仅可以集成一系列小的文件功能,还能将不同方法之间的…

ubuntu基本环境配置及mysql8.0.32和mysql workbench安装

ubuntu基本环境配置 文章目录ubuntu基本环境配置各种依赖包下载地址一、使用root账号进行远程连接二、防火墙相关设置2.1启用2.2开放和关闭端口数据库mysql安装(8.0.32)工具mysqlworkbench(8.0.32)各种依赖包下载地址 http://cn.archive.ubuntu.com/ubuntu/pool/main/liba/lib…

【1019. 链表中的下一个更大节点】

来源:力扣(LeetCode) 描述: 给定一个长度为 n 的链表 head 对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严…

三天吃透Redis八股文

Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis 的数据是存在内存中的&#xf…

java调用python动态生成光电雷达图

一、编写java调用程序 //http://localhost:8945/api/ExecPy/ExecPyPollutionRadarMap ApiOperation(value "ExecPy") GetMapping(value "/ExecPyPollutionRadarMap") public String ExecPyPollutionRadarMap() {String scriptpath"F:\\demo\\Radar…

如何驱动模拟舵机-Controller 1.0b软件的使用

1.支持平台 win10、win7 win10打开Controller 1.0.exe即可运行;win7需要先安装Controller1.0b资料包\NetFarmwork文件夹中的.net框架组件。 2.电子硬件 我们用以下硬件为例来讲解Controller 1.0b软件的使用: 主控板 Basra主控板(兼容Arduino…

selenium自动化测试面试题【含答案】

目录 1、selenium中如何判断元素是否存在? 2、selenium中hidden或者是display = none的元素是否可以定位到? 3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的? 4、如何提高s…

谷歌浏览器安装插件(从 Edge 浏览器里获取插件)

前言: 因为谷歌插件 商店,国内(不科学上网)是无法访问的,所以 要安装插件就得 通过各种途径 下载后 解压,然后安装。 谷歌浏览器下载、安装插件的方式 方式一:自行 百度下载压缩包&#xff0…

win10安装telnet服务器(开启端口,开启telnet客户端后依旧显示:无法打开到主机的连接,在端口xxxx连接失败)

前言 注:我使用telnet的根本原因是想测试端口是否通,因为要使用花生壳, 而之所以会显示 启telnet客户端后依旧显示:无法打开到主机的连接,在端口xxxx连接失败 错误,本质原因是: 1、你没有teln…

tensorflow深度神经网络实现鸢尾花分类

tensorflow深度神经网络实现鸢尾花分类 本文目录tensorflow深度神经网络实现鸢尾花分类获取数据集相关库的导入数据展示和划分对标签值进行热编码模型搭建使用Sequential模型搭建模型模型训练对训练好的模型进行评估使用model模型搭建模型对训练好的模型进行评估损失函数优化方…

使用golang连接kafka

1 下载,配置,启动 kafka 下载链接 配置修改 在config目录下的server文件和zookeeper文件,其中分别修改kafka的日志保存路径和zookeeper的数据保存路径。 启动kafka 先启动kafka自带的zookeeper,在kafka的根目录下打开终端&a…

百模大战,谁是下一个ChatGPT?

“不敢下手,现在中国还没跑出来一家绝对有优势的大模型,上层应用没法投,担心押错宝。”投资人Jucy(化名)向光锥智能表示,AI项目看得多、投的少是这段时间的VC常态。 ChatGPT点燃AI大爆炸2个月中&#xff0…

为什么工控行业生意越来越难做了?

前段时间跟几个做工业品销售的朋友聚了一下,大家都说去年一年挺难的,有些甚至想把小店关了。为什么现在工业品领域越来越难做了呢?今天也想给大家说一说我的一些看法。 以前的工控生意相对现在来说较为有限和封闭,技术上也没有现今…

Android 大图检测插件的落地

作者:layz4android 在实际的项目开发中,引入图片的方式基本可以分为两种:本地图片和云端图片,对于云端图片来说,可以动态地配置图片的大小,如果服务端的伙伴下发的图片很大导致程序异常,那么可以…

前端视角-https总结

1.http存在的问题 1.1可能被窃听 HTTP 本身不具备加密的功能,HTTP 报文使用明文方式发送互联网是由联通世界各个地方的网络设施组成,所有发送和接收经过某些设备的数据都可能被截获或窥视。(例如TCP/IP抓包工具:Wireshark),即使经过加密处理,也会被窥视是通信内容,只是可能很…