开发习惯
· 阅读需 2 分钟
Zookeeper 是一个针对分布式应用程序的分布式开源协调服务,分布式应用可以在这些服务的基础上构建更高级的同步,配置维护,组和命名服务
Zookeeper允许分布式进程通过共享的分层空间相互协调
中间件 提供协调服务
作用于分布式系统
支持Java 通过java和C语言的客户端api
简单的api
create 在树种某个位置创建节点delete 删除一个节点exist 测试某个位置节点状态get data 获取节点数据set data 将数据写入节点get children 检索节点数据sync 等待数据传播官网下载地址 :download
# 下载 bin
wget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz
# 解压文件
tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz
# 目录结构
# bin conf docs lib LICENSE.txt logs NOTICE.txt README.md README_packaging.md
# 生成配置文件
# 进入 conf
cp zoo_sample.cfg zoo.cfg
# 进入 bin 目录
# 启动 zookeeper
./zkServer.sh start
# zkCli.sh
./zkCli.sh -server 127.0.0.1:2181
雪花算法(Snowflake)是 Twitter 开源的分布式 ID 生成算法,核心目标是在分布式系统中生成全局唯一、趋势递增的 64 位整数 ID。它解决了传统 UUID 过长、数据库自增 ID 无法分布式部署的问题,广泛应用于微服务、分布式数据库、消息队列等场景。本文将从原理、特性、Go 实现三个维度带你掌握雪花算法。
雪花算法将 64 位整数(int64)拆分为 4 个部分(不同实现的分段可能略有差异,以下是最经典的版本):
| 位段 | 位数 | 作用 |
|---|---|---|
| 符号位 | 1 | 固定为 0(保证 ID 为正数) |
| 时间戳 | 41 | 存储毫秒级时间戳(相对于某个起始时间),可支持约 69 年(2^41/1000/3600/24/365 ≈ 69) |
| 机器/节点 ID | 10 | 标识分布式节点(可拆分为 5 位数据中心 + 5 位机器,支持 1024 个节点) |
| 序列号 | 12 | 同一毫秒内的自增序列(支持每个节点每毫秒生成 4096 个 ID) |
计算验证:1 + 41 + 10 + 12 = 64,刚好占满 int64 位空间。