超简单的分布式ID生成方案!美团开源框架介绍

本文介绍了美团开源的分布式ID生成框架Leaf,包括其snowflake和segment两种模式,以及如何在其基础上改造支持RPC,以提高ID获取性能。Leaf最初为解决各业务线订单ID生成需求,覆盖了美团众多业务线,QPS压测结果可达5w/s。文章详细解释了Leaf如何利用Zookeeper简化workerId配置,并讨论了segment模式的工作原理和并发量问题的优化策略。
摘要由CSDN通过智能技术生成

目录

  1. 阐述背景
  2. Leaf snowflake 模式介绍
  3. Leaf segment 模式介绍
  4. Leaf 改造支持 RPC

阐述背景

不吹嘘,不夸张,项目中用到 ID 生成的场景确实挺多。比如业务要做幂等的时候,如果没有合适的业务字段去做唯一标识,那就需要单独生成一个唯一的标识,这个场景相信大家不陌生。

很多时候为了图方便可能就是写一个简单的 ID 生成工具类,直接开用。做的好点的可能单独出一个 Jar 包让其他项目依赖,做的不好的很有可能就是 Copy 了 N 份一样的代码。

单独搞一个独立的 ID 生成服务非常有必要,当然我们也没必要自己做造轮子,有现成开源的直接用就是了。如果人手够,不差钱,自研也可以。

今天为大家介绍一款美团开源的 ID 生成框架 Leaf,在 Leaf 的基础上稍微扩展下,增加 RPC 服务的暴露和调用,提高 ID 获取的性能。

Leaf 介绍

Leaf 最早期需求是各个业务线的订单 ID 生成需求。在美团早期,有的业务直接通过 DB 自增的方式生成 ID,有的业务通过 redis 缓存来生成 ID,也有的业务直接用 UUID 这种方式来生成 ID。以上的方式各自有各自的问题,因此我们决定实现一套分布式 ID 生成服务来满足需求。

具体 Leaf 设计文档见:https://tech.meituan.com/2017/04/21/mt-leaf.html[1]

目前 Leaf 覆盖了美团点评公司内部金融、餐饮、外卖、酒店旅游、猫眼电影等众多业务线。在 4C8G VM 基础上,通过公司 RPC 方式调用,QPS 压测结果近 5w/s,TP999 1ms。

snowflake 模式

snowflake 是 Twitter 开源的分布式 ID 生成算法,被广泛应用于各种生成 ID 的场景。Leaf 中也支持这种方式去生成 ID。

使用步骤如下:

修改配置 leaf.snowflake.enable=true 开启 snowflake 模式。

修改配置 leaf.snowflake.zk.address 和 leaf.snowflake.port 为你自己的 Zookeeper 地址和端口。

想必大家很好奇,为什么这里依赖了 Zookeeper 呢?

那是因为 snowflake 的 ID 组成中有 10bit 的 workerId,如下图:

一般如果服务数量不多的话手动设置也没问题,还有一些框架中会采用约定基于配置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值