分布式环境下如何保证ID的不重复呢?一般我们可能会想到用UUID来实现嘛。但是UUID一般可以获取当前时间的毫秒数再加点随机数,但是在高并发下仍然可能重复。最重要的是,如果我要用这种UUID来生成分表的唯一ID的话,重复不谈,这种随机的字符串对于我们的innodb存储引擎的插入效率是很低的。所以我们... ...
分类:
其他好文 时间:
2019-12-14 22:49:59
阅读次数:
114
包含时间顺序的ID此场景最简单的实现方案,就是采用 twitter 的 Snowflake 算法。ID总长64位,第1位不可用,41位表示时间戳,10位表示生成机器的id,后12位表示序列号。为什么第一位不可用?第一位为0,可以确保ID在java的long类型数据一直为正整数递增同一时间戳即毫秒内,... ...
分类:
其他好文 时间:
2019-12-10 01:07:54
阅读次数:
130
概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求, ...
分类:
编程语言 时间:
2019-12-09 12:03:03
阅读次数:
250
首先,DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素。可以设置该队列的存活时间、移除时间、唯一ID等元素。 DelayQueue阻塞队列在我们系统开发中也常常会用到,例如:延迟多久执行某操作;任务调度系统,能够准确的把握任务的执行时间。为了具有调用行为,存放到DelayDe ...
分类:
其他好文 时间:
2019-11-13 19:21:06
阅读次数:
107
AB测试 为同一个目标,设计两种方案,将两种方案随机投放市场中,让组成成分相同(相似)用户去随机体验两种方案之一,根据观测结果,判断哪个方案效果更好。 基于hash的AB测试 具体的实现方法为: 在AB测试中需要将用户随机的分成两组,通过对每个用户唯一id做hash运算,并对hash值对2取模,便可 ...
分类:
其他好文 时间:
2019-11-06 20:04:41
阅读次数:
116
在博客园搜素全局唯一有序ID,罗列出来的文章大致讲述了以下几个问题,常见的生成全局唯一id的常见方法 :使用数据库自动增长序列实现 ; 使用UUID实现; 使用redis实现; 使用Twitter的snowflake算法实现;使用数据库+本地缓存实现。作为一个记录性质的博客,简单总结一下。 在实际的 ...
分类:
其他好文 时间:
2019-10-25 13:22:27
阅读次数:
67
首先关于唯一id生成,个人比较推崇美团的Leaf,具体介绍可见链接: https://tech.meituan.com/2017/04/21/mt-leaf.html 但这个框架未免有些太重了,笔者之前看到项目中生成方式是时间戳(精确到秒)+四位随机(数字+字母)的方式,看起来简单轻巧,但在高并发场 ...
分类:
其他好文 时间:
2019-10-11 01:15:43
阅读次数:
79
1、首先定义一个sql标签,一定要定义唯一id 例:<sql id="Base_Column_List" > name,age </sql> 2、然后通过id引用 <select id="selectAll"> select <include refid="Base_Column_List" /> ...
分类:
其他好文 时间:
2019-10-10 12:57:26
阅读次数:
173
分布式系统中唯一ID生成方案 [TOC] 在系统设计中,我们经常需要一个全局唯一的ID来标识一条数据,比如订单表,商品表的主键ID。这个ID往往能影响到数据存储、索引和查询等操作的效率。因此这个全局唯一的ID对系统的可用性和性能至关重要。 1. 唯一ID简介 在系统设计中,我们经常需要一个全局唯一的 ...
分类:
其他好文 时间:
2019-09-30 16:37:53
阅读次数:
73
SpringCloud Sleuth 简介 Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案。 Spring Cloud Sleuth借鉴了Dapper的术语。 Span :基本的工作单元。Span包括一个64位的唯一ID,一个64位trace码,描述信息,时 ...
分类:
编程语言 时间:
2019-09-22 19:31:05
阅读次数:
79