在多master系统架构中使用的ID设计

使用多于32位ID扩展公司业务规模

背景

在设计底层数据库的过程中,通常情况下对于primary id我们使用的是默认的int。

以postgresql为例,常用的integer类型占4个byte,即32个bit。id最高可以达到21亿: https://www.postgresql.org/docs/9.1/datatype-numeric.html
然而在公司发展后,用32位id较为容易溢出,比如阿里amazon的订单ID,按照一个订单对应一个id算,显然一年就远远不止21亿。

这种情况下,扩展ID的位数是可取的办法。postgres也提供了bigint的类型可供直接使用。

然而数据库的数字id存在一个致命的问题:无法扩展到多台master server架构

举个例子,通常情况下IT公司都会有两个数据中心,然而只有一个是作为主要的,接受外部流量的中心,另一个作为备份中心。两个中心定期切换以满足维护需求。主数据中心通过database sync 比如postgresql的pgsync https://github.com/ankane/pgsync 向备份中心实时备份数据。 这种结构,从根本上来讲,还是单master架构,因为同时只有一个数据中心在服务外部请求,尤其是写的请求。

作为全球化的大公司,通常会有比这个更高的数据中心需求,比如在北京的数据中心处理中国用户的请求,在美国的数据中心处理北美

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值