Master-Slave Model Common Issues
- 如何选举master?
- master crash了怎么办?
- worker crash了怎么办?
- master和worker中的通信不流畅怎么办?
Master-Slave Model Common Tasks
- Master Election 选举⾸领的过程,当整个系统初始化的时候,或者现有master crash的时候。
- Crash Detection 及时快速发现分布式系统中的master或者worker是否还在。
- Group Membership 分布式系统中,有时会有不同种类的任务,有不同的worker在做对应的任务,需要Group Membership机制,来给worker分类。
- Metadata Management 系统运⾏中的关键性数据。
Architecture
ZooKeeper 保证了消息传递中的consistency, order, durability. 本质上是⽤来帮助其他分布式系统实现协同。 提供了⾮常简洁的⽅式去解决concurrency.
Zookeeper并不是⼀个直接的tool来解决synchronization的问题。 只是⼀个强⼀致性的共享的存储空间。 其他系统需要依据Zookeeper这个shared storage来实现
Coordinate Strategy
Coordinating with Messages PassingShared Storage
Coordinate with Shared Storage --> ZooKeeper
Concepts
Data Tree: Zookeeper是⼀个树状的存储结构,类似于计算机⽂件系统的结构。通过这个结构,能够 解决上述的各种问题
znode
Ephemeral znode: 临时的znode, 如果创建者crash了,对应的ephemeral znode就 会被删除。
Internal
Client - Server Interaction
对Zookeeper来讲,client指的是使⽤Zookeeper的distributed system,例如 Kafka, server就是zookeeper本身。 Zookeeper的Client - Server的connection使⽤的是TCP, Client只可以连接到⽐它更 新,或者等同状态的zookeeper server上。
Leader Election within Zookeeper
Zookeeper是⼀个shared storage, 给别⼈做⾸领选举。
它⾃⼰如何做⾸领选举呢?它使 ⽤AKA Ensemble这种机制,来选举。
State Replication within Zookeeper
Zookeeper是使⽤Zab的协议来实现的state replication.
当写操作过来,由leader来处理写操作,并将write request转化成⼀个transaction, 之后 leader会向所有的follower发送⼀个proposal, 所有的follower收到proposal后,必须返回 给leader⼀个ACK, 当leader得到majority的票数后,就会发送⼀个commit message, 这 时消息就正式写⼊zookeeper.
Kafka使⽤ISR的机制,写操作不⽤跟所有的follower征求意⻅,⽐较灵活,throughput很 ⾼,但是不是⾮常consistent. Kafka更快,Zookeeper更加的fault tolerant.
Usage
Crash Detection
每个节点使⽤⼀个ephemeral znode, 如果某个节点挂了,对应的ephemeral znode就会被删 除,同时对这个节点set watcher的所有节点就会被通知。
Group Membership
Data Tree采⽤的是树状结构,这就是⼀个天然的group management, 把同⼀group的znode 挂在同⼀个group znode下⾯。
Master Election
master 被发现挂了,找下一个非空 的znode就是我们的新master
Metadata Management
我们⽤persistent znode来存储metadata, 包含了master/slave的信息、Application specific data. 不能存储⼤量的数据,因为写的效率⾮常低。
No comments:
Post a Comment