idleaf

所属分类:Java编程
开发工具:Java
文件大小:23KB
下载次数:1
上传日期:2019-11-14 22:49:50
上 传 者lyl2012
说明:  美团点评分布式ID生成系统中Leaf-segment数据库方案的实现
(US Mission Review Implementation of Leaf-segment Database Scheme in Distributed ID Generation System)

文件列表:
pom.xml (2943, 2018-08-25)
sql (0, 2018-08-25)
sql\mysql.sql (588, 2018-08-25)
src (0, 2018-08-25)
src\main (0, 2018-08-25)
src\main\java (0, 2018-08-25)
src\main\java\com (0, 2018-08-25)
src\main\java\com\z (0, 2018-08-25)
src\main\java\com\z\idleaf (0, 2018-08-25)
src\main\java\com\z\idleaf\IdLeafService.java (134, 2018-08-25)
src\main\java\com\z\idleaf\IdLeafServiceFactory.java (341, 2018-08-25)
src\main\java\com\z\idleaf\WithGeneIdLeafService.java (147, 2018-08-25)
src\main\java\com\z\idleaf\support (0, 2018-08-25)
src\main\java\com\z\idleaf\support\DefaultIdLeafServiceFactory.java (1157, 2018-08-25)
src\main\java\com\z\idleaf\support\ExtendMySQLMaxValueIncrementer.java (10171, 2018-08-25)
src\main\java\com\z\idleaf\support\ExtendSnowflakeIdLeafService.java (5091, 2018-08-25)
src\main\java\com\z\idleaf\support\IdSegment.java (1756, 2018-08-25)
src\main\java\com\z\idleaf\support\IgniteIdLeafServiceImpl.java (1730, 2018-08-25)
src\main\java\com\z\idleaf\support\MysqlIdLeafServiceImpl.java (10975, 2018-08-25)
src\main\java\com\z\idleaf\support\WithGeneIdLeafServiceImpl.java (2094, 2018-08-25)
src\main\java\com\z\idleaf\support\package-info.java (567, 2018-08-25)
src\test (0, 2018-08-25)
src\test\java (0, 2018-08-25)
src\test\java\com (0, 2018-08-25)
src\test\java\com\z (0, 2018-08-25)
src\test\java\com\z\idleaf (0, 2018-08-25)
src\test\java\com\z\idleaf\support (0, 2018-08-25)
src\test\java\com\z\idleaf\support\ExtendMySQLMaxValueIncrementerTest.java (1115, 2018-08-25)
src\test\java\com\z\idleaf\support\IgniteIdLeafServiceTest.java (438, 2018-08-25)
src\test\java\com\z\idleaf\support\MysqlIdleafServiceImplTest.java (5605, 2018-08-25)
src\test\java\com\z\idleaf\support\applicationContext.xml (3413, 2018-08-25)
src\test\java\com\z\idleaf\support\extendmysqlapplicationContext.xml (2999, 2018-08-25)

# idleaf ## 简介 对于 [Leaf——美团点评分布式ID生成系统](http://tech.meituan.com/MT_Leaf.html?utm_source=tuicool&utm_medium=referral "Leaf——美团点评分布式ID生成系统") 中介绍的 Leaf-segment数据库方案 生成唯一orderId的方案的一个实现。 在实现中使用双buffer优化,在第一个buffer使用50%的时候去加载另一个buffer的数据,这里分同步与异步两种方式,默认是同步加载。对于异步增加参数asynLoadingSegment 设为true. 在第一个buffer使用完毕之后,切换到另一个buffer,需要去验证该buffer是否加载完成数据,然后进行切换(对于异步加载出了异常则同步加载数据,然后再切换,此时会产生发号的阻塞)。 ## 使用示例 ### 一种业务id使用方式 Long id=idLeafService.getId() ### 多个业务id使用方式 Long orderId=orderIdLeafService.getId(); Long productId=productIdLeafService.getId(); ## spring提供的关于主键生成的策略 spring 框架是无所不能,关于主键的生成它也提供了类似的功能,相应的类为org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer 但是这个类只保证单jvm的唯一性,在集群环中它会有并发更新的问题,所以我在此写了一个ExtendMySQLMaxValueIncrementer。思路还是沿袭上面的。 ### 使用示例 @Autowired @Qualifier("productNoIncrementer") private DataFieldMaxValueIncrementer incrementer; @Test public void test() { int i = 0; while (i < 10) { System.out.println("long id=" + incrementer.nextLongValue()); System.out.println("int id=" + incrementer.nextIntValue()); System.out.println("string id=" + incrementer.nextStringValue()); i++; } } spring 帮我们提供了三个接口,分别为获取int,long,string 三种数据类型。当然这种方式需要深度使用spring-jdbc框架. ## 带基因法id生成 基因法生成id,主要思路来自[架构师之路](http://mp.weixin.qq.com/s/PCzRAZa9n4aJwHOX-kAhtA) 实现接口com.z.idleaf.WithGeneIdLeafService 使用示例 Long orderId=withGeneIdLeafService.getId(10000L)

近期下载者

相关文件


收藏者