当前位置:网站首页 > 编程语言 > 正文

lda主题分析原理(lda主题模型基本原理)



一致性算法知识点

Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。zookeeper 使用的 zab 算法是该算法的一个实现。 在 Paxos 算法中,有三种角色:Proposer,Acceptor,Learners。

Paxos 三种角色: Proposer, Acceptor, Learners。

Proposer:

只要 Proposer 发的提案被半数以上 Acceptor 接受, Proposer 就认为该提案里的 value 被选定了。

Acceptor:

只要 Acceptor 接受了某个提案, Acceptor 就认为该提案里的 value 被选定了。

Learner:

Acceptor 告诉 Learner 哪个 value 被选定, Learner 就认为那个 value 被选定。

Paxos 算法分为两个阶段。具体如下:

阶段一(准 leader 确定 ) :

(a) Proposer 选择一个提案编号 N,然后向半数以上的 Acceptor 发送编号为 N 的 Prepare 请求。

(b) 如果一个 Acceptor 收到一个编号为 N 的 Prepare 请求,且 N 大于该 Acceptor 已经响应过的所有 Prepare 请求的编号,那么它就会将它已经接受过的编号最大的提案(如果有的话)作为响应反馈给 Proposer,同时该 Acceptor 承诺不再接受任何编号小于 N 的提案。

阶段二(leader 确认) :

(a) 如果 Proposer 收到半数以上 Acceptor 对其发出的编号为 N 的 Prepare请求的响应,那么它就会发送一个针对[N,V]提案的 Accept 请求给半数以上的 Acceptor。注意: V 就是收到的响应中编号最大的提案的 value,如果响应中不包含任何提案,那么 V 就由 Proposer 自己决定。

(b) 如果 Acceptor 收到一个针对编号为 N 的提案的 Accept 请求,只要该 Acceptor 没有对编号大于 N 的 Prepare 请求做出过响应,它就接受该提案。

ZAB( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)协议包括两种基本的模式:崩溃恢复和消息广播。

  1. 当整个服务框架在启动过程中,或是当 Leader 服务器出现网络中断崩溃退出与重启等异常情况时, ZAB 就会进入恢复模式并选举产生新的 Leader 服务器。
  2. 当选举产生了新的 Leader 服务器,同时集群中已经有过半的机器与该 Leader 服务器完成了状态同步之后, ZAB 协议就会退出崩溃恢复模式,进入消息广播模式。
  3. 当有新的服务器加入到集群中去,如果此时集群中已经存在一个 Leader 服务器在负责进行消
    息广播,那么新加入的服务器会自动进入数据恢复模式,找到 Leader 服务器,并与其进行数
    据同步,然后一起参与到消息广播流程中去。




以上其实大致经历了三个步骤:

1.崩溃恢复:主要就是 Leader 选举过程。

2.数据同步: Leader 服务器与其他服务器进行数据同步。

3.消息广播: Leader 服务器将数据发送给其他服务器。

说明: zookeeper 章节对该协议有详细描述。

与 Paxos 不同 Raft 强调的是易懂(Understandability), Raft 和 Paxos 一样只要保证 n/2+1 节点正常就能够提供服务; raft 把算法流程分为三个子问题:选举(Leader election)、日志复制(Log replication)、安全性(Safety)三个子问题。

  1. 角色

Raft 运行时提供服务的时候只存在 Leader 与 Follower 两种状态;

Leader(领导者-日志管理)

负责日志的同步管理,处理来自客户端的请求,与 Follower 保持这 heartBeat 的联系;

Follower(追随者-日志同步)

刚启动时所有节点为Follower状态,响应Leader的日志同步请求,响应Candidate的请求,把请求到 Follower 的事务转发给Leader;

Candidate(候选者-负责选票)

负责选举投票, Raft 刚启动时由一个节点从 Follower 转为 Candidate 发起选举,选举出Leader 后从 Candidate 转为Leader 状态;

  1. Term(任期)

在 Raft 中使用了一个可以理解为周期(第几届、任期)的概念,用 Term 作为一个周期,每个 Term 都是一个连续递增的编号,每一轮选举都是一个 Term 周期,在一个 Term 中只能产生一个 Leader;当某节点收到的请求中 Term 比当前 Term 小时则拒绝该请求。

  1. 选举(Election)

选举定时器

Raft 的选举由定时器来触发, 每个节点的选举定时器时间都是不一样的,开始时状态都为Follower 某个节点定时器触发选举后 Term 递增,状态由 Follower 转为 Candidate,向其他节点发起 RequestVote RPC 请求,这时候有三种可能的情况发生:

在 Raft 中当接收到客户端的日志(事务请求)后先把该日志追加到本地的 Log 中,然后通过heartbeat 把该 Entry 同步给其他 Follower, Follower 接收到日志后记录日志然后向 Leader 发送ACK,当 Leader 收到大多数(n/2+1) Follower 的 ACK 信息后将该日志设置为已提交并追加到本地磁盘中,通知客户端并在下个 heartbeat 中 Leader 将通知所有的 Follower 将该日志存储在自己的本地磁盘中。

  1. 安全性(Safety)

安全性是用于保证每个节点都执行相同序列的安全机制如当某个 Follower 在当前 Leader commit Log 时变得不可用了,稍后可能该 Follower 又会倍选举为 Leader,这时新 Leader 可能会用新的Log 覆盖先前已 committed 的 Log,这就是导致节点执行不同序列; Safety 就是用于保证选举出来的 Leader 一定包含先前 commited Log 的机制。

选举安全性(Election Safety) : 每个 Term 只能选举出一个 Leader

Leader 完整性(Leader Completeness) : 这里所说的完整性是指 Leader 日志的完整性,Raft 在选举阶段就使用 Term 的判断用于保证完整性:当请求投票的该 Candidate 的 Term 较大或 Term 相同 Index 更大则投票,该节点将容易变成 leader。

  1. raft 协议和 zab 协议区别

相同点

不同点

N:在分布式存储系统中,有多少份备份数据

W:代表一次成功的更新操作要求至少有 w 份数据写入成功

R: 代表一次成功的读数据操作要求至少有 R 份数据成功读取

NWR值的不同组合会产生不同的一致性效果,当W+R>N 的时候,整个系统对于客户端来讲能保证强一致性。 而如果 R+W<=N,则无法保证数据的强一致性。 以常见的 N=3、 W=2、 R=2 为例:

N=3,表示,任何一个对象都必须有三个副本( Replica), W=2 表示,对数据的修改操作(Write)只需要在 3 个 Replica 中的 2 个上面完成就返回, R=2 表示,从三个对象中要读取到 2个数据对象, 才能返回。

LDA一致性<a href='/tag/270'>计算</a>_服务器

一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡。

Memcached client 也选择这种算法,解决将 key-value 均匀分配到众多 Memcached server 上的问题。它可以取代传统的取模操作,解决了取模操作无法应对增删 Memcached Server 的问题(增删 server 会导致同一个 key,在 get 操作时分配不到数据真正存储的 server,命中率会急剧下降)。

  1. 一致性 Hash 特性

平衡性(Balance): 平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。

单调性(Monotonicity): 单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。容易看到,上面的简单求余算法 hash(object)%N 难以满足单调性要求。

平滑性(Smoothness): 平滑性是指缓存服务器的数目平滑改变和缓存对象的平滑改变是一致的。

  1. 一致性 Hash 原理
    1.建构环形 hash 空间:

3.把服务器(节点)映射到 hash 空间

4.把对象映射到服务节点

LDA一致性计算_一致性算法_02

考察 cache 的变动

5.通过 hash 然后求余的方法带来的最大问题就在于不能满足单调性,当 cache 有所变动时,cache 会失效。

虚拟节点

hash 算法并不是保证绝对的平衡,如果 cache 较少的话,对象并不能被均匀的映射到 cache 上。

为了解决这种情况, consistent hashing 引入了“虚拟节点”的概念, 它可以如下定义:

仍以仅部署 cache A 和 cache C 的情况为例。现在我们引入虚拟节点,并设置“复制个数”为 2 ,这就意味着一共会存在 4 个“虚拟节点”, cache A1, cache A2 代表了 cache A; cache C1,cache C2 代表了 cache C 。 此时,对象到“虚拟节点”的映射关系为:

objec1->cache A2 ; objec2->cache A1 ; objec3->cache C1 ; objec4->cache C2 ;

LDA一致性计算_服务器_03

到此这篇lda主题分析原理(lda主题模型基本原理)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • tp9950芯片资料(tp9930芯片规格书)2026-01-23 12:45:06
  • pdf截图怎么截图2020(pdf截图怎么截图保存到桌面)2026-01-23 12:45:06
  • max31865程序(max31856中文手册)2026-01-23 12:45:06
  • none什么意思啊(none是什么意思呢)2026-01-23 12:45:06
  • edge重置在哪(edge恢复初始设置)2026-01-23 12:45:06
  • 蓝牙断开连接后怎么重新连接(蓝牙断开连接后为什么连接不到了)2026-01-23 12:45:06
  • samba共享文件(samba共享文件夹权限)2026-01-23 12:45:06
  • ls查看文件权限(ls查看文件类型)2026-01-23 12:45:06
  • win10修复edge(win10修复edge浏览器)2026-01-23 12:45:06
  • 如何破解pdf文件(如何破解pdf文件的密码保护)2026-01-23 12:45:06
  • 全屏图片