オーダー番号生成ポリシーとタイムアウト自動キャンセルスキーム

1872 ワード

注文番号生成ポリシー(UUIDデータベース自増Snowflake Redis MongoDB objectId Zookeeper Znode)1、UUIDはご存知の通り、言わないでください.2、データベース自増ID関係型データベースはすべてデータベース自増を実現する.MYSQL経由AUTO_INCREMENTインプリメンテーション、OracleはSequenceシーケンスによってインプリメンテーションされます.データベース・クラスタ環境では、異なるデータベース・ノードが異なる開始値を設定し、同じステップでクラスタの下でグローバル一意、インクリメントIDを生成することができます.
 SET GLOBAL auto_increment_increment=3;
 SET GLOBAL auto_increment_offset=1;

3、Snowflakeアルゴリズム雪花アルゴリズム構成:41ビットタイムスタンプ+10ビットマシンID+12ビットシーケンス番号(自増)、長さ18ビットのロング整数型に変換.Twitterは、毎秒数万件のメッセージの作成を満たすために、各メッセージにグローバル一意のIDを割り当てる必要があります.これらのIDは、トレンドが増加し、クライアントのソートが容易になる必要があります.4.Redis自己増加ID Redisはince(key)APIがkeyに用いる値を1ずつ増加させ、結果を返すことを実現する.keyが存在しない場合は、0を作成して付与し、incr操作を実行します.ぶんせき
タイプのメリットとデメリットフォーマットUUIDは、ブロードバンドを占有しない無秩序なクエリを実現するのが遅い32ビットDBの自己増加無コード増加DB単点障害拡張性ボトルネックSnowflakeブロードバンドを占有しない低位トレンド増加依存サーバ時間18ビットRedis単点障害なし性能がDB増加占有広帯域Redisクラスタメンテナンス困難32ビットより優れている
受注タイムアウト自動キャンセルスキーム1、データベースポーリング小型プロジェクトの一般的な方法で、1つのスレッドを通じてデータベースまたはデータベースタイミングタスクをスキャンし、受注時間を通じて、タイムアウトした受注を判断し、更新状態またはその他の操作を行う.2、JDK遅延キューDelayQueueは無境界ブロックキューであり、遅延期間が満了したときにのみ要素を取得し、DelayQueueに入れたオブジェクトはDelayedインタフェースを実現する必要がある.ProducerDelay生産者は、poll()またはtake()メソッドを使用してタイムアウト時間タスクを取得するタスクDelayQueueを生成します.次に消費者consumerDelay 3、Redis redisに到達するのは、オープンソースで高性能で、キー値ペアに基づくキャッシュとストレージシステムであり、複数のキー値データ型を提供することによって異なるシーンに適応し、複数のキー値データを提供して異なるシーンに適応することによってキャッシュとストレージのニーズに適応することで、valueのタイプはString Map List Sets sortedSetsタイプを提供することができる.redis順序セットは、受注タイムアウトのタイムスタンプと受注番号をscoreとmemberシステムスキャンの最初の要素がタイムアウトしたかどうかを設定します.4、RabbitMQ ActiveMQ JMSで注文がタイムアウトしたかどうかを判断し、キューには判断タイプを設定してキューに入ってから条件が合えば、直接持続化し、時間を超えたらメッセージを削除する.