1. 分散IDとは何ですか?分散システムでは、データ、メッセージ、HTTPリクエストなどを一意に識別するために、グローバルに一意なIDが必要になることがよくあります。このグローバルに一意なIDは分散IDと呼ばれます。 2. 分散 ID が必要な理由は何ですか?1. ID にデータベースの自己増分型を使用すると、分散システムでシャーディングが必要な場合に、同一のテーブルが 2 つ存在し、主キーの競合が発生する可能性があります。 2. 電子商取引の注文番号は、最も単純な生成ルールである自己増分方式を使用します。しかし!この注文番号はシリアル番号と同じなので、競合他社が貴社の実際の運営情報を簡単に見ることができるようになります。 3. 分散 ID はどのような条件を満たす必要がありますか?グローバルに一意: IDはグローバルに一意である必要があります 高パフォーマンス: 高可用性と低レイテンシ。 ID 生成の応答は高速である必要があります。そうでないと、ビジネスのボトルネックになります。 高可用性: 100% の可用性は誤解を招く恐れがありますが、可能な限り 100% の可用性に近づける必要があります。 容易なアクセス: すぐに使用できる設計の原則に従い、システムの設計と実装を可能な限りシンプルに保つ 増加傾向: 増加傾向にあるのが最適です。この要件は特定のビジネス シナリオによって異なり、通常は厳密に必須ではありません。 セキュリティ: ID が継続的に生成されると、業務情報が漏洩し、推測される可能性もあるため、ランダムで不規則な ID が必要です。 読みやすさ: 長くなりすぎないようにしましょう。アフターサービス中にユーザーがすでに不安な気分になっていると想像してください。非常に長い注文番号を報告/入力するように依頼すると、エラー率が高くなりやすく、顧客のイライラが増すだけです。注文番号が長すぎる場合は、別の方法として、文章に分割します。 スケーラビリティ: Taobao の注文番号は元々 12 桁または 14 桁でしたが、現在は 16 桁になっています。ウェブサイトの取引量は年々増加しており、必然的に注文番号も長くなっていきます。 4. 分散ID生成方式
注: 主流のID生成方式は、データベースセグメントモードとスノーフレークアルゴリズムに基づいています。 5. 利点と欠点1. UUIDに基づくアドバンテージ:
欠点:
2. データベースに基づいてIDを自動増加ID が必要な場合は、テーブルにレコードを挿入して主キー ID を返します。しかし、この方法には致命的な欠点があります。アクセス数が急増すると、MySQL 自体がシステムのボトルネックになります。分散サービスを実装するためにこれを使用することはリスクがあり、推奨されません。 アドバンテージ: シンプルな実装、単調に増加するID、数値型の高速クエリ速度 欠点: DBの単一ポイントではダウンタイムのリスクがあり、高同時実行シナリオを処理できません。 3. データベースクラスタモードに基づく前述のように、シングルポイントデータベース方式は推奨されないため、上記の方式に高可用性の最適化をいくつか加え、マスタースレーブモードのクラスターに変更しましょう。マスターノードに障害が発生して使用できなくなることが心配な場合は、デュアルマスターモードのクラスターを作成できます。つまり、2 つの MySQL インスタンスが独立して自動増分 ID を生成できます。すると別の問題が起こります。 2 つの MySQL インスタンスの自動増分 ID はどちらも 1 から始まります。重複した ID が生成された場合はどうすればよいですか? 解決策: 開始値と増分ステップサイズを設定する MySQL_1 の設定:
MySQL_2 の設定:
2 つの MySQL インスタンスの自動インクリメント ID は次のとおりです。
クラスターのパフォーマンスが依然として高い同時実行性に耐えられない場合はどうなるでしょうか? MySQL を拡張してノードを追加する必要がありますが、これはかなり面倒な作業です。 3 番目の MySQL インスタンスを追加するには、最初の MySQL インスタンスと 2 番目の MySQL インスタンスの開始値とステップ サイズを手動で変更し、3 番目のマシンの開始 ID 生成位置を既存の最大自動増分 ID の位置から離れた位置に設定する必要があります。ただし、これは、最初の MySQL インスタンスと 2 番目の MySQL インスタンスの ID が 3 番目の MySQL インスタンスの開始 ID 値に達する前に実行する必要があります。そうしないと、自動増分 ID が重複し、必要に応じて変更するためにマシンをシャットダウンする必要がある場合があります。 アドバンテージ:
欠点:
4. データベースベースの数値セグメントモード番号セグメントモードは、現在の分散 ID ジェネレータの主流の実装方法の 1 つです。番号セグメント モードは、データベースから自動増分 ID をバッチで取得することとして理解できます。数値セグメントの範囲がデータベースから取り出されるたびに、たとえば [1,1000] は 1000 個の ID を表します。特定のビジネス サービスは、この数値セグメントを使用して 1 から 1000 までの自動増分 ID を生成し、メモリにロードします。 複数の業務端末が同時に稼働する可能性があるため、バージョン番号は楽観的ロックを使用して更新されます。この分散 ID 生成方法は、データベースに強く依存せず、データベースに頻繁にアクセスせず、データベースにかかる負荷が大幅に軽減されます。 5. RedisベースモードID のアトミックな自己増分を実現するには、redis incr コマンドを使用します。
Redis を使用する際に注意すべき点の 1 つは、Redis の永続性の問題を考慮する必要があることです。 RedisにはRDBとAOFの2つの永続モードがあります。
6. スノーフレークベースのモデルSnowflake は、Twitter の内部分散プロジェクトで使用される ID 生成アルゴリズムです。 Snowflake は Long 型の ID を生成します。 Long 型は 8 バイトを占め、各バイトは 8 ビットを占めるため、Long 型は 64 ビットを占めることになります。 Snowflake ID 構造は、正の数字 (1 ビット) + タイムスタンプ (41 ビット) + マシン ID (5 ビット) + データ センター (5 ビット) + 自動増分値 (12 ビット) の合計 64 ビットの Long 型で構成されます。
このアルゴリズムのロジックによれば、このアルゴリズムを Java 言語で実装し、ツール メソッドにカプセル化するだけで済みます。その後、各ビジネス アプリケーションはこのツール メソッドを直接使用して分散 ID を取得できます。分散 ID を取得するために別のアプリケーションを構築することなく、各ビジネス アプリケーションが独自の作業マシン ID を持つことを確認するだけで済みます。 現在、スノーフレーク アルゴリズムには時間ロールバックの問題があり、異なるマシンで時間が完全に同じであることを保証できないため、重複の問題が発生する可能性があります。 7. 美団(葉)Leaf は Meituan によって開発され、切り替え可能な数値セグメント モードとスノーフレーク アルゴリズム モードをサポートしています。 |
<<: Redisson 分散ロック ソースコード 11: セマフォと CountDownLatch
>>: 分散トランザクションを解決するにはどうすればいいでしょうか?きっぱりと明らかにしましょう!
今日の SEO は独創性の時代です。Web サイトのオリジナル コンテンツが多ければ多いほど、SEO...
Rap "indescribable" Node は、IDC 業界で 10 年以...
オーストラリアの VPS 業者である flowvps [Alpha Layer Pty Ltd (A...
産業部門は、比類のない精度、正確さ、品質を得るために、急速に自動化へと移行しています。高度な計測ソリ...
現在、raksmart は zhujimao.com 向けに特別にカスタマイズしたクラスター サーバ...
マレーシアのサーバープロバイダーmondozeは10年の歴史があると言われています。主にマレーシアの...
最近は、Web ページにさまざまな共有コードを埋め込むのが流行っているようです。使用するかどうかに関...
序文最近、分散トランザクションに関するブログ投稿をいくつか読んで、メモを取りました。ハハハ〜データベ...
マイクロサービスはますます普及しており、ますます多くの企業がマイクロサービス アーキテクチャを採用し...
インターネット マーケティングの時代では、Baidu、Google、360 が 3 大検索エンジンで...
この投稿は、OpenTelemetry の基本的な理解を深めることを目的としています。取り上げるトピ...
Servarica は、500G ハード ドライブで年間 12 ドルという低価格の高構成のカナダ V...
Acenet は 2003 年に設立され、IDC サービスで 10 年以上の経験があると主張していま...
「貞操の女神」屠世有氏は、結婚前の貞操を主張することで自身の選挙運動を盛り上げたことについて質問され...
Green Radish Algorithm のリリース後、多くのウェブサイトが格下げされたり、K ...