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原则,服务健康检查相关推荐

  1. Nacos是两种模式CP与AP Nocos服务注册和配置中心

    zookeeper不支持负载均衡 springBoot 中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application Nacos支持AP与CP模式的切换 C:是所有节点在同一 ...

  2. SpringCloud Nacos 心跳机制和服务健康检查源码解析

    1 客户端心跳机制 1.1 客户端注册源码流程 https://blog.csdn.net/qq_34125999/article/details/117566523 1.2 NacosNamingS ...

  3. Tengine 服务健康检查

    简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...

  4. consul 服务健康检查

    文章目录 简介 check方法 Script check(Script+ Interval) 基于HTTP请求 基于tcp请求 基于grpc请求 Docker 简介 服务注册 - 服务进程在注册中心注 ...

  5. nacos的CP和AP模式

  6. mysql健康检查脚本_MySQL服务健康检查脚本

    #!/bin/sh #date:2015-12-07 #filename:check_mysql.sh #作者:linuxzkq #Email:1729294227@qq.com #version:v ...

  7. mysql 健康检查_MySQL服务健康检查脚本

    #!/bin/sh #date:2015-12-07 #filename:check_mysql.sh #作者:linuxzkq #Email:1729294227@qq.com #version:v ...

  8. Nacos服务健康监测

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Nacos服务健康监测 - joshua317的博客 一.引言 Nacos 的关键特性指出:nacos支持服务发现和服务健康 ...

  9. Nacos系列【23】Nacos2.x服务发现模块之注册中心健康检查机制

    有道无术,术尚可求,有术无道,止于术. 资料整理来自Nacos架构与原理电子书,下载地址:https://developer.aliyun.com/ebook/36?spm=a2c6h.2034510 ...

最新文章

  1. Bootstrap3.1开发的响应式个人简历模板
  2. asp.net错误.在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错...
  3. ASP.NET 配置log4net日志功能
  4. iOS 控制屏幕横竖屏旋转
  5. java 内存泄露监控,Linux下实用的JAVA内存泄露监控命令
  6. 程序员面试——C++工程师面试大全第一部分
  7. Java开发实用的面试题及参考答案
  8. ns3安装 + eclipse
  9. XCode 动态库未签名问题的解决
  10. WIN7系统电脑关机后自动重启解决方法
  11. 虫虫 5个衡量软件质量的标准(可自动化)
  12. 《ZLToolKit源码学习笔记》(16)网络模块之整体框架概述
  13. iOS非常全的三方库、插件、大牛博客
  14. 自定义ViewPager和RecyclerView指示器 Indicator
  15. 自动写故事、写字成图?5款有趣实用的AIGC工具分享
  16. 计算机内部信号表现形式,信号是数据在传输过程中的什么的表现形式
  17. 【操作系统----Linux】Linux作为服务器系统安装过程
  18. 如何用网络管理软件灵活管理复杂庞大的网络
  19. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结
  20. 基于JQuery Ajax实现三级联动获取SpringMVC接口的数据(详细一套)

热门文章

  1. 今天,Java27岁了!
  2. c语言如何用串口发送数据类型,串口通信 之用C语言编写串口程序
  3. 输入法 for android2.3,落格输入法|落格输入法安卓版 v3.2.3_手机天堂
  4. C语言 结构体的定义和用法
  5. PCB板-过孔盖油与过孔塞孔的区别
  6. 服务器插槽转硬盘插槽,强大磁盘接口弥补X79遗憾_技嘉 GA-X79S-UP5 WIFI_主板评测-中关村在线...
  7. 恒温恒湿机 控制器 日立_什么是工业防爆恒温恒湿机
  8. Excel图片也能一对多查找输入姓名找到所有图片
  9. PowerPoint 2007中轻松插入Word表格
  10. Charles安装及浏览器和手机的证书配置