環境: sprinboot2.3.12.RELEASE + uid-generator1.0.0 導入UidGenerator は、Java で実装され、Snowflake アルゴリズムに基づいた一意の ID ジェネレーターです。 UidGenerator は、アプリケーション プロジェクト内でコンポーネントとして動作し、カスタムの workerId 数字と初期化戦略をサポートし、Docker などの仮想化環境での自動インスタンス再起動やドリフトなどのシナリオに適しています。実装の面では、UidGenerator は将来の時間を借用することでシーケンスの自然な並行性の制限を解決します。 RingBuffer は、生成された UID をキャッシュし、UID の生成と消費を並列化し、同時に CacheLine を埋めるために使用され、RingBuffer によって発生するハードウェア レベルの「誤った共有」問題を回避します。最終的には、単一マシンの QPS は 600 万に達します。 依存関係バージョン: Java 8 以上、MySQL (組み込みの WorkerID アロケータ、起動時に DB を通じて割り当てられます。カスタマイズされている場合、DB は必須の依存関係ではありません) スノーフレークアルゴリズムスノーフレーク アルゴリズムの説明: 指定されたマシンと同時および特定の同時シーケンスは一意です。これに基づいて、64 ビットの一意の ID (long) を生成できます。デフォルトのバイト割り当て方法は上記のとおりです。
上記のパラメータはSpringを通じてカスタマイズできます。キャッシュされたUidジェネレータRingBuffer は円形配列であり、配列の各要素がスロットになります。デフォルトでは、RingBuffer の容量は、Snowflake アルゴリズムのシーケンスの最大値、つまり 2^N です。 boostPower 構成を通じて容量を拡張し、RingBuffer の読み取りおよび書き込みスループットを向上させることができます。 テール ポインターとカーソル ポインターは、円形配列のスロットの読み取りと書き込みに使用されます。
CachedUidGenerator はデュアル リング バッファを使用します。Uid-RingBuffer は Uid を保存するために使用され、Flag-RingBuffer は Uid ステータス (埋められるかどうか、消費できるかどうか) を保存するために使用されます。 配列要素はメモリ内に連続的に割り当てられるため、CPU キャッシュを最大限に活用してパフォーマンスを向上させることができます。しかし、それは「偽りの共有」の問題も引き起こすでしょう。このため、Tail、Cursor ポインター、Flag-RingBuffer では CacheLine パディング方式が使用されます。 リングバッファ充填時間
上記はBaiduの公式紹介です。次に、これを Springboot プロジェクトに統合します。 UIDGenerator ダウンロードuid-generatorを次のアドレスからダウンロードしてください UIDGenerator 環境設定テーブルを作成
そのプロジェクト内のmapper.xmlファイルを、WorkerNodeEntity、WorkerNodeDAOに対応する自分のプロジェクトにコピーします。 DisposableWorkerIdAssigner が独自のプロジェクトにコピーされます。 DisposableWorkerIdAssigner は主に、注入された DAO を変更します。ここでは、デフォルトの DAO 関連の設定を変更する必要があるためです。 プロジェクト構成頼る
mybatisの設定
マッパー ファイル内の名前空間と対応するドメインを独自のパスに変更します。 UIDGenerator の設定
ご了承ください DisposableWorkerIdAssigner は Baidu によって提供されるものではなく、独自のプロジェクトにコピーされます。
これですべての設定が完了しました。 テスト
完了!!! |
<<: 2020年、わが国のクラウドコンピューティング市場の規模は1,781億元に達し、成長率は33.6%でした。
>>: 面接で必ず聞かれるJVMランタイムデータ領域について理解していますか?
地域プロモーションは、オフラインプロモーションとオンラインオペレーションを含む地上プロモーションとも...
SEOは大変な仕事だと言う人は多い。毎日、記事を書いて外部リンクを貼るだけ。IT業界の出稼ぎ労働者み...
プログラマーは自分の人生を大切にし、有用で有意義なことをするべきです。役に立つことをするには 2 つ...
1.4 本当に成功したマイクロブログとはどのようなマイクロブログでしょうか?リポスト数が多いというこ...
数年前、ジャック・マーは「電子商取引をやらないと後悔する」と言いましたが、多くの個人ウェブマスターは...
digitalvirt はどうですか? digitalvirt のロサンゼルス BGP ライン VP...
最近最もホットな話題は、間違いなくカタールワールドカップです。世界で最も商業的に価値のあるスポーツイ...
Huarui Cloud/huaruidcは、双方向CN2ネットワークに接続された香港のハイエンドク...
ご存知のとおり、プロメテウスはLEBで確実に1位にランクされています。その安定性と高性能は誰もが知っ...
コンピュータ仮想技術の継続的な成熟と仮想技術のより現実的な運用により、クラウド教室は広く普及し、小中...
RongCloud リアルタイム オーディオおよびビデオ 3.0 のリリースから 1 年後、世界有数...
『詩経』には「他山の石で玉を磨く」という慣用句がある。元々の意味は、他山の石を磨くことで美しい玉に変...
Rackhostはホストキャットに2回登場しました。2002年から運営しているこのホスティング業者(...
2012 年、Baidu のアルゴリズム更新は非常に頻繁に行われ、更新の規模も比較的大きかった。更新...
映画サイトで働いたことがある友人なら、映画サイトの競争が非常に激しいことを知っているはずです。今日で...