「轻阅读」美团开源的QPS压测结果近5w/s的分布式ID生成器leaf的调试实战

懂点代码的大叔 2019-11-23 16:08:54 ⋅ 1054 阅读
原文:https://www.toutiao.com/i6761360621301662222

开篇

做过分布式项目的同学都知道,大型互联网项目的ID要保证全局唯一,一般不在用数据库自带的id自增了,一般都会用分布式id生成器。之前分享过一篇文章是介绍滴滴、美团、还有百度的ID生成器的,今天来实战调试一下美团的ID生成器Leaf。实战调试,如果觉得有用,关注、转发、收藏吧!

核心调试

1、把开源的leaf导入,美团开源的分布式IDgithub地址是https://github.com/Meituan-Dianping/Leaf,直接用idea导入。项目分为核心模块和一个spring boot的demo。


2、注意这里有坑,项目可能会报错:如果你用的是高版本的mysql,注意修改mysql驱动,和druid的相关版本的jar包,改成高版本的。默认是5.1.38的mysql驱动。可以修改成高版本的。


 <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>


3、创建数据库,并修改配置文件如下:

CREATE DATABASE leaf
CREATE TABLE `leaf_alloc` (
`biz_tag` varchar(128) NOT NULL DEFAULT '', -- your biz unique name
`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;

insert into leaf_alloc(biz_tag, max_id, step, description) values('leaf-segment-test', 1, 2000, 'Test leaf Segment Mode Get Id')

数据库创建

修改配置

4、启动项目,此时你就可以用其他项目调用该项目获得分布式id了。当然,这里的业务只是测试,如果真实项目中使用,还是要到开源地址仔细看看。


5、调用测试,注意这里的业务ID和你在mysql中插入的一致,当然可以插入多个


6、此外你还可以查看缓存。如下图:

结语

Leaf 最早期需求是各个业务线的订单ID生成需求。在美团早期,有的业务直接通过DB自增的方式生成ID,有的业务通过redis缓存来生成ID,也有的业务直接用UUID这种方式来生成ID。以上的方式各自有各自的问题,因此我们决定实现一套分布式ID生成服务来满足需求。目前Leaf覆盖了美团点评公司内部金融、餐饮、外卖、酒店旅游、猫眼电影等众多业务线。在4C8G VM基础上,通过公司RPC方式调用,QPS压测结果近5w/s,TP999 1ms。就问你值不值得收藏!觉得有用就给个关注吧。




全部评论: 0

    我有话说:

    Leaf——点评分布式ID生成系统

    在复杂分布式系统中,往往需要对大量数据和消息进行唯一标识。如在点评金融、支付、餐饮、酒店、猫眼电影等

    阅读】基于 Java Spring cloud在线教育系统调试实战

    转载自:https://www.toutiao.com/i6759167063090004483开篇之前分享

    阅读」图文并茂带你了解分布式架构演进

    初始阶段架构初始阶段 小型系统 应用程序、数据库、文件等所有资源都在一台服务器上通俗称LAMP

    阅读分布式事务四种解决方案,成长需要尝试

    分布式事务指事务操作位于不同节点上,需要保证事务 AICD 特性。

    阅读」亿级用户分布式数据存储解决方案

    分布式数据库和分布式存储是分布式系统中难度最大、挑战最大,也是最容易出问题地方。互联网公司只有解决分布式数据存储问题,才能支撑更多次亿级用户涌入。

    阅读」推荐系统中信息增强小技巧

    实用推荐系统构建经验,如何进行信息增强。

    A3Mall v1.5.2 发布,免费 PHP 小程序商城系统

    项目介绍 A3Mall商城系统是基于ThinkPhp6.0+Vue开发一套移动电商系统, 支持微信公众号商城、H5商城、小程序商城,支持多种营销活动,优惠劵、订单活动、购、秒杀、会员特价、积分

    阅读」如何构建可伸缩Web应用?

    可伸缩性已经成为Web应用程序DNA!

    阅读」轻松理解 Kubernetes 核心概念

    Kubernetes 迅速成为云环境中软件部署和管理新标准。

    Yahoo Pulsar 能否超越 Kafka?

    Yahoo ,可以说 Pulsar 就是...

    阅读」大众点评是如何分表分库

    原大众点评订单单表早就已经突破两百G,由于查询维度较多,即使加了两个从库,优化索引,仍然存在很多查询不理想

    阅读」“做完”和“做好”区别

    在工作中,“做完”和“做好”虽然仅一字之差,但前者只是完成了某项工作,而后者则不仅是完成了工作还有一个好

    阅读」Mysql调优你不得不知细节

    多数时候数据库会成为整个系统瓶颈

    阅读」移动端事件穿透原理与解决方案

    本文将带你了解事件穿透及如何在实际项目中选择合适方案解决事件穿透问题。

    阅读】为什么越来越多系统在做服务化?

    脱离业务实际情况架构都是耍流氓,所以不是所有系统都必须服务化,也不要为了服务化而服务化。

    阅读」为什么在做微服务设计时候需要DDD?

    设计蓝图里为什么没有看到DDD影子呢?