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..
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>
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.