php - 高并发网站的自增主键如何防止出现重复情况?

 小呗羽_331 发布于 2022-11-16 19:04

比如说新浪微博的微博id,注册用户的用户uid,百度贴吧的帖子号tid等等我观察过都是按照发布时间呈现递增关系,但是我很好奇这种高并发网站一般都是分布式数据库,数据库之前肯定还有缓存,消息队列等中间件,那么如何保证最终插入多个数据库时他们之间主键自增的情况下不出现重复?

而且现在也有很多碰撞概率较低的随机id生成算法为什么没有被这些高并发网站所采用?是否是效率原因?

2 个回答
  • 我准备开始胡说了。。。。

    系统是从无到有,由小到大的居多。

    一开始钱少事多时间紧,自然什么事官方支持,什么是简单好维护的就用什么。后期转换成本高,风险大,收益又低的话,谁会去整这些有的没的。

    其次,高并发,大多数都不会是并发写。

    最后,就算遇到你说的情况,那么起个发号器,发自增id也可以的。好了现在的问题是,如何起一个分布式的发号器了。。。

    2022-11-16 19:28 回答
  • 给你推荐一个科普ID生成器或者叫全局发号器的知识文章
    http://weibo.com/p/1001603800404851831206

    然后再推荐一个用PHP实现的Twitter内部命名为SnowFlake的ID生成器
    https://github.com/sschiau/Particle.php

    2022-11-16 19:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有