nacos的cp和ap原则,服务健康检查
CP和AP
CAP原则:cap理论是针对分布式数据库而言的,它是指在一个分布式系统中,一致性(Consistency,C)、可用性(Availability,A)、分区容错性(Partition Tolerance, P)三者不可兼得。
nacos支持AP(可用性 | 分区容错性) 和 CP(一致性 | 分区容错性)两种 默认是AP
如果注册Nacos的client节点注册时ephemeral=true,那么Nacos集群对这个client节点的效果就是AP,采用distro协议实现;而注册Nacos的client节点注册时ephemeral=false,那么Nacos集群对这个节点的效果就是CP的,采用raft协议实现。根据client注册时的属性,AP,CP同时混合存在,只是对不同的client节点效果不同。Nacos可以很好的解决不同场景的业务需求。
#false为永久实例,true表示临时实例开启,注册为临时实例,默认是true
spring.cloud.nacos.discovery.ephemeral=true
服务的健康检查
分为两种模式:1 agent上报模式,2 服务端主动检测
1、 agent上报模式
客户端(注册在nacos上的其它微服务实例)健康检查。
客户端通过心跳上报方式告知服务端(nacos注册中心)健康状态;
默认心跳间隔5秒;
nacos会在超过15秒未收到心跳后将实例设置为不健康状态;
超过30秒将实例删除;
2 、服务端主动检测
服务端健康检查。
nacos主动探知客户端健康状态,默认间隔为20秒;
健康检查失败后实例会被标记为不健康,不会被立即删除。
Nacos 在 1.0.0版本 instance级别增加了一个ephemeral字段,该字段表示注册的实例是否是临时实例还是持久化实例。如果是临时实例,则不会在 Nacos 服务端持久化存储,需要通过上报心跳的方式进行包活,如果一段时间内没有上报心跳,则会被 Nacos 服务端摘除。在被摘除后如果又开始上报心跳,则会重新将这个实例注册。持久化实例则会被 Nacos 服务端持久化,此时即使注册实例的客户端进程不在,这个实例也不会从服务端删除,只会将健康状态设为不健康。
为什么会有两种健康检查模式呢?
对于临时实例,健康检查失败,则直接可以从列表中删除。这种特性就比较适合那些需要应对流量突增的场景,服务可以进行弹性扩容。当流量过去之后,服务停掉即可自动注销了。
对于持久化实例,健康检查失败,会被标记成不健康状态。它的好处是运维可以实时看到实例的健康状态,便于后续的警告、扩容等一些列措施。
Nacos的保护阈值
Nacos中可以针对具体的实例设置一个保护阈值,值为0-1之间的浮点类型。本质上,保护阈值是⼀个⽐例值(当前服务健康实例数/当前服务总实例数)。
⼀般情况下,服务消费者要从Nacos获取可用实例有健康/不健康状态之分。Nacos在返回实例时,只会返回健康实例。
但在高并发、大流量场景会存在⼀定的问题。比如,服务A有100个实例,98个实例都处于不健康状态,如果Nacos只返回这两个健康实例的话。流量洪峰的到来可能会直接打垮这两个服务,进一步产生雪崩效应。
保护阈值存在的意义在于当服务A健康实例数/总实例数 < 保护阈值时,说明健康的实例不多了,保护阈值会被触发(状态true)。
Nacos会把该服务所有的实例信息(健康的+不健康的)全部提供给消费者,消费者可能访问到不健康的实例,请求失败,但这样也⽐造成雪崩要好。牺牲了⼀些请求,保证了整个系统的可⽤。
这里我们看到了不健康实例的另外一个作用:防止产生雪崩。
那么,如果所有的实例都是临时实例,当雪崩场景发生时,Nacos的阈值保护机制是不是就没有足够的(包含不健康实例)实例返回了?如果有一部分实例是持久化实例,即便它们已经挂掉,状态为不健康的,但当触发阈值保护时,还是可以起到分流的作用。
nacos的cp和ap原则,服务健康检查相关推荐
- Nacos是两种模式CP与AP Nocos服务注册和配置中心
zookeeper不支持负载均衡 springBoot 中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application Nacos支持AP与CP模式的切换 C:是所有节点在同一 ...
- SpringCloud Nacos 心跳机制和服务健康检查源码解析
1 客户端心跳机制 1.1 客户端注册源码流程 https://blog.csdn.net/qq_34125999/article/details/117566523 1.2 NacosNamingS ...
- Tengine 服务健康检查
简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...
- consul 服务健康检查
文章目录 简介 check方法 Script check(Script+ Interval) 基于HTTP请求 基于tcp请求 基于grpc请求 Docker 简介 服务注册 - 服务进程在注册中心注 ...
- nacos的CP和AP模式
- mysql健康检查脚本_MySQL服务健康检查脚本
#!/bin/sh #date:2015-12-07 #filename:check_mysql.sh #作者:linuxzkq #Email:1729294227@qq.com #version:v ...
- mysql 健康检查_MySQL服务健康检查脚本
#!/bin/sh #date:2015-12-07 #filename:check_mysql.sh #作者:linuxzkq #Email:1729294227@qq.com #version:v ...
- Nacos服务健康监测
本文为joshua317原创文章,转载请注明:转载自joshua317博客 Nacos服务健康监测 - joshua317的博客 一.引言 Nacos 的关键特性指出:nacos支持服务发现和服务健康 ...
- Nacos系列【23】Nacos2.x服务发现模块之注册中心健康检查机制
有道无术,术尚可求,有术无道,止于术. 资料整理来自Nacos架构与原理电子书,下载地址:https://developer.aliyun.com/ebook/36?spm=a2c6h.2034510 ...
最新文章
- Bootstrap3.1开发的响应式个人简历模板
- asp.net错误.在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错...
- ASP.NET 配置log4net日志功能
- iOS 控制屏幕横竖屏旋转
- java 内存泄露监控,Linux下实用的JAVA内存泄露监控命令
- 程序员面试——C++工程师面试大全第一部分
- Java开发实用的面试题及参考答案
- ns3安装 + eclipse
- XCode 动态库未签名问题的解决
- WIN7系统电脑关机后自动重启解决方法
- 虫虫 5个衡量软件质量的标准(可自动化)
- 《ZLToolKit源码学习笔记》(16)网络模块之整体框架概述
- iOS非常全的三方库、插件、大牛博客
- 自定义ViewPager和RecyclerView指示器 Indicator
- 自动写故事、写字成图?5款有趣实用的AIGC工具分享
- 计算机内部信号表现形式,信号是数据在传输过程中的什么的表现形式
- 【操作系统----Linux】Linux作为服务器系统安装过程
- 如何用网络管理软件灵活管理复杂庞大的网络
- 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
- 基于JQuery Ajax实现三级联动获取SpringMVC接口的数据(详细一套)
热门文章
- 今天,Java27岁了!
- c语言如何用串口发送数据类型,串口通信 之用C语言编写串口程序
- 输入法 for android2.3,落格输入法|落格输入法安卓版 v3.2.3_手机天堂
- C语言 结构体的定义和用法
- PCB板-过孔盖油与过孔塞孔的区别
- 服务器插槽转硬盘插槽,强大磁盘接口弥补X79遗憾_技嘉 GA-X79S-UP5 WIFI_主板评测-中关村在线...
- 恒温恒湿机 控制器 日立_什么是工业防爆恒温恒湿机
- Excel图片也能一对多查找输入姓名找到所有图片
- PowerPoint 2007中轻松插入Word表格
- Charles安装及浏览器和手机的证书配置