通用全局唯一ID生成器
全局唯一生成器在很多场景下需要,例如,sharding时。
下面介绍几种方法来解决这个问题。
flickr开发团队在2010年撰文介绍了flickr使用的一种主键生成测策略,同时表示该方案在flickr上的实际运行效果也非常令人满意。
其主要的想法 是
此种方案的优缺点:
采用redis+lua的id generato算法,可以非常方便的实现一个ID生成服务。
若在redis-client里采用预取技术,可以保证ID的连续性。如果redis-client实例经常会重启,更甚者,可以将使用的ID dump成文件,方便重启时不必浪费ID。
优缺点是:
模仿第一种方案,采用双redis方案,各台redis来生成奇偶ID。稳定性和单点问题可以大部分解决掉。
优缺点:
除了第一种方案外,第二、第三种方案均存在着单点DB的问题。
第二种方案部署最简单,一台redis可以搞定一切。如果害怕单点问题,也可以采用增强版方案。
鉴于大型企业mysql运维技术的稳定性,第一、第三方案均属于较大型企业的选择方案,部署起来比较复杂。