微服务 Nacos服务注册与发现

一、Nacos 功能介绍

在微服务架构下,一个业务服务会被拆分成多个微服务,各个服务之间相互通信完成整体的功能。另外,为了避免单点故障,微服务都会采取集群方式的高可用部署,集群规模越大,性能也会越高,如图5-1所示
在这里插入图片描述
服务消费者要去调用多个服务提供者组成的集群。首先,服务消费者需要在本地配置文件中维护服务提供者集群的每个节点的请求地址。其次,服务提供者集群中如果某个节点下线或者宕机,服务消费者的本地配置中需要同步删除这个节点的请求地址,防止请求发送到已宕机的节点上造成请求失败。为了解决这类的问题,就需要引入服务注册中心,它主要有以下功能:

  • 服务地址的管理
  • 服务注册。
  • 服务动态感知

    能够实现这类功能的组件很多,比如ZooKeeper、Eureka、Consul、Etcd、Nacos等ZooKeeper在第4章中介绍过,在这一章中主要介绍Alibaba的Nacos。

Nacos致力于解决微服务中的统一配置、服务注册与发现等问题。它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理

  • 服务发现和服务健康监测
    Nacos支持基于DNS和基于RPC的服务发现。服务提供者使用原生SDK、OpenAPI或一个独立的AgentTODO注册Service后,服务消费者可以使用DNS或HTTP&API查找和发现服务。
    Nacos提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos支持传输层(PING或TCP)和应用层(如HTTP、MySQL、用户自定义)的健康检查。对于复杂的云环境和网络拓扑环境中(如VPC、边缘网络等)服务的健康检查,Nacos提供了agent上报和服务端主动检测两种健康检查模式。Nacos还提供了统一的健康检查仪表盘,帮助用户根据健康状态管理服务的可用性及流量。
  • 动态配置服务
    业务服务一般都会维护一个本地配置文件,然后把一些常量配置到这个文件中,这种方式在某些场景中会存在问题,比如配置需要变更时要重新部署应用。而动态配置服务可以以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置,可以使配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
    另外,Nacos提供了一个简洁易用的UI(控制台样例Demo)帮助用户管理所有服务和应用的配置。Nacos还提供了包括配置版本跟踪、金丝雀发布、一键回滚配置及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助用户更安全地在生产环境中管理配置变更,降低配置变更带来的风险。
  • 动态DNS服务
    动态DNS服务支持权重路由,让开发者更容易地实现中间层负载均衡、更灵活的路由策略、流量控制,以及数据中心内网的简单DNS解析服务。
  • 服务及其元数据管理
    Nacos可以使开发者从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA及最重要的metrics统计数据。
    本书主要围绕Nacos中注册中心的特性及动态配置服务的特性进行展开讲解。

二、 Nacos的基本使用

2.1Nacos的安装

在这里插入图片描述

2.2Nacos服务注册发现相关API说明

Nacos提供了SDK及OpenAPI的方式来完成服务注册与发现等操作,由于服务端只提供了REST接口,所以SDK本质上是对于HTTP请求的封装。下面简单列一下和服务注册相关的核心接口。2Nacos服务注册发现相关API说明
Nacos提供了SDK及OpenAPI的方式来完成服务注册与发现等操作,由于服务端只提供了REST接口,所以SDK本质上是对于HTTP请求的封装。下面简单列一下和服务注册相关的核心接口。
在这里插入图片描述
在这里插入图片描述
提供的接口有

  • 注册实例
  • 获取全部实例
  • 监听服务

2.3 Nacos与springboot 的集成注册发现

在这里插入图片描述

2.4Nacos的高可用部署

在分布式架构中,任何中间件或者应用都不允许单点存在,所以开源组件一般都会自己支持高可用集群解决方案,如图5-2所示,Nacos提供了类似于ZooKeeper的集群架构,包含一个Leader节点和多个Follower节点。和ZooKeeper不同的是,它的数据一致性算法采用的是Raft,同样采用了该算法的中间件有Redis Sentinel的Leader选举、Etcd等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

为什么需要分库分表,如何实现?

本文我们主要讲解“为什么需要分库分表,如何实现”。 在前文中讲到了读写分离,读写分离优化了互联网读多写少场景下的性能问题,考虑一个业务场景,如果读库的数据规模非常大,除了增加多个从库之外,还有其他…

WaitGroup并发控制原理及底层源码实现

WaitGroup并发控制原理及底层源码实现 1.1实现原理 1.2底层源码 type WaitGroup struct {noCopy noCopy// 64-bit value: high 32 bits are counter, low 32 bits are waiter count.// 64-bit atomic operations require 64-bit alignment, but 32-bit// compilers only guaran…

态势感知是什么?在网络安全中有什么作用

态势感知是一种基于环境的、动态的、全面的洞察安全风险的能力。它以安全大数据为基础,从全局的角度,提高对安全威胁的发现识别、理解分析和处理反应能力。目的在于在大规模网络环境下,对能够引起网络态势变化的安全要素进行获取、理解、显示…

L1-041:寻找250

题目描述 对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。 输出格式: 在一行中…

程序员视角体验快速搭建智能客服中心

本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 目录 前言基本概念工作原理浅试体验体验收获最后 前言 Amazon Connect是亚马逊云科技…

2 - Electron 核心概念

Electron 核心概念 主进程 通过Node.js、Electron提供的API与系统底层打交道启动项目时运行的 main.js 脚本就是我们说的主进程。在主进程运行的脚本可以以创建 Web 页面的形式展示 GUI。主进程只有一个 渲染进程 每个 Electron 的页面都在运行着自己的进程,这样…

检查字符串是否以指定的字符串结尾str.endswith()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 检查字符串是否以指定的字符串结尾 str.endswith() [太阳]选择题 请问以下代码输出的结果是? s "I love China!" print("【执行】print(s.endswith(!))") p…

Redis设计与实现之双端链表

目录 一、Redis为什么选择双端链表作为底层数据结构? 二、双端链表 1、双端链表的应用 实现Redis的列表类型 Note: Redis列表使用两种数据结构作为底层实现: Redis自身功能的构建 2、双端链表的实现 ​编辑3、迭代器 三、双端链表在Redis中的应用…

亚信科技AntDB数据库——深入了解AntDB-M元数据锁的实现(二)

5.5 防止低优先级锁饥饿 AntDB-M按照优先级将锁又分了两类,用于解决低优先级锁饥饿问题。 ●独占型(hog): X, SNRW, SNW; 具有较强的不兼容性,优先级高,容易霸占锁,造成其他低优先级锁一直处于等待状态。 ●暗弱型(piglet): SW; …

加速数据采集:用OkHttp和Kotlin构建Amazon图片爬虫

引言 曾想过轻松获取亚马逊上的商品图片用于项目或研究吗?是否曾面对网络速度慢或被网站反爬虫机制拦截而无法完成数据采集任务?如果是,那么本文将为您介绍如何用OkHttp和Kotlin构建一个高效的Amazon图片爬虫解决方案。 背景介绍 亚马逊&a…

【MySQL】MySQL库的增删查改

文章目录 1.库的操作1.1创建数据库1.2创建数据库案例 2.字符集和校验规则2.1查看系统默认字符集以及校验规则2.2查看数据库支持的字符集2.3查看数据库支持的字符集校验规则2.4校验规则对数据库的影响 3.操纵数据库3.1查看数据库3.2显示创建语句3.3修改数据库3.4数据库删除3.5备…

KUKA机器人如何在程序中编辑等待时间?

KUKA机器人如何在程序中编辑等待时间? 如下图所示,如何实现在P1点和P2点之间等待设定的时间? 如下图所示,可以直接输入wait sec 2(等待2秒), 如下图所示,再次选中该程序后&#…

python学习1

大家好,这里是七七,今天开始又新开一个专栏,Python学习。这次思考了些许,准备用例子来学习,而不是只通过一大堆道理和书本来学习了。啊对,这次是从0开始学习,因此大佬不用看本文了,小…

linux sed批量修改替换文件中的内容/sed特殊字符

sed系列文章 linux常用命令(9):sed命令(编辑/替换/删除文本)linux sed命令删除一行/多行_sed删除第一行/linux删除文件某一行linux sed批量修改替换文件中的内容/sed特殊字符 文章目录 sed系列文章一、sed替换文本语法1.1、基础语法1.2、高阶语法 二、实战/实例2.1…

k8s常用命令及示例(三):apply 、edit、delete

k8s常用命令及示例(三):apply 、edit、delete 1. kubectl apply -f 命令:从yaml文件中创建资源对象。 -f 参数为强制执行。kubectl apply和kubectl create的区别如下:kubectl create 和 kubectl apply 是 Kubernetes 中两个常用的命令&…

Springboot管理系统数据权限过滤(二)——SQL拦截器

上一节Springboot管理系统数据权限过滤——ruoyi实现方案对数据权限实现方案有了认识,本文将进一步优化权限过滤方案,实现对业务代码零入侵。 回顾上一章中权限方案: 主要是通过注解拦截,拼接好权限脚本后,放到对象变…

c题目17:写一个swap函数,可以交换2个整数变量的值。(分别用普通方式和指针方式实现,对比结果)

每日小语 我坐着,观望世界上所有的忧患,所有的压迫和耻辱看着,听着,一声不响。——惠特曼 自己思考 最近这段时间新的感悟似乎也没有,但我发现我和别人的思想越来越不同,只能跟极少数人产生共鸣&#xff0…

DevOps 和人工智能 – 天作之合

如今,人工智能和机器学习无处不在,所以它们开始在 DevOps 领域崭露头角也毫不令人意外。人工智能和机器学习正在通过自动化任务改变 DevOps,并使各企业的软件开发生命周期更高效、更深刻和更安全。我们在 DevOps 趋势中简要讨论过这一问题&am…

使用shell脚本给日志文件瘦身

一、前言 后台系统运行久了,日志文件的体积日渐增多,除了使用常用的日志框架如logback对日志进行按天打印、按大小分割等方式外,还可以使用shell命令来对大日志进行瘦身。 本篇使用sed指令来对文件进行操作,具体操作如下&#xf…

实现进程间的通信

本例程是开发一款能实现进程通信的DLL。本例程以Visual Studio 2015为例。在Visual Studio 2013,Visual Studio 2017都是可以。 第一步:在Visual Studio 2015中,创建DLL工程。如何创建DL,在这里就不作具体说明了。百度都有许多创建…