分布式惟一ID生成系列(1)——为何须要分布式ID以及分布式ID的业务需求

分布式id主要用到哪些地方

在复杂分布式系统中,每每须要对大量的数据和消息进行惟一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增加,对数据分库分表后须要有一个惟一ID来标识一条数据或消息,数据库的自增ID显然不能知足需求;特别一点的如订单、骑手、优惠券也都须要有惟一ID作标识。此时一个可以生成全局惟一ID的系统是很是必要的。html

分布式id建立的业务需求

要求以下所示数据库

1.全局惟一性:不能出现重复的ID号,既然是惟一标识,这是最基本的要求。 2.趋势递增:在MySQL InnoDB引擎中使用的是汇集索引,因为多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面咱们应该尽可能使用有序的主键保证写入性能。 3.单调递增:保证下一个ID必定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。 4.信息安全:若是ID是连续的,恶意用户的扒取工做就很是容易作了,直接按照顺序下载指定URL便可;若是是订单号就更危险了,竞对能够直接知道咱们一天的单量。因此在一些应用场景下,会须要ID无规则、不规则。 5.分布式id里面最好包含时间戳,这样就可以在开发中快速了解这个分布式id的生成时间segmentfault

上述123对应三类不一样的场景,3和4需求仍是互斥的,因此没法使用同一个方案知足。安全

同时除了对ID号码自身的要求,业务还对ID号生成系统的可用性要求极高,想象一下,若是ID生成系统瘫痪,整个美团点评支付、优惠券发券、骑手派单等关键动做都没法执行,这就会带来一场灾难。由此我总结下一个ID生成系统应该作到以下几点:服务器

可用性高:就是我用户发了一个获取分布式id的请求,那么你服务器就要保证99.999%的状况下给我建立一个分布式id 延迟低:就是我用户给你一个获取分布式id的请求,那么你服务器给我建立一个分布式id的速度就要快 高QPS:这个就是用户一会儿有10万个建立分布式id请求同时过去了,那么你服务器要顶的住,你要一会儿给我成功建立10万个分布式id数据结构

原文连接分布式

其余分布式ID系列快捷键: 分布式ID系列(1)——为何须要分布式ID以及分布式ID的业务需求性能

大佬网址.net

www.itqiankun.com/article/156…htm

blog.csdn.net/hengyunabc/…

tech.meituan.com/2017/04/21/…

segmentfault.com/a/119000001…

www.jianshu.com/p/9d7ebe372…

相关文章
相关标签/搜索