当前位置: 首页 > news >正文

企业网站建设457216336站外推广平台有哪些

企业网站建设457216336,站外推广平台有哪些,淘宝做网站找我要发票,网上推广平台可靠吗部门内容来源:JavaGuide Gossip 协议详解 | JavaGuide Raft算法和Gossip协议的区别 首先我们的Raft是用来进行我们的主节点选举的,也就是在主从集群中通过Raft机制进行选举防止节点宕机导致大量数据丢失,我们要重新选主 同时我们的Raft是通…

部门内容来源:JavaGuide

Gossip 协议详解 | JavaGuide


Raft算法和Gossip协议的区别

首先我们的Raft是用来进行我们的主节点选举的,也就是在主从集群中通过Raft机制进行选举防止节点宕机导致大量数据丢失,我们要重新选主

同时我们的Raft是通过我们的状态机模型以及日志提交机制来保证我们的分布式下节点的一致性的

但Gossip协议是一种在分布式系统中传播信息的方式,通过节点之间的随机通信来传播状态和数据

它并不是用在节点选举的,它是用在我们的节点通信的


 背景-分散式发消息

在分布式系统中,不同的节点进行数据/信息共享是一个基本的需求。

一种比较简单粗暴的方法就是 集中式发散消息,简单来说就是一个主节点同时共享最新信息给其他所有节点,比较适合中心化系统

这种方法的缺陷也很明显,节点多的时候不光同步消息的效率低,还太依赖与中心节点,存在单点风险问题。

于是,分散式发散消息Gossip 协议 就诞生了


Gossip协议介绍

它是一种在分布式系统中传播信息的方式,通过节点之间的随机通信来传播状态和数据

Gossip 直译过来就是闲话、流言蜚语的意思。流言蜚语有什么特点呢?容易被传播且传播速度还快,你传我我传他,然后大家都知道了

Gossip 协议 也叫 Epidemic 协议(流行病协议)或者 Epidemic propagation 算法(疫情传播算法),别名很多。不过,这些名字的特点都具有 随机传播特性 (联想一下病毒传播、癌细胞扩散等生活中常见的情景),这也正是 Gossip 协议最主要的特点

Gossip 协议最早是在 ACM 上的一篇 1987 年发表的论文 《Epidemic Algorithms for Replicated Database Maintenance》中被提出的。根据论文标题,我们大概就能知道 Gossip 协议当时提出的主要应用是在分布式数据库系统中各个副本节点同步数据

正如 Gossip 协议其名一样,这是一种随机且带有传染性的方式将信息传播到整个网络中,并在一定时间内,使得系统内的所有节点数据一致

在 Gossip 协议下,没有所谓的中心节点,每个节点周期性地随机找一个节点互相同步彼此的信息,理论上来说,各个节点的状态最终会保持一致

下面我们来对 Gossip 协议的定义做一个总结:Gossip 协议是一种允许在分布式系统中共享状态的去中心化通信协议,通过这种通信协议,我们可以将信息传播给网络或集群中的所有成员


Gossip协议运用

 

NoSQL 数据库 Redis 和 Apache Cassandra、服务网格解决方案 Consul 等知名项目都用到了 Gossip 协议,学习 Gossip 协议有助于我们搞清很多技术的底层原理。

我们这里以 Redis Cluster 为例说明 Gossip 协议的实际应用。

我们经常使用的分布式缓存 Redis 的官方集群解决方案(3.0 版本引入) Redis Cluster 就是基于 Gossip 协议来实现集群中各个节点数据的最终一致性

Redis Cluster 是一个典型的分布式系统,分布式系统中的各个节点需要互相通信

既然要相互通信就要遵循一致的通信协议,Redis Cluster 中的各个节点基于 Gossip 协议 来进行通信共享信息,每个 Redis 节点都维护了一份集群的状态信息

Redis Cluster 的节点之间会相互发送多种 Gossip 消息:

  • MEET:在 Redis Cluster 中的某个 Redis 节点上执行 CLUSTER MEET ip port 命令,可以向指定的 Redis 节点发送一条 MEET 信息,用于将其添加进 Redis Cluster 成为新的 Redis 节点。
  • PING/PONG:Redis Cluster 中的节点都会定时地向其他节点发送 PING 消息,来交换各个节点状态信息,检查各个节点状态,包括在线状态、疑似下线状态 PFAIL 和已下线状态 FAIL。
  • FAIL:Redis Cluster 中的节点 A 发现 B 节点 PFAIL ,并且在下线报告的有效期限内集群中半数以上的节点将 B 节点标记为 PFAIL,节点 A 就会向集群广播一条 FAIL 消息,通知其他节点将故障节点 B 标记为 FAIL 。

下图就是主从架构的 Redis Cluster 的示意图

图中的虚线代表的就是各个节点之间使用 Gossip 进行通信 ,实线表示主从复制

有了 Redis Cluster 之后,不需要专门部署 Sentinel 集群服务了

Redis Cluster 相当于是内置了 Sentinel 机制

Redis Cluster 内部的各个 Redis 节点通过 Gossip 协议共享集群内信息


Gossip协议的传播模式

Gossip 设计了两种可能的消息传播模式:反熵(Anti-Entropy)传谣(Rumor-Mongering)


反熵

什么是熵

熵的概念最早起源于物理学,用于度量一个热力学系统的混乱程度

熵最好理解为不确定性的量度而不是确定性的量度,因为越随机的信源的熵越大

什么是反熵

在这里,你可以把反熵中的熵理解为节点之间数据的混乱程度/差异性

反熵就是指消除不同节点中数据的差异,提升节点间数据的相似度,从而降低熵值

具体是如何反熵的呢?

集群中的节点,每隔段时间就随机选择某个其他节点

然后通过互相交换自己的所有数据来消除两者之间的差异,实现数据的最终一致性

在实现反熵的时候,主要有推、拉和推拉三种方式:

  • 推方式,就是将自己的所有副本数据,推给对方,修复对方副本中的熵。
  • 拉方式,就是拉取对方的所有副本数据,修复自己副本中的熵。
  • 推拉就是同时修复自己副本和对方副本中的熵。

反熵使用例子

在我们实际应用场景中,一般不会采用随机的节点进行反熵,而是可以设计成一个闭环

这样的话,我们能够在一个确定的时间范围内实现各个节点数据的最终一致性,而不是基于随机的概率

像 InfluxDB 就是这样来实现反熵的

  1. 节点 A 推送数据给节点 B,节点 B 获取到节点 A 中的最新数据
  2. 节点 B 推送数据给 C,节点 C 获取到节点 A,B 中的最新数据
  3. 节点 C 推送数据给 A,节点 A 获取到节点 B,C 中的最新数据
  4. 节点 A 再推送数据给 B 形成闭环,这样节点 B 就获取到节点 C 中的最新数据。

问题:虽然反熵很简单实用,但是,节点过多或者节点动态变化的话,反熵就不太适用了

解决方案:我们想要实现最终一致性就要靠 谣言传播(Rumor mongering)


谣言传播

谣言传播指的是分布式系统中的一个节点一旦有了新数据之后,就会变为活跃节点

活跃节点会周期性地联系其他节点向其发送新数据,直到所有的节点都存储了该新数据

适用情况:谣言传播比较适合节点数量比较多的情况

问题所在:这种模式下要尽量避免传播的信息包不能太大,避免网络消耗太大


总结

反熵(Anti-Entropy)会传播节点的所有数据,而谣言传播(Rumor-Mongering)只会传播节点新增的数据

我们一般会给反熵设计一个闭环

谣言传播(Rumor-Mongering)比较适合节点数量比较多或者节点动态变化的场景


Gossip协议的优势和缺陷

优势

1、相比于其他分布式协议/算法来说,Gossip 协议理解起来非常简单。

2、能够容忍网络上节点的随意地增加或者减少,宕机或者重启,因为 Gossip 协议下这些节点都是平等的,去中心化的。新增加或者重启的节点在理想情况下最终是一定会和其他节点的状态达到一致。

3、速度相对较快。节点数量比较多的情况下,扩散速度比一个主节点向其他节点传播信息要更快(多播)


缺陷

1、消息需要通过多个传播的轮次才能传播到整个网络中,因此,必然会出现各节点状态不一致的情况。毕竟,Gossip 协议强调的是最终一致,至于达到各个节点的状态一致需要多长时间,谁也无从得知。

2、由于拜占庭将军问题,不允许存在恶意节点

3、可能会出现消息冗余的问题。由于消息传播的随机性,同一个节点可能会重复收到相同的消息


Redis Cluster 中的节点是怎么进行通信的?

Gossip协议进行节点通信共享信息

Redis Cluster 是一个典型的分布式系统,分布式系统中的各个节点需要互相通信

既然要相互通信就要遵循一致的通信协议,Redis Cluster 中的各个节点基于 Gossip 协议 来进行通信共享信息,每个 Redis节点都维护了一份集群的状态信息


Gossip信息

Redis Cluster 的节点之间会相互发送多种 Gossip 消息

MEET

在 Redis Cluster 中的某个 Redis 节点上执行 CLUSTER MEET ip port 命令,

可以向指定的 Redis 节点发送一条 MEET 信息,用于将其添加进 Redis Cluster 成为新的 Redis 节点


PING/PONG

Redis Cluster 中的节点都会定时地向其他节点发送 PING 消息,来交换各个节点状态信息,检查各个节点状态,包括在线状态、疑似下线状态 PFAIL 和已下线状态 FAIL


FAIL

Redis Cluster 中的节点 A 发现 B 节点 FAIL ,并且在下线报告的有效期限内集群中半数以上的节点将 B 节点标记为 PFAIL,节点 A 就会向集群广播一条 FAIL 消息,通知其他节点将故障节点 B 标记为 FAIL

有了 Redis Cluster 之后,不需要专门部署 Sentinel 集群服务了。Redis Cluster 相当于是内置了Sentinel 机制

Redis Cluster 内部的各个 Redis 节点通过 Gossip 协议互相探测健康状态,在故障时可以自动切换


 

http://www.cadmedia.cn/news/13303.html

相关文章:

  • 免费b2b网站平台网站设计与开发
  • 济南网站建设sdjy6免费b站推广网站2022
  • 湛江网站设计模板视频竞价推广代运营服务
  • 网站建设实验目的十大销售管理软件排行榜
  • 杭州富阳区网站建设公司广州seo关键词优化外包
  • 学生登录入口旅游企业seo官网分析报告
  • 随县最新疫情最新消息seo搜索引擎优化平台
  • 小程序开发工具代理平台搜索引擎优化的完整过程
  • 河北网站建设多少钱关键词排名快照优化
  • 湖北黄石网站建设推广app赚佣金
  • 新闻网站建设毕业设计如何做网站关键词优化
  • 好看的论坛网站模板北京发生大事了
  • 灯饰网站建设网络营销活动方案
  • 外贸网站建设哪里做得好上海关键词优化方法
  • 聊城网站建设服务好长春做网络优化的公司
  • 网站策划包括哪些内容网站软件下载大全
  • 东阳建设网站谷歌搜索引擎免费入口
  • 可以做用户调研的网站深圳网站建设开发公司
  • 国家税务总局网上办税服务平台快速网站排名优化
  • 加工平台校准系统seo网站培训班
  • 平台网站建设需要什么技术企业推广宣传方式
  • 福州网站建设网络营销平台
  • 南昌专业网站建设百度搜索引擎营销如何实现
  • 西安做网站收费价格常见的网络营销策略都有哪些
  • 网站建设规划书百度文库seo排名工具给您好的建议
  • 网站你懂我意思正能量晚上不用下载网络推广培训去哪里好
  • 平面设计图形北京搜索引擎优化seo专员
  • 德阳市建设管理一体化平台网站市场推广方案怎么做
  • 定制网站建设公司排行大兴今日头条新闻
  • 个人网站设计毕业论文10000字营销推广方案怎么写