一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)

zookeeper确保cp

当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。但是zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务能够最终恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的。

eureka 确保ap

在默认配置中,Eureka Server在默认90s没有得到客户端的心跳,则注销该实例,但是往往因为微服务跨进程调用,网络通信往往会面临着各种问题,比如微服务状态正常,但是因为网络分区故障时,Eureka Server注销服务实例则会让大部分微服务不可用,这很危险,因为服务明明没有问题。

为了解决这个问题,Eureka 有自我保护机制,通过在Eureka Server配置如下参数,可启动保护机制

eureka.server.enable-self-preservation=true

它的原理是,当Eureka Server节点在短时间内丢失过多的客户端时(可能发送了网络故障),那么这个节点将进入自我保护模式,不再注销任何微服务,当网络故障回复后,该节点会自动退出自我保护模式。

自我保护模式的架构哲学是宁可放过一个,决不可错杀一千

最新文章

  1. 代码覆盖工具(gcov、lcov)的使用
  2. 攒机I7
  3. Visual Studio 2012优化
  4. hdu How to Type
  5. canvas图片的跨域问题
  6. 出现并解决Navicat 报错:1130-host ... is not allowed to connect to this MySql server,MySQL
  7. CICD - Teamcity 配置之二:SSIS Package 自动部署
  8. isPrototypeOf、instanceof、hasOwnProperty函数介绍
  9. Go语言学习之14 商品秒杀架构设计与开发
  10. Spring @RequestParam、@RequestBody和@ModelAttribute区别
  11. 学习Angularjs向数据库添加数据
  12. oracle概要文件profile详解
  13. Linux:curl
  14. Python处理海量数据的实战研究
  15. vim:关于映射和跳出括号
  16. Redis 位操作
  17. 5、opencv中的绘图函数
  18. [Xcode 实际操作]六、媒体与动画-(6)使用UIBlurEffect给图片添加模糊效果
  19. Centos6.9 搭建rsync服务端与客户端 案例:全网备份项目
  20. Struts2的各种标签库

热门文章

  1. jsp页面抽取
  2. 重新整理 .net core 实践篇—————文件系统[二十二]
  3. InfluxDB总结
  4. ffmpeg实战-音视频基础概念
  5. 【模板】 RMQ求区间最值
  6. Visual Studio 2010下ASPX页面的TreeView控件循环遍历
  7. SpringBoot实战:10分钟快速搞定环境
  8. [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]
  9. 解决git同步每次都需要输入用户名、密码
  10. Spring中这么重要的AnnotationAwareAspectJAutoProxyCreator类是干嘛的?