wordpress模板仿遮天小说站,ppt制作方法,石家庄住房和城乡建设部网站,网站上的支付接口怎么做熵熵是衡量某个体系中事物混乱程度的一个指标#xff0c;是从热力学第二定律借鉴过来的。熵增原理孤立系统的熵永不自动减少#xff0c;熵在可逆过程中不变#xff0c;在不可逆过程中增加。熵增加原理是热力学第二定律的又一种表述#xff0c;它更为概括地指出了不可逆过程… 熵熵是衡量某个体系中事物混乱程度的一个指标是从热力学第二定律借鉴过来的。熵增原理孤立系统的熵永不自动减少熵在可逆过程中不变在不可逆过程中增加。熵增加原理是热力学第二定律的又一种表述它更为概括地指出了不可逆过程的进行方向同时更深刻地指出了热力学第二定律是大量分子无规则运动所具有的统计规律因此只适用于大量分子构成的系统不适用于单个分子或少量分子构成的系统。[来自百度百科]Consul为什么要反熵举个现实社会的例子国家是由一个个的人组成的小国家几万人口大国家几亿人口每个人都有自己的想法不可能这些人没有组织就能维持这个国家的运转。我国有省市县乡四级行政区划乡管理几十个村县管理十几个乡市管理十几个县省管理十几个市。如果让省直接去管理以万为单位的村李村的村长贪污了补贴款张村的马路被压坏了隔壁王村放开二胎后还是没人生孩子…肯定是管不过来的。通过这种层级的行政划分国家得到了有序的治理而不是乱哄哄一片。Consul面对的问题也是类似的它是一个分布式的服务发现系统需要做服务注册、健康检查、服务发现以及在成员之间共享这些服务信息。大点的系统可能有成千上万的服务分布在成百上千的节点服务应该注册在哪些节点数据在节点之间怎么同步节点失败了怎么办怎样保证增加节点数量不会导致性能明显下降…如果不解决好这些问题整个系统可能就会变得混乱走向失控和崩溃。理解两个组件这里首先介绍跟服务和健康检查紧密相关的两个部件Agent和Catalog可以让大家更容易理解Consul的反熵。AgentAgent存在于Consul的每一个节点中负责维护注册到其上的服务和健康检查以及执行这些健康检查更新本地服务的健康信息。CatalogCatalog存在于Server 节点聚合了各个Agent采集的信息包括服务、健康检查、相关的节点以及它们对应的状态服务发现就是基于Catalog来做的。然而Catalog中这些信息的字段要比Agent维护的少很多因为Catelog只是一个视图它没有关于服务、健康检查和节点的设置项信息。反熵机制根据前边对熵的说明Consul 的反熵就是让Consul集群更有序而其反熵机制就和上边提到的两个部件紧密相关。当服务或健康检查在Agent注册后信息就会通知到Catalog中当Agent中根据健康检查的服务状态发生变化时状态也会通知到Catalog中当服务或健康检查从Agent中消失后Catalog中也会移除相对应的信息。Agent负责注册到其上的服务及健康检查Catalog负责聚合集群各个Agent的数据用于服务发现Agent同步最新数据到Catalog各个Agent的数据不断收敛到Catalog从而实现集群的有序运作。波斯码建议大家通过调用Consul API中的Agent和Catalog接口来验证这个机制。周期同步除了当变化发生时Agent主动通知外Agent还有一个定时器执行到Catalog的完整同步操作。极端情况下如果在Catalog中移除了某个Agent的所有信息过一会这些信息也会重新同步到Catalog中。为了降低同步可能导致的并发影响针对不同的集群规模默认了不同的同步周期集群规模同步周期1 – 1281 minute129 – 2562 minutes257 – 5123 minutes513 – 10244 minutes……这个同步间隔只是一个近似值为了防止大量节点同时同步导致惊群效应实际程序中会在同步周期内引入一个随机值来错开同时请求。同步的异常处理同步的时候可能会出现各种问题比如Agent配置错误、磁盘满了、没有写入权限、网络不通等等出现这些问题时Agent会记录日志后继续运行然后等待下一次周期同步尝试。启用Tag Override如果开启这个选项则Agent同步数据到Catalog时将不会同步服务的tag数据。举个实际的例子主从部署的redis使用sentinel监控实例的状态如果主redis下线则某个从redis升级为可写的主实例。假设使用服务的tag作为主从的标识这里就不能使用服务注册时的tag而应该通过sentinel获取redis实例的主从状态然后设置到Catalog中服务发现才能获取到当前实际的redis主实例。这篇文章由Consul官方文档整理而来加入了波斯码个人的一些理解。点此查看原文。原文链接https://www.cnblogs.com/bossma/p/11354245.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com