XuLizhao 's Notes

时光,漫步


  • 首页

  • 技术

  • 文档

  • 关于

  • 搜索
close

ZooKeeper

时间: 2017-03-17   |   分类: tech     |   阅读: 519 字 ~2分钟

作用及原理

作用: 分布式协调, 提供操作API

  • 配置管理
  • 集群管理:
    • 群主选举
    • 资源定位
  • 同步状态
  • 统一命名服务

使用案例:

  • HBase
  • Hadoop
  • Kafka

选举算法

一个Leader,其他节点为Follower

Leader选举算法 (分布式选举算法使用ZAB,是Paxos的变种)

一致性保证:

  • 数据变更先写磁盘再读入内存
  • 读写原子
  • 同步消息原子性
  • 事务日志和快照是持久化存储.

写请求连接Leader, 读请求连接任意节点读取本地的复制.

配置

设置根目录: ZOOKEEPER_HOME

日志文件: zookeeper.out

集群推荐不少于3台,推荐奇数个节点,只要超过半数的节点OK(有效参与选举的节点数过半), ZooKeeper就能正常服务. 最好分布在不同的物理机上。

# server.N,  在zoo.cfg指定的dataDir目录下建立以服务器节点对应的myid文件,并更新内容为N

initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
# Ubuntu 随系统启动
apt-get install zookeeperd

启动

# 单机
bin/zkServer.sh start

# 客户端连接
bin/zkCli.sh -server 127.0.0.1:2181

性能

性能: 在读大于写时性能更好(读写10:1)

注:来自腾讯广告团队分享

问题:如果读写操作频繁,则Zookeeper server很容易不堪重负。

workaround:用C++写了一个proxy,定期load Zookeeper数据,代替Zookeeper处理读操作,把写操作proxy给后面的Zookeeper。

替代方案:etcd

  • 本文作者: xulizhao
  • 本文链接: https://xulizhao.com/blog/zookeeper/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
#distributed#
面向对象设计
reborn
  • 文章目录
  • 站点概览

xulz

时光,漫步

56 日志
3 分类
28 标签
  • 作用及原理
    • 选举算法
  • 配置
  • 启动
  • 性能
    • 替代方案:etcd
© 2017 - 2023 XuLizhao 's Notes
Powered by - Hugo/ NexT
津ICP备17010344号-1
0%