1. 美团Leaf分布式ID生成器
美团叶子最早的需求是各业务线的订单ID生成需求。具体Leaf设计文档参见:leaf美团分布式ID生成服务。叶子的特点:
Leaf依赖于数据库或者ZK(这里依赖ZK实现的Snowflake是对Snowflake原有方法的增强)。 Leaf提供两种模式:Leaf-segment数据库模式和Leaf-snowflake模式。雪花时间回调已优化。修复了时间回拨问题。
2.Leaf的Java实现
美团在Github上有实现代码。我们按照代码构建一个本地项目并运行一下。并尝试一下。
克隆代码:
git clone https://github.com/Meituan-Dianping/Leaf.git 配置:
进入leaf-server/src/main/resources/leaf.properties配置文件进行设置
配置
阐明
默认值
叶子名称
叶服务名称
叶段启用
是否启用分段模式
错误的
叶.jdbc.url
mysqlurl
leaf.jdbc.用户名
mysql 用户名
叶子.jdbc.密码
mysql密码
叶.雪花.启用
是否开启雪花模式
错误的
leaf.snowflake.zk.地址
雪花模式下的zk地址
叶.snowflake.port
雪花模式下的服务注册端口
我们打开leaf.segment.enable=true。由于需要使用zk,Leaf.snowflake.enable暂时无法使用。 leaf.properties 设置:
leaf.name=mxsmleaf.segment.enable=trueleaf.jdbc.url=jdbc:mysql://192.168.43.129:3306/leaf?useUnicode=truecharacterEncoding=utf-8leaf.jdbc.username=rootleaf.jdbc.password=sys123456执行脚本:
CREATE TABLE `leaf_alloc` ( `biz_tag` varchar(128) NOT NULL DEFAULT '', -- 您的业务唯一名称`max_id` bigint(20) NOT NULL DEFAULT '1', `step` int(11) NOT NULL, `说明` varchar(256) DEFAULT NULL,`update_time` 时间戳不为空更新CURRENT_TIMESTAMP 上的默认CURRENT_TIMESTAMP,主键(`biz_tag`)) ENGINE=InnoDB;插入leaf_alloc(biz_tag, max_id, step, description) 值('leaf- segment-test', 1, 2000, '测试叶段模式获取Id')
编译项目:
cd Leafmvn clean install -DskipTests 运行项目:
cd leaf-servermvn spring-boot:run 项目启动:
Tips: 我使用的是mysql8.0,所以修改了mysql的connector版本和druid版本没有修改报错。 jdk版本为11
测试:
#segmentcurl http://localhost:8080/api/segment/get/leaf-segment-test #snowflakecurl http://localhost:8080/api/snowflake/get/test
完全可以使用了。
Tips: 自己分析一下代码,基本是一样的。
3. 总结
叶段数据库模式结合了数据库和内存生成的优点。相当于上一篇文章中Redis实现的增强。这里,数据库发生错误后可以短暂提供服务,但服务的长度取决于步骤。如果步长设置得较大,即使数据库出现错误,也能长时间提供服务。但它也会导致大量浪费。
Leaf-snowflake使用ZK来实现workId的分配。解决了需要手动指定的情况。
标题:分布式ID生成器美团Leaf
链接:https://www.zhangqiushi.com/news/sypc/16638.html
版权:文章转载自网络,如有侵权,请联系删除!
用户评论
哇,这个分布式ID生成器真的很酷!我在玩美团Leaf的时候,感觉这技术超乎寻常的高效。
有7位网友表示赞同!
美团Leaf中的ID生成机制给我留下了深刻印象!真的很神奇,处理大量用户请求时表现得非常出色。
有15位网友表示赞同!
在体验美团Leaf游戏时,最让我惊喜的是其背后强大的分布式ID生成器,它让我的游戏过程流畅无比呀!
有8位网友表示赞同!
对技术控们来说,美团Leaf的ID生成系统是一个超一流的案例。在快节奏的游戏环境中,一切都处理得井井有条。
有14位网友表示赞同!
在玩的过程中发现,这个分布式ID生成器真的是高效又可靠,每次请求都得到快速响应,太让人满意了!
有14位网友表示赞同!
游戏设计者用的这些底层技术真的很了不起, 尤其是那个分布式ID系统,在背后默默地保证了我的整体体验。
有19位网友表示赞同!
我玩美团Leaf时对这个分布式ID生成器着迷,它如此高效流畅地支持着大量玩家,真的很牛。
有9位网友表示赞同!
在繁忙的游戏环境下,这个ID生成机制就像一剂强心针,提供稳定高效的用户识别和管理服务,真是太棒了!
有13位网友表示赞同!
作为重度游戏玩家,我会选择那些技术上投入大,比如分布式ID系统做后盾的游戏,比如美团Leaf,让人玩得过瘾。
有5位网友表示赞同!
不得不说,分布式ID生成器在这款游戏中的应用非常优秀。在海量用户同时在线时仍能保持快速响应,真是太赞了!
有5位网友表示赞同!
从玩家角度出发,我一直都被游戏运行的稳定性和流畅性所吸引,这完全归功于美团Leaf背后的强大技术支持。
有14位网友表示赞同!
对于想要玩游戏而不受技术问题困扰的人来说,选择有分布式ID系统作为支撑的游戏,真的很让人安心,像是美团Leaf这样的一流设计。
有18位网友表示赞同!
在体验这款游戏时,我注意到它的稳定性和响应速度都非常高,这绝对与背后的分布式ID生成器息息相关啊。
有10位网友表示赞同!
玩美团Leaf的过程真是太流畅了!这得益于强大的技术支持和高效的ID管理方案,真的很令人印象深刻。
有10位网友表示赞同!
作为一个关注技术细节的玩家,在美团Leaf的游戏体验上,我发现其背后的技术实力明显超越了一般预期。尤其是那个分布式ID系统。
有20位网友表示赞同!
这款游戏之所以能在大型服务器上稳定运行,离不开高效能的分布式ID管理系统,这是我的一大体会。
有5位网友表示赞同!
玩起来既便捷又流畅,这就是因为有了美团Leaf团队投入的一流技术架构和分布式ID生成器在起作用。确实是现代游戏设计的一大亮点。
有20位网友表示赞同!
作为一个经常关注技术细节的游戏者,我对美团Leaf的技术栈充满好奇。尤其是那个分布式ID系统给游戏带来了极大的效率提升!
有10位网友表示赞同!