近两年的技术面试,分布式系列是面试官经常会问到的一个高频方向,比如:分布式事务、分布式锁、分布式调度、分布式存储、分布式ID等。
2025年04月25日
有些情况,我们不能使用数据库自带的主键生成机制(例如:使用分表的策略,采用数据库自增主键将使得每张物理表的主键彼此独立,这不是我们想要的)。
由于这段时间redis使用挺多的,现在就看看如何生成主键。
我们初步设想ID的生成规则:
根据每一个库的每一张表组合成一个key, 然后依靠redis进行生成ID
1. 首先定义了一个生成id的接口类
2. 定义一个子类,实现我们的接口
3. 或使用Spring的redisTemplate实现,这就是接口的好处了,扩展另一种实现很方便。
2025年04月25日
一、前言
但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,永不迁移数据和避免热点的文章中要求需要唯一ID的特性:
2025年04月25日
无论做什么类型的系统,都会牵涉到一个唯一流水号生成的问题,这个流水号可能是不规则的,也可能是有特定的有序格式。
在系统开发中比较常用的有数据库生成、缓存生成、数据库+缓存。这里就上述情况做一些简要记录。
2025年04月25日
什么是递增?
如:第一次生成的ID为12,下一次生成的ID是13,再下一次生成的ID是14。这个就是生成ID递增。
什么是趋势递增?
如:在一段时间内,生成的ID是递增的趋势。如:再一段时间内生成的ID在【0,1000】之间,过段时间生成的ID在【1000,2000】之间。但在【0-1000】区间内的时候,ID生成有可能第一次是12,第二次是10,第三次是14。
2025年04月25日
系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。
最常见的方式。利用数据库,全数据库唯一。
优点:
1)简单,代码方便,性能可以接受。
2025年04月25日
引言:关于 Redis 的事务很多人可能都是一知半解,大多数人只了解数据库的事务,并且是单体事务,对于 Redis 事务和常见关系型数据库的事务的区别还没有去了解过,本文就来详细进行介绍。