"身份证"在分布式系统中是分布式id和唯一的。如何在分布式系统中生成唯一的id?在考虑这个问题的时候,我觉得可以从"寻找问题的解决方案,也就是说我需要满足什么条件才能生成这个分布式id?
分布式id生成需要满足的条件是全球唯一的:不用说,否则,什么样的分布式"身份证"有吗?高可用性:不能有单点故障,以免引发雪崩;安全:这个id可以t要连续,否则不友好的人发现规则、数据抓取、数据预测会有一定的安全隐患;确保订单增加:mysqlinnodb引擎使用b树算法存储索引数据。为了提高性能,需要要求索引的主键在一定程度上是有序的,这样无论是写还是查询效率都很好;碎片化支持:可以根据分布式id获取具体的服务shardingid,方便服务查询;不要太久:64位存储最好?
你认为还有哪些场景或情况需要考虑?欢迎在评论区留言讨论~那么基于以上条件,我们在日常生活中有哪些分布式id生成方案呢?数据库生成的优点:简单粗暴,id序列递增。
缺点:只能生成主库,容易造成单点故障;性能不足时,无法扩展;分库分桌会有很多麻烦。
uuid的优点:简单直接,没有性能问题,真正独一无二。
缺点:没有规则;uuid是字符串,io数据量大,存储空间大,查询效率低。基于uuid划分数据库和表更加困难。
区别在于方向和形式不同。对象存储是指桌面存储按对象分类的存储,而分布式存储是另一种存储。存储形式,两者既有联系又有区别。