Anti-Entropy(反熵)

Consul使用先进的方法来维护服务和健康信息。 此页面详细说明了服务和检查是如何注册的,目录的填充是如何填充的,以及健康状况信息在更改时是如何更新的。

解释下两个词的意思:

熵:混乱

反熵:有序

»Components(组件)

首先要了解服务和健康检查中涉及的移动部分:代理和目录。 这些在下面概念性地描述,以使反熵更容易理解。

»Agent(代理)

每个Consul代理都维护自己的服务和检查注册以及健康信息。 代理负责执行自己的运行状况检查并更新其本地状态。

代理上下文中的服务和检查具有丰富的可用配置选项。 这是因为代理负责通过使用运行状况检查生成有关其服务及其健康状况的信息。

»Catalog(目录)

Consul的服务发现由服务目录支持。 该目录是通过汇总代理提交的信息而形成的。 目录维护群集的高级视图,包括可用的服务,运行这些服务的节点,运行状况信息等。 该目录用于通过Consul提供的各种接口(包括DNS和HTTP)公开此信息。

与代理相比,目录上下文中的服务和检查具有更有限的字段集。 这是因为目录仅负责记录和返回有关服务,节点和运行状况的信息。

目录仅由服务器节点维护。 这是因为通过Raft日志复制目录,以提供集群的统一且一致的视图。

»Anti-Entropy(反熵)

熵是系统变得越来越混乱的趋势。 Consul的反熵机制旨在抵消这种趋势,即使通过其组件的故障也能保持集群的状态。

如上所述,Consul在全局服务目录和代理的本地状态之间有明确的区分。反熵机制协调了这两个世界观:反熵是本地代理状态和目录的同步。例如,当用户注册新服务或与代理进行核对时,代理会依次通知目录此新检查存在。同样,当从代理中删除检查时,它也会从目录中删除。

反熵还用于更新可用性信息。当代理运行其运行状况检查时,它们的状态可能会发生变化,在这种情况下,它们的新状态将同步到目录。使用此信息,目录可以根据其可用性智能地响应有关其节点和服务的查询。

在此同步期间,还会检查目录的正确性。如果代理程序不知道的目录中存在任何服务或检查,则会自动删除它们以使目录反映该代理程序的正确服务集和运行状况信息。Consul将代理人的状态视为权威;如果代理程序和目录视图之间存在任何差异,则将始终使用代理程序本地视图。

»Periodic Synchronization(定期同步)

除了在代理发生更改时运行,反熵也是一个长时间运行的进程,它会定期唤醒以同步服务并检查目录的状态。 这可确保目录与代理的真实状态紧密匹配。 即使在完全数据丢失的情况下,这也允许Consul重新填充服务目录。

为了避免饱和,周期性反熵运行之间的时间量将根据集群大小而变化。 下表定义了集群大小和同步间隔之间的关系:

Cluster Size Periodic Sync Interval
1 - 128 1 minute
129 - 256 2 minutes
257 - 512 3 minutes
513 - 1024 4 minutes
... ...

以上间隔是近似值。 每个Consul代理将在间隔窗口内选择随机交错的开始时间,以避免雷鸣般的群体。

»Best-effort sync(尽力同步)

在许多情况下,反熵可能会失败,包括代理配置错误或其操作环境,I / O问题(完整磁盘,文件系统权限等),网络问题(代理无法与服务器通信)等。 因此,代理尝试以尽力而为的方式进行同步。

如果在反熵运行期间遇到错误,则会记录错误并且代理继续运行。 定期运行反熵机制以自动从这些类型的瞬态故障中恢复。

»Enable Tag Override(启用标记覆盖)

可以部分修改服务注册的同步,以允许外部代理更改服务的标记。 这在外部监控服务需要成为标签信息真实来源的情况下非常有用。 例如,Redis数据库及其监控服务Redis Sentinel具有这种关系。 Redis实例负责其大部分配置,但Sentinels确定Redis实例是主要实例还是次要实例。 使用Consul服务配置项enable_tag_override,您可以指示运行Redis数据库的Consul代理在反熵同步期间不更新标记。 有关更多信息,请参阅服务页面

Consul Anti-Entropy相关推荐

  1. Ocelot + Consul实践

    关于Consul(https://www.consul.io)是一个分布式,高可用,支持多数据中心的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla ...

  2. 服务注册发现consul之四: 分布式锁之四:基于Consul的KV存储和分布式信号量实现分布式锁...

    一.基于key/value实现 我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问.这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如: ...

  3. python损失函数实现_pytorch 实现cross entropy损失函数计算方式

    均方损失函数: 这里 loss, x, y 的维度是一样的,可以是向量或者矩阵,i 是下标. 很多的 loss 函数都有 size_average 和 reduce 两个布尔类型的参数.因为一般损失函 ...

  4. consul服务下线通知_Consul微服务的配置中心体验篇-阿里云开发者社区

    Spring Cloud Consul 项目是针对Consul的服务治理实现.Consul是一个分布式高可用的系统,具有分布式.高可用.高扩展性 Consul Consul 是 HashiCorp 公 ...

  5. SpringCloud + Consul服务注册中心 + gateway网关

    1  启动Consul 2  创建springcloud-consul项目及三个子模块 2.1 数据模块consul-producer 2.2 数据消费模块consul-consumer 2.3 ga ...

  6. antirecall怎么打开_QQ/微信防撤回工具 — Anti recall

    本文最后更新于2019-02-17 22:43:31,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜. 每个人都有属于自己的朋友圈子而通讯社交类软件就是促进沟通交流的纽带,近几年通讯软件 ...

  7. consul安装配置使用

    2019独角兽企业重金招聘Python工程师标准>>> 环境 centos:7.3 docker:1.12.6 kernel:3.10.0-514.6.1.el7.x86_64 co ...

  8. DOCKER OVERLAY NETWORK consul 注册

    下载 consul 二进制包并启动 wget https://releases.hashicorp.com/consul/0.9.2/consul_0.9.2_linux_amd64.zip unzi ...

  9. 平均符号熵的计算公式_交叉熵(Cross Entropy)从原理到代码解读

    交叉熵(Cross Entropy)是Shannon(香浓)信息论中的一个概念,在深度学习领域中解决分类问题时常用它作为损失函数. 原理部分:要想搞懂交叉熵需要先清楚一些概念,顺序如下:==1.自信息 ...

  10. 【阿圆实验】Consul HA 高可用方案

     一.建立Consul Cluster环境 利用Consul提供的服务实现服务的注册与发现,需要建立Consul Cluster.在Consul方案中,每个提供服务的节点上都要部署和运行Consul的 ...

最新文章

  1. archlinux mariadb躺坑
  2. 我也没想到,Java开发 API接口可以不用写 Controller了
  3. 对geobeansEvent事件回调函数的改进
  4. java自学难点_java学习重难点
  5. Android入门教程免费获取
  6. python库(包)查找网站
  7. cv::mat 颜色空间_网站设计基础:负空间
  8. 教程:正确的SLF4J日志记录用法以及如何检查它
  9. [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]
  10. 计算机应用基础知道,谁知道计算机应用基础练习题的答案?
  11. 2原理图_pcb板设计电路原理图步骤和方法
  12. arping指令linux,arping命令详解
  13. None of the configured nodes are available
  14. 对称网络的电路分析方法
  15. Android之音频和视频的提取
  16. 设计模式之旅(三)--观察者模式
  17. 我的世界服务器怎么做无限的弓,我的世界制作无限弓流程介绍
  18. 使用vue-admin-template搭建简单增删改查导入导出项目及CentOs服务器部署
  19. HTML期末学生大作业-在线电影网站html+css+javascript
  20. 发送垃圾邮件的僵尸网络——药物(多)、赌博、股票债券等广告+钓鱼邮件、恶意下载链接、勒索软件+推广加密货币、垃圾股票、色情网站(带宏的office文件、pdf等附件)...

热门文章

  1. ITIL4知识系列之IT服务连续性管理
  2. 创维集团总裁杨东文:智能家居各自为战缺乏统一标准
  3. 对技术的本质,你是怎么理解的
  4. 山东大学2018级操作系统实验二
  5. 这8大信用卡秘密!银行绝不会说
  6. gluLookAt、glTranslatef、glRotatef
  7. 数字逻辑——逻辑运算和算术运算
  8. 608E出入栈卡特兰数不理解
  9. 英语知识点-填空-考试酷
  10. 更改repo的python版本