Nacos—简述、注册中心、配置中心

news2024/10/7 5:23:50

目录

什么是Nacos?

什么是注册中心?

什么是配置中心?

什么是服务管理平台?

Nacos的关键特性包括(有点)有哪些?

作用(为什么要使用)?

注册中心演变过程

①、分布式架构

②、数据库注册表

③、引入nginx

④、提供注册中心(其实就是nacos服务器)

⑤、引入心跳机制

Nacos的核心功能有哪些?


什么是Nacos?

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

简述:集 注册中心+配置中心+服务管理 平台

参考:Nacos 注册中心的设计原理 · 语雀

什么是注册中心?

把所有的服务都统一的放在 一个中心,后续调用的时候只需要用一个服务名调用远程的服务,而不是用ip地址去调用

在一个微服务项目中,不同的服务之间做着不同的事情,服务和服务之间会涉及到调用,那如何去管理,这里可以用到注册中心,当服务启动(Service)启动时,将自己的一个实例,注册到注册中心上,注册中心可以做服务发现,服务检测、心跳机制

什么是配置中心?

帮助管理每一个服务的配置

  • 原来:每一个服务都有自己的数据库/redis/MQ等配置,就会有很多公共配置
  • 现在:把公共配置放在中,让中心去管理,而不用每个服务单独去管理

正常一个微服务项目都会有自己的一个配置文件,在这里可以配置服务的端口号、数据库地址等。当程序启动时会加载读取配置文件中的信息。当有多个服务时,我们可以将配置文件放到远端,将项目中每个服务的配置放到一起,统一管理,动态配置。

什么是服务管理平台?

可视化界面动态管理

 

Nacos的关键特性包括(有点)有哪些?

  • 服务发现和服务健康监测(注册中心的配置 服务管理平台可以实时健康检测)
  • 动态配置服务(动态给每个服务进行配置)
  • 动态 DNS 服务
  • 服务及其元数据管理 (元数据:注册服务时的ip、远程地址等都会进行管理)

作用(为什么要使用)?

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


注册中心演变过程

①、分布式架构

 

问题:远程服务调用必须维护远程服务的ip地址和端口,当远程的服务器一旦发生扩容或是迁移,这个时候就需要去修改url中配置的远程服务地址。一改代码就需要重新部署上线

服务器迁移或扩容,就需要手动修改配置,重新发布上线

解决方案:数据库存储远程服务信息。添加数据库注册表


②、数据库注册表

将远程服务地址存储在数据库注册表中,每一个远程服务地址都设置一个对应的服务名称。比方说:

会员服务想要调用订单服务,通过订单服务的名称order-server我们就可以查到远程服务地址

使用注册表的好处:让远程调用变得简单

存在的问题:

  • 高并发不可能每一次都去查数据库。利用缓存
  • 减少服务器的压力,实现负载均衡困难

补充:

负载均衡的优点:减少服务器的压力,将原本一台服务器所要承受的访问量分给多台,并提高项目的可用性,当一台服务器挂掉的时候不会导致项目瘫痪。


③、引入nginx

引入nginx,把所有的服务列表都配置在nginx中

存在的问题:

一旦某个服务挂掉,肯定不希望nginx下次负载均衡的时候不要放到它,但是nginx不能实时的监控以及健康检查

解决方案:

一方面:可以使用第三方服务,可以解决,但是非常麻烦

另一方面:微服务中如果有成百上千个服务都需要配置在nginx,这对于运维来说是非常麻烦的,而且人工具有出错性

所以我们可以使用注册中心(nacos服务器)来帮助解决


④、提供注册中心(其实就是nacos服务器)

注册中心其中有一个注册表,用来存储服务的信息(名称、远程ip、端口、状态)

还提供了一系列对外访问的rest、http等接口对外的访问,通过这些接口我们就可以动态的注册接口,以及获取到这些服务,动态的注册服务

过程:注册——>发现——>调用——>解析地址

在服务启动的时候就会调用注册接口,在注册表中添加一条这个服务的注册信息

服务之间调用前,每次服务都会注册中获取订单服务列表,调用服务获取接口(这些接口都是基于http、rest),获取到了远程服务的地址

整个过程都不需要人干,阿里巴巴提供了服务注册与发现

问题:

  1. 每次都去注册中心拉取订单服务列表吗?注册中心宕机了怎么办?
  2. 如果拉去的订单服务对应的机器宕机了怎么办?

解决方案:引入心跳机制


⑤、引入心跳机制

  1. 服务会在本地维护一个定时任务,每5s通过心跳接口发送一个心跳到注册中心,注册中心如果超过5s没有收到这个心跳,注册中心就会把这个服务视为挂掉了,把status改为down;超过30s,服务从注册表中剔除。始终维护最新的服务列表。任何一个微服务都可以称为nacos的服务端,任何一个nacos客户端都会往nacos注册中心发送一个心跳,证明我还活着
  2. 如果服务要停止掉,调用注销接口,把服务从注册表中删除
  3. 服务的Client也有一个定时任务,调用服务获取接口定时拉取订单服务列表,如果每次都拉占用系统资源,所以被缓存到客户端

Nacos的核心功能有哪些?

  • 服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。
  • 服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。
  • 服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。 leader raft
    服务发现:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存
  • 服务健康检查:Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)

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

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

相关文章

业绩稳健增长,公牛集团新老业务如何实现齐头并进?

“插座一哥”公牛集团,正在经历其迈向更高质量发展的自我优化。 4月27日晚,公牛集团(SH:603195)发布了《2022年年度报告》及《2023年第一季度报告》。去年,宏观市场动荡,但公牛集团不仅保持了业绩的稳健增…

ChatGPT本地化部署教程-批量调用ChatGpt共享API key

ChatGPT本地化部署教程 chatGPT是一个基于自然语言处理的深度学习模型,能够生成自然流畅的文本,并且可以应用到多个场景中。与云服务相比,本地部署还可以提高模型的响应速度,进一步增加模型的便捷性和可用性。以下是基于 Docker …

uboot start.S中关于第一阶段的代码分析

u-boot.lds中找到start.S入口 (1)C语言规定整个项目的入口就是main函数。 (2)在uboot中因为有汇编阶段参与,因此不能直接找main.c。整个程序的入口取决于链接脚本中ENTRY声明的地方。ENTRY(_start)因此定义_start符号 的文件就是整个程序的起始文件,即st…

SpringBoot定义优雅全局统一Restful API 响应框架

假如现在有一个Java项目,老板让你做项目组长,定义项目基础框架,系统技术架构选型, 你应该如何设计一个规范的统一的Restful API 响应框架呢 思考 目前项目开发,都是基于前后端分离模式开发的,基于后端模板引擎那一套,可能已经不适用一些项目开发流程,和当下开发模式了,尤其在…

(五)Spring源码阅读:invokeBeanFactoryPostProcessors方法

一、概述 invokeBeanFactoryPostProcessors的执行顺序大致如下,先执行子类BeanDefinitionRegistryPostProcessor再执行父类BeanFactoryPostProcessor。而对于同一个类的执行顺序是先执行外部的集合再到子集,之后再到父集。更小维度执行的顺序按照order注…

WebSocket的那些事(1-概念篇)

目录 一、什么是Websocket二、WebSocket部分header介绍三、HTTP VS WebSocket四、什么时候使用WebSockets五、关于SockJS和STOMP 一、什么是Websocket 根据 RFC 6455 标准,Websocket协议提供了一种标准化的方式在客户端和服务端之间通过TCP连接建立全双工、双向通信…

【DarkLabel】使用教程(标注MOT数据集)

DarkLabel 使用教程 功能部分 Open video 第 2 处的内容为数据集类型。例如:VOC、COCO、MOT、YOLO等。 第 3 处的内容为标签名称。 可在 darklabel.yml 中修改 classes_set。例如:classes_set: "mot_classes" 第 4 处的内容为两种跟踪方法…

Maven项目的配置

Maven是什么?它的作用是什么? Maven是一种开源的构建工具,它可以自动化构建、测试、部署和管理Java项目。它提供了一个中心化的构建过程,包括依赖管理、项目结构管理、插件管理等,使得开发人员更方便地维护和协作应用…

【Python】操作MySQL

一、Python 操作 Mysql的方式 Python 操作 Mysql 主要包含下面 3 种方式: Python-MySql Python-MySql 由 C 语法打造,接口精炼,性能最棒;但是由于环境依赖多,安装复杂,已停止更新,仅支持 Python…

记一次我的漏洞挖掘实战——某公司的SQL注入漏洞

目录 一、前言 二、挖掘过程 1.谷歌语法随机搜索 2.进入网站 3.注入点检测 3.SQLMAP爆破 (1)爆库 (2)爆表 (3)爆字段 三、总结 一、前言 我是在漏洞盒子上提交的漏洞,上面有一个项目叫…

【远程工具】- Tabby 下载、安装、使用、配置【ssh/Serial】-免安装、解压即用

目录 一、Tabby 概述 二、Tabby 下载、安装 三、Tabby 的使用  👉3.1 使用SSH协议连接Linux开发主机  👉3.2 使用Serial(串口)协议连接开发板 一、Tabby 概述 在远程终端工具中,secureCrt 和 XShell 是两款比较有名的远程工具,但…

矩阵求逆方法

1.待定系数法 矩阵A 1, 2 -1,-3 假设所求的逆矩阵为 a,b c,d 则 从而可以得出方程组 a 2c 1 b 2d 0 -a - 3c 0 -b - 3d 1 解得 a3; b2; c -1; d -1 2.伴随矩阵求逆矩阵 伴随矩阵是矩阵元素所对应的代数余子式,所构成的矩阵,转置后得到的新矩阵…

图的存储--邻接矩阵/边集数组/邻接表/链式邻接表/链式前向星

邻接矩阵 使用二维数组w[u][v]存储点u到点v的边的权值。一般应用在点数不多的稠密图 时间复杂度&#xff1a;O(n2) 空间复杂度&#xff1a;O(n2) int w[N][N]; // edge int vis[N]; // visitedvoid dfs(int u){vis[u] true;for(int v 1; v < n; v)if(w[u][v]){prin…

Java 基础进阶篇(六)—— 面向对象三大特征之三:多态

文章目录 一、多态的概述二、多态中成员访问特点 ★三、多态的优势与劣势四、多态下的类型转换4.2 自动类型转换&#xff08;从子到父&#xff09;4.2 强制类型转换&#xff08;从父到子&#xff09;4.3 instanceof 关键字 一、多态的概述 多态&#xff1a;是指执行同一个行为…

自动驾驶——最优控制算法里卡提方程推导【连续系统】

1. Why use the Riccati equation&#xff1f; Q、R就是需要设计的半正定矩阵和正定矩阵。考虑根据实车的情况去标定此参数&#xff0c;从理论和工程层面去理解&#xff0c;如果增大Q、减小R&#xff0c;则此时控制系统响应速度比较快速&#xff08;比较剧烈&#xff09;&…

[SpringBoot]什么是服务器前后端的一个流程图bmi练习案例

前点: 服务器&#xff1a; 服务器就是一台高性能的电脑, 在电脑上安装了提供XXX服务的软件, 这台电脑就可以称为XXX服务器 - 举例: - 数据库服务器: 在电脑上安装了提供数据增删改查服务的软件(DBMS) - 邮件服务器: 在电脑上安装了提供邮件收发服务的软件 - FTP服务器: …

普通的2D Average pooling是怎么进行backward的呢?

二维平均池层计算损失相对于其输入张量的梯度&#xff0c;方法是将损失相对于输出张量的梯度均分在输入子区域&#xff0c;这些子区域在前向传播中被用来计算平均值。 由于平均集合计算的是每个输入子区域的平均值&#xff0c;所以子区域中的每个元素对平均值的贡献是相同的。…

Java Servlet_HTTP

今日内容 零、 复习昨日 一、Servlet 二、HTTP 三、HttpServlet 零、 复习昨日 见晨考 一、Servlet 1.1 介绍 javaweb开发,就是需要服务器接收前端发送的请求,以及请求中的数据,经过处理(jdbc操作),然后向浏览器做出响应. 我们要想在服务器中写java代码来接收请求,做出响应,我…

SignOff Criteria——AOCV(Advanced OCV) introduction

文章目录 1. O v e r v i e w Overview Overview2. A O C V P r i n c i p l e I n t r o d u c t i o n AOCV\ Principle\ Introduction AOCV Principle Introduction2.1 G B A − A O C V GBA-AOCV GBA−AOCV2.1.1 A b o u t L o g i c a l D e p t h About\ Logical\ De…

第六章 Iptables与Firewalld防火墙

第六章 Iptables与Firewalld防火墙 一、Iptables 1、策略与规则链 &#xff08;1&#xff09;、防火墙策略规则的设置 一种是“通”即放行&#xff0c;另一种是“堵”即阻止。 当防火墙的默认策略为拒绝时&#xff08;堵&#xff09;&#xff0c;就要设置允许规则通&#x…