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)
近期下载者:
相关文件:
收藏者: