Heim > Backend-Entwicklung > PHP-Tutorial > So berücksichtigen Sie Parallelität beim Erstellen einer Snap-Up-Funktion

So berücksichtigen Sie Parallelität beim Erstellen einer Snap-Up-Funktion

WBOY
Freigeben: 2016-08-04 09:19:14
Original
1112 Leute haben es durchsucht

Das Unternehmen möchte eine Eilkauffunktion schaffen.
Wie vermeidet man Überbestellungen durch Parallelität?
Da die Datenbank Mongo ist, kann sie nicht wie MySQL gesperrt werden.
Ich kenne keine guten Lösungen?

Alles, was ich möchte, ist Redis zu verwenden, um ihn in die Warteschlange zu zwingen, aber das ist zu Unsinn..
Ich werde es jedes Mal überprüfen, wenn ich es erstelle, aber ich habe Angst vor dieser kleinen Parallelität..

Antwortinhalt:

Das Unternehmen möchte eine Eilkauffunktion schaffen.
Wie vermeidet man Überbestellungen durch Parallelität?
Da die Datenbank Mongo ist, kann sie nicht wie MySQL gesperrt werden.
Ich kenne keine guten Lösungen?

Alles, was ich möchte, ist Redis zu verwenden, um ihn in die Warteschlange zu zwingen, aber das ist zu Unsinn..
Ich werde es jedes Mal überprüfen, wenn ich es erstelle, aber ich habe Angst vor dieser kleinen Parallelität..

Dieses Problem kann mithilfe der Nachrichtenwarteschlange gelöst werden

Zuallererst müssen Sie über Designfähigkeiten verfügen. Ihr Projekt ist darauf ausgelegt, möglichst vielen Menschen die Möglichkeit zu geben, möglichst viele Produkte zu ergattern. Entscheiden Sie dann, welche Technologie Sie verwenden möchten.
Wenn nur 10 Personen darum konkurrieren, machen Sie sich keine Sorgen, suchen Sie sich einfach eine relationale Datenbank und es ist vorbei.
Mit mehr können Sie Mongodb direkt unter Druck setzen. Mongodb ist übrigens nicht sperrenfrei und kann bei ordnungsgemäßer Verwendung mit dem Operator $inc gesperrt und nicht verkauft werden. Zum Beispiel:

<code>db.product.update({sku: 'xxx', qty: {$gt: 0}}, {$inc: {qty: -1}})</code>
Nach dem Login kopieren

Wenn Ihnen das nicht ausreicht, ist es an der Zeit, über das Anstehen nachzudenken

Diese Anforderung zum Einrasten umfasst Finanzfunktionen, und Finanzfunktionen erfordern definitiv Sperrfunktionen.

Wenn Sie also gut darin sind, schreiben Sie Ihre eigene Middleware. Wenn Sie faul sein möchten, verwenden Sie MySQL.

Stellen Sie eine separate Uhr speziell für die Aufbewahrung dieser Art von Verkaufsschlagerprodukten her

Redis sollte es umsetzen können. Redis selbst ist Single-Threaded und seine Vorgänge werden auf natürliche Weise serialisiert, sodass Sie sich keine Gedanken über den gleichzeitigen Zugriff machen müssen. Natürlich ist die Verwendung von MySQL eine bequeme Wahl.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage