zookeeper入门学习

     1. zk的强一致性

  • zk 有数据的写入着(数据生产者),数据的消费着;zookeeper 会启动一个watch的机制,实时监听和通知数据的消费者,
            当数据生产者有数据更新时,watch 会把数据更新尽快同步到所有的数据消费者,这样的方式来保证数据的强一致性       

       2. zk的选举功能

  •   对分布式存储(多个地方,最简单的就是多台机器来存储)来说,机器的leader 选举就很重要;zookeeper的选举原理很简单:
  •  zookeeper集群的每台机器都投一票(内部通信,检测到那台机器是ok的就投票),得票数最多的那台机器成为leader;
            所以我们zk集群都是偶数集群,如果是偶数会出现投票一样多的情况

       3. 分布式锁

  •   数据生产者写zk集群的数据,不能同时写,这样容易把数据写错或者覆盖,这时就需要锁机制,zookeeper 自己带了分布式锁,
              zk的client 可以直接调用分布式锁来实现。

       4. 选用zk的原因

  •  分布式锁可以用zk的不用自己写代码实现,数据的强一致性保障;
             分布式存储有很多方案:nosqp mgodb ,不一定选择zk

      5. zk 的使用场景 

  •  分布式锁:比如现在有100台机器(每台机器都有一个服务)同时修改另外一台机器上的某一个文件(可以是DB),怎么来保证这100台机器写文件不会把这个文件写坏,
这就是要用到分布式锁;就是每次写之前先建立一个分布式锁,锁住这个文件,当这次写完成后,再释放锁。--> 再分布式系统中分布式锁用的非常频繁,如果不用zookeeper,只能自己实现分布式锁,但要考虑到分布式锁的各种稳定性/容错性/其他特性,实现起来还是有一定难度的,如果这个分布式锁每个服务都自己做就会造成代码冗余;如果把分布式锁做成一个单独的基础功能组件,那就就是一个翻版的zookeeper,还不如直接用开源的zk呢

  • 主备服务的选举
现在任何一个系统都要避免单点设备故障;现在任何一个服务可以分成写服务和读服务,为了保证数据的唯一,一般写为一台;可以用zk 来实现机器主/备效果;2台机器(同样服务)注册到zk中,zk会给每个服务分配一个注册号,可以设置小的注册号为主;这样zk可以跟这些注册的服务进行健康监测;实时更新服务的状态;如果主服务失败,zk会删除这台机器,然后很快选择另外一台作为主服务


         6. zk 的数据模型

几乎每一个系统都会进行数据存储,zk 也不例外;zk 有自己的数据模型;采用文件的方式来保存数据,访问的数据格式也是类似文件系统的方式来访问:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值