原创不易,转载请注明出处
文章目录
简单介绍
leaf是美团技术团队开源的分布式id生成服务。
leaf支持号段模式和snowflake模式id生成。
github地址:https://github.com/Meituan-Dianping/Leaf
配置
先去github地址:https://github.com/Meituan-Dianping/Leaf 将项目源代码clone下来
项目是使用springboot写的。需要到leaf-server子项目中resource目录下面leaf.properties配置
上面有提到leaf支持号段模式和snowflake模式id生成,这两种
介绍下号段模式的配置
由于号段模式基于mysql+号段实现,需要配置mysql连接信息
配置项 | 含义 | 默认值 |
---|---|---|
leaf.name | leaf 服务名 | |
leaf.segment.enable | 是否开启号段模式 | false |
leaf.jdbc.url | mysql 库地址 | |
leaf.jdbc.username | mysql 用户名 | |
leaf.jdbc.password | mysql 密码 |
同时需要建立一个mysql表
DROP TABLE IF EXISTS `leaf_alloc`;
CREATE TABLE `leaf_alloc` (
`biz_tag` varchar(128) NOT NULL DEFAULT '',
`max_id` bigint(20) NOT NULL DEFAULT '1',
`step` int(11) NOT NULL,
`description` varchar(256) DEFAULT NULL,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`biz_tag`)
) ENGINE=InnoDB;
介绍下snowflake模式的配置
snowflake基于snowflake算法优化+zk实现,需要配置zk信息
配置项 | 含义 | 默认值 |
---|---|---|
leaf.snowflake.enable | 是否开启snowflake模式 | false |
leaf.snowflake.zk.address | snowflake模式下的zk地址 | |
leaf.snowflake.port | snowflake模式下的服务注册端口 |
部署
如果是本地学习测试的话,完全可以导入到idea,然后直接main方法启动就可以了。
如果是生产级别使用的话
打包服务
cd leaf
mvn clean install -DskipTests
cd leaf-server
运行服务
mvn方式
mvn spring-boot:run
脚本方式
sh deploy/run.sh
测试
号段模式
snowflake模式
总结
本文主要介绍了分布式ID服务Leaf的配置与安装,关于号段模式与snowflake模式实现原理我们后面会有介绍。