Java Web分散ディスカッションやソリューションのよくある質問章(ID /冪等/セッション/ロック)

Javaのウェブシリーズの概要が掲載さ:のJava Web知識の要約の要約を


分散ID

分散IDの共通のデザイン:

  • 1、又は成長分野(不利な点:不良や性能の問題の可能性のある単一のポイント)からの配列データベース
  • 2、UUID(短所:増加し、伝送容量、大きな収納スペース、低クエリ効率を保証することはできません)
  • 3、UUID-> INT64、秩序を確保するためにタイムスタンプを追加
  • 4、Redisの生成、アトミックオペレーションINCRとINCRBY Redisのを実装することができます
  • 。5、スノーフレークアルゴリズムTwitterの
    スノーフレークをツイッターIDオープン生成アルゴリズムを分散され、結果が長いタイプのIDです。その核となるアイデアは、次のとおりミリ秒IDの41bitとして使用し、機械(5ビット・データ・センター、5ビットのマシンID)のような10ビット、12ビットは(各ノードは、MSにおけるシリアル番号などミリ秒ごとに生成されてもよいことを意味します4096 ID)は、最終的に符号ビットは常に0であります。
  • 。6、ZooKeeperの生成
    32ビットと64ビットのデータのバージョン番号を生成することができ、クライアントは一意のシリアル番号として、バージョン番号を使用することができZooKeeperの主数列は、そののznodeデータバージョンによって生成されます。
    まれにユニークなIDを生成するために、飼育係を使用していません。主のZooKeeperを依存する必要のために、そしてAPIは、多段階で、大規模であれば、競争力、分散ロックの使用を考慮する必要があります。そのため、高い同時分散環境でのパフォーマンスだけでなく、理想的な未満。

多く:
分散システム固有のID生成スキームの概要


冪等

基本コンセプト

ユーザーまたは開始した同じ操作の複数の要求のための要求の結果が同じで、複数のクリックは、副作用を生成しませんです。このような複数のクリックなどのように電荷を繰り返し、することはできません。

ソリューション

  • 1、各要求は、一意の識別子を持っている必要があります。
  • 図2は、要求を処理した後、レコードは、要求識別子がデータベースに格納されてもよい処理しておく必要があります。
  • 図3に示すように、各要求は、所望の決意まで処理されます。上記のように再度挿入処理データベースレコードID、一意キー制約、に格納され、それが説明します。
  • 4、上記の操作は一例であり、Redisのご注文は、保存された一意のキーORDER_IDとして使用し、水の唯一の成功した挿入を支払う、このような順序の支払シナリオとして、独自のビジネスプロセスの組み合わせを必要とし、あなたが実際に充電することができ、ステータスチェック、実際の処理を前に、注文の状態を確認し、直接バック状態に加工し、加工前に対処していません。

もっと:
冪等の深い理解


分散キャッシュ

  • 1、ページキャッシュ、ブラウザのキャッシュ
  • 2、ネットワークキャッシュ(Webプロキシキャッシュ、CDN)
  • 図3に示すように、サーバ側のキャッシュ(例えばRedisのようなMySQLの、アプリケーションレベルのキャッシュなどのキャッシュ・データベース)
  • 図4に示すように、マルチレベル・キャッシュ・アーキテクチャ:nginxのローカルキャッシングホットデータキャッシュが問題を解決し、Redisのアクセス速度を減少させるためにソースにキャッシュを分散、Tomcatのキャッシュをキャッシュミスの影響に抗し/崩壊した後、データベースにクエリ効率を向上させます

より:
「キャッシュ深さを分散:原則から実践する」学習ノート(1)
研究ノートを「分散キャッシュ深練習する原則からの」(2)


分散ロック

三つの方法:

  • 1、zoopkeeper - 一時的なノード特性
  • 2、Redisの - setnx特性
  • 図3に示すように、データベースの実装 - 唯一の制約は、更新のために排他的ロック

詳細:
分散ロックのいくつかの使用(Redisの、飼育係、データベース)


分散セッション

クッキー与セッション

クッキー

何ですか

ユーザーがHTTPプロトコルを介してサーバにアクセスすると、サーバーは次のようになります条件が満たされた場合、キー/値のキーと値のペアの数(クッキー)は、いくつかの制限とクライアントのブラウザに、これらのデータには、このユーザーを返さこのサーバを訪問する時間は、データの整合性は、サーバーに戻されました。

何故

時間の動作パスの期間にわたってウェブにアクセスするユーザーを記録するために。HTTPプロトコルはステートレスなプロトコルであるので、あなたはパフォーマンスを向上させるために、特定のユーザーのデータのキャッシュを行うことができないので、サーバーは、ユーザーの最後の訪問を訪問するか、しないように次の時間を知ることができません。この効果はクッキーであり、クライアントによって送信されたすべての要求は、(典型的には、HTTPヘッダ情報に)提供されるサービスにアクセスするための最初の情報端末と同様であるので、サーバは、分割されたクッキー値に応じてアクセスすることができますユーザー。

良いです

利点:

  • 分散の問題を解決するために、簡単に使用するのは簡単

短所:

  • 図1に示すように、ブラウザの記憶制限、制限メモリサイズと数(数はクッキー50全体のサイズは4キロバイトを超えていない制限されています)
  • 2、クッキー管理の混乱は、各アプリケーションは独自のクッキーを持っています
  • 3、セキュリティ、ブラウザでストレージを簡単に盗まれたり改ざんすることができます

セッション

何ですか

クッキーの前に導入されたサーバプログラムは、各クライアントの訪問を追跡することができますが、各クライアントのアクセスは、これらのクッキーを返さなければならない場合はクッキーの目に見えないデータ転送、クライアントとサーバーの容量を増やす多く、およびセッションそれは、この問題を解決するために、正確に表示されます。

毎回同じクライアントとサーバの相互作用時間は、常にすべてのCookie値を返す必要がありますが、限り、生成されたときに、クライアント・サーバへの最初の訪問でリターンID、など、それぞれませんクライアントはユニークです。各クライアントが固有のIDを持つことになりますように、限り、クライアントがオンラインにこのIDを返すように、このIDは通常、クッキーJSESIONIDのNANEです。

良いです

長所:安全、繰り返しシーンの正当性は、トークンによって生成することができる検証するなど、フォームを提出
簡単に複数のサーバー間で共有することはありません。欠点。

概要

クッキーとセッションは、一方で達成するためにビジネスを促進することである一方、アクセス性能を向上させ、サービスの手続きを簡素化するために設計されたが、それはまた別のものを持っている、そのように維持する理由をユーザアクセスの連続した状態を維持することですこのようなセキュリティ上の問題、クロスドメインのセッションとセッションによって引き起こされる展開同期同期の問題を分散一連の質問のアプリケーション、およびこれらの問題のようないくつかの課題は、分散フレームワークセッションで解決することができます。

どのように行う分散セッション

分散セッションは、問題を解決します

これらの質問は、クッキーを持っているので、セッションやクッキーと一緒にそれを使用しない理由は、セッションも、その利点を持っていますか?ここでは、分散されたセッションフレームワークは、問題を解決することができます:
統一された管理◎セッション構成を。
◎モニタリングおよび標準化された管理のクッキーを使用。
◎多様なセッションストア。
◎セッションは、動的に設定を変更します。
◎セッションの暗号化キーを定期的に変更されます。
◎十分な災害復旧メカニズムは、使用の枠組みの安定性を維持します。
◎セッションさまざまなストレージの監視と警報のサポート。
wapSessionとしてより多くのセッションメカニズムと互換性のある拡張性◎セッションフレーム。
どの◎セッションとクッキークロスドメイン同じサイトを共有し、今で複数のドメイン名がある可能性があり、セッションとクッキーを共有する方法は、異なるドメイン間で困難な問題です。

どのように分散セッションを構築します

  • 図1は、配位クッキー、統合管理クッキーの一貫性にZooKeeperの及び他の高可用性ストレージコンポーネントを使用して、パブリッククッキーをプッシュする加入します。
  • 図2に示すように、セッションTAIRを格納するようMemcacheの等分散キャッシュシステムは、図セッションの分散アーキテクチャ:

おすすめ

転載: blog.csdn.net/zangdaiyang1991/article/details/92104447