高并发网站的自增主键如何防止出现重复情况?
比如说新浪微博的微博id,注册用户的用户uid,百度贴吧的帖子号tid等等我观察过都是按照发布时间呈现递增关系,但是我很好奇这种高并发网站一般都是分布式数据库,数据库之前肯定还有缓存,消息队列等中间件,那么如何保证最终插入多个数据库时他们之间主键自增的情况下不出现重复?
而且现在也有很多碰撞概率较低的随机id生成算法为什么没有被这些高并发网站所采用?是否是效率原因?
回复内容:
比如说新浪微博的微博id,注册用户的用户uid,百度贴吧的帖子号tid等等我观察过都是按照发布时间呈现递增关系,但是我很好奇这种高并发网站一般都是分布式数据库,数据库之前肯定还有缓存,消息队列等中间件,那么如何保证最终插入多个数据库时他们之间主键自增的情况下不出现重复?
而且现在也有很多碰撞概率较低的随机id生成算法为什么没有被这些高并发网站所采用?是否是效率原因?
给你推荐一个科普ID生成器或者叫全局发号器的知识文章
http://weibo.com/p/1001603800404851831206
然后再推荐一个用PHP实现的Twitter内部命名为SnowFlake的ID生成器
https://github.com/sschiau/Particle.php
我准备开始胡说了。。。。
系统是从无到有,由小到大的居多。
一开始钱少事多时间紧,自然什么事官方支持,什么是简单好维护的就用什么。后期转换成本高,风险大,收益又低的话,谁会去整这些有的没的。
其次,高并发,大多数都不会是并发写。
最后,就算遇到你说的情况,那么起个发号器,发自增id也可以的。好了现在的问题是,如何起一个分布式的发号器了。。。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

Dieses Kapitel befasst sich mit den Informationen zum Authentifizierungsprozess, der in CakePHP verfügbar ist.
