tonglin0325的个人主页

Kafka学习笔记——存储结构

1,由cdh安装的kafka的默认存储路径如图所示在/var/local/kafka/data,一般会进行修改

kafka配置参考:apache kafka系列之server.properties配置文件参数说明

路径下文件如下

如果是多个路径的话,使用,进行分隔,比如/data01/kafka/data,/data02/kafka/data,注意data的权限需要是kafka用户和kafka组

对应kafka manager上的topic

具体的topic的目录下的文件

全文 >>

分布式协议——Paxos、Raft和ZAB

参考:分布式系统协议Paxos、Raft和ZAB

Paxos算法是一种提高分布式系统容错率的一致性算法

Paxos 算法的步骤是这样:

1.首先有两种角色,一个是“提议者”,一个是“接受者”。提议者可以向接受者提出提议,然后接受者表达意见。

2.因为存在多个提议者,如果同时表达意见会出现意见不一致的情况,所以首先需要尽快选出一个领导者,让意见统一。

3.然后领导者会给接受者发出提议,如果一个提议被大多数接受者接纳,这个提议就通过了。

 

Raft协议

Raft 协议的每个副本都会处于三种状态之一:Leader、Follower、Candidate。

Leader:所有请求的处理者,Leader 副本接受 client 的更新请求,本地处理后再同步至多个其他副本。

全文 >>

Zk学习笔记——应用场景

1.Master选举

在分布式系统中,需要选举一台机器作为master或者leader。

这时候,可以选择一个跟节点,比如/master,然后多台机器同时像这个节点创建一个子节点/master/lock,利用zookeeper的特性,最终只有一台机器能否创建成功,成功的那台机器就是Master;

其他机器注册watch到这个子节点,然后当master宕机的时候,其他机器就会重新开始选举。

 

2.分布式锁

分布式锁的场景通常是多个进程需要在某个节点保证同步,比如保证只有一个进程进到某个函数里面

下面例子中的查询余额更新余额操作就需要用锁锁住,保证一个线程做完了查询和更新操作之后,才能有另外一个线程来做查询和更新操作

这个使用的锁称为排他锁(Exclusive Locks),又称为写锁或者独占锁。当一个事务1对数据对象1加了排他锁,那么在整个加锁期间,只允许事务1对对象1进行读取或者更新

全文 >>