注文処理システムを構築しています。私たちには処理サーバのクラスタがあります。オーダーに読み取り可能な番号を割り当てる必要があります(例:ORD-000001、ORD-000002)。分布ワードの連続番号
システム全体のロックを実装するのが難しい主な問題です。私は、ロックの有効期限を持つスキーマについて考えています。しかし、すべてのことには依然としてボトルネックがあります。
DDDに近づいているため、データベースへの直接アクセスは困難です。私たちはNHibernateを使用しています。そして、UnitOfWorkを使用します。
Pls、いくつかのアイデアを参考にしてください。すべてのアイデアは貴重です。トピックで読むべきものへのリンクはありますか?
更新日: 私は連続番号が必要であることを強調したいと思います。したがって、ハイ/ローアルゴリズムは使用できません。現時点で私はシナリオを明らかにしています。
- 私は「おそらく良い数字」を割り当てます。
- データベースにプッシュします。
- 失敗した場合は、別の「おそらく良い数字」を割り当ててみてください。
- 成功した場合はコミットします。
しかし、私はgoot技術を見つけることができません。
私はMPI(boostとC#の実装を参照してください)を使う考えは考えていますが、これが役立つかどうかは分かりません。そこにあるアイデアの1つは、各コミュニケータが独自のランク(分散envにN番目に表示されるランク)を認識していることです。これが役立つかどうかは分かりませんが、「いくつか」と「すべて」のアイデアにランクされます;-) – queen3
ところで、サーバー全体で単一のデータベースか複数のサーバーがありますか?単一の場合、なぜデータベースの自動インクリメントされたPKを使用できないのですか?(Ordersテーブルを使用できない場合は、特別なOrdersPKテーブルを使用して行を挿入し、固有のシーケンシャル番号を取得してください)。それらが複数の場合、「データベースにプッシュする」テストでどのように失敗するのでしょうか? – queen3
queen3、主にマルチテナントを使用しているため、私はPKを使用できません。同じデータベースを使用して、複数のユーザーの注文を格納します。そして、ユーザーは相違の順序を持つ必要があります。 –