Categories
程式開發

从 0 到 1 搭建技术中台之 ID 生成服务实践


自去年开始,中台话题的热度不减,很多公司都投入到中台的建设中,从战略制定、组织架构调整、协作方式变动到技术落地实践,每个环节都可能出现各种各样的问题。技术中台最坏的状况是技术能力太差,不能支撑业务的发展,其次是技术脱离业务,不能服务业务的发展。前者是能力问题,后者是意识问题。在本专题中,伴鱼技术团队分享了从 0 到 1 搭建技术中台的过程及心得。

前言

ID 生成器在前后端系统内都比较常见,应用场景广泛,如:订单 ID、账户 ID 、流水号、消息 ID 等等。常见的 ID 类型如下:

  • UUID 和 GUID:GUID 和 UUID 本质类似,GUID 来源于微软。一个 UUID 是一个 16 字节(128 bit)的数字。 UUID 由网卡 MAC 地址、时间戳、名字空间( Namespace )、随机或伪随机数、时序等元素进行生成。优点:在特定范围内可以保证全局唯一;生成方便,单机管理即可。缺点:所占空间比较大;无序,在插入数据库时可能会引起大规模数据位置变动,性能不友好。

  • 数据库自增 ID:主要基于关系数据库如 MySQL 的 auto_increment 自增键,在业务量不是很大时使用比较方便。基于数据库自增字段也有一些变种,如下面会介绍到的号段模式。优点:实现成本低,直接基于DB实现,不需要引入额外组件;能够实现单调自增,递增场景友好。缺点:需要考虑高可用、横向扩展问题。

  • snowflake :雪花算法由毫秒时间戳( 41 位) + 机器 ID( workerId 10 位) + 自增序列( 12 位),理论上最多支持 1024 台机器每秒生产 400w 个 ID。雪花算法综合考虑了性能、全局唯一、趋势自增、可用性等,是一种非常理想的 ID 生成算法,也是伴鱼内部使用最为广泛的 ID 生成算法。

原文链接:【https://www.infoq.cn/article/Z36TLNwOJYstQRdvHmoF】。未经作者许可,禁止转载。