序文 一部のプロジェクトの初期段階では、シンプルさとスピードのために、開発と展開は単一のマシンで行われます。しかし、ビジネスが拡大したり、可用性の要件が高まったりすると、単一マシン環境ではニーズを満たせなくなります。単一マシン展開から複数マシン展開に切り替える場合、セッション共有が重要な手順になることがあります (最初からトークンベースの認証を使用している場合は無視できます)。この記事では、コードを侵入することなくセッション共有を迅速に実装できる、Redis ベースの Tomcat セッション管理オープンソース プロジェクト redission-tomcat を紹介します。 導入 Redisson は Jedis に似た Redis クライアントですが、Jedis よりも豊富な機能を備えています。 redission-tomcat は、redis をベースにした Tomcat セッション マネージャー プロジェクトです (プロジェクト アドレス)。他の実装と比較して、このプロジェクトのストレージはより効率的であり、書き込み操作はより最適化されています。各セッション パラメータは、HttpSession.setAttribute を呼び出すときに redis に書き込まれますが、他のソリューションでは通常、セッション全体がシリアル化され、毎回書き込まれます。 使用 1. 2 つの jar パッケージ redisson-all-3.11.0.jar と redisson-tomcat-8-3.11.0.jar (tomcat8 の場合、他のバージョンは上記のプロジェクト アドレス ページにあります) をダウンロードし、tomcat の lib ディレクトリに配置します。 2. tomcat confディレクトリのcontext.xmlファイルに次の設定を追加します。 <Manager クラス名="org.redisson.tomcat.RedissonSessionManager" configPath="${catalina.base}/conf/redisson.conf" readMode="MEMORY" updateMode="AFTER_REQUEST" ブロードキャストセッションイベント="false"/> で
3. tomcat confディレクトリに新しい設定ファイルredisson.confを追加します。内容は次のとおりです。 { "シングルサーバー構成":{ "アイドル接続タイムアウト":10000, "接続タイムアウト":10000, "タイムアウト":3000, "再試行回数":3, "再試行間隔":1500, "パスワード":"123456", "接続ごとのサブスクリプション":5, "クライアント名":null, 「アドレス」: 「redis://127.0.0.1:6379」、 "サブスクリプション接続最小アイドルサイズ":1, "サブスクリプション接続プールサイズ":50, "接続最小アイドルサイズ":24, "接続プールサイズ":64, "データベース":0, "dns監視間隔":5000 }, 「スレッド」:16, "nettyスレッド":32, 「コーデック」:{ "クラス":"org.redisson.codec.FstCodec" }, "トランスポートモード":"NIO" } 上記はスタンドアロン モードの redis 環境構成であり、パスワードとアドレスは独自の値に変更されます。クラスタモードの場合、設定ファイルは { "sentinelServersConfig":{ "アイドル接続タイムアウト":10000, "接続タイムアウト":10000, "タイムアウト":3000, "再試行回数":3, "再試行間隔":1500, "失敗したスレーブ再接続間隔":3000, "失敗したスレーブチェック間隔":60000, "パスワード":null, "接続ごとのサブスクリプション":5, "クライアント名":null, 「ロードバランサー」:{ "クラス":"org.redisson.connection.balancer.RoundRobinLoadBalancer" }, "サブスクリプション接続最小アイドルサイズ":1, "サブスクリプション接続プールサイズ":50, "スレーブ接続最小アイドルサイズ":24, "スレーブ接続プールサイズ":64, "マスター接続最小アイドルサイズ":24, "マスター接続プールサイズ":64, "読み取りモード":"スレーブ", "サブスクリプションモード":"スレーブ", "センチネルアドレス":[ "redis://127.0.0.1:26379", 「redis://127.0.0.1:26389」 ]、 "マスター名":"マイマスター", "データベース":0 }, 「スレッド」:16, "nettyスレッド":32, 「コーデック」:{ "クラス":"org.redisson.codec.FstCodec" }, "トランスポートモード":"NIO" } 負荷分散を実現するためにnginxを使用することができます。設定を参照してください。 アップストリーム cnserver{ サーバー 127.0.0.1:8080 重み=2 fail_timeout=10s max_fails=1; サーバー 127.0.0.1:8081 重み=2 fail_timeout=10s max_fails=1; } サーバー{ 聞く 80; server_name ローカルホスト; インデックス index.html index.htm; 場所 /rest/ { インデックス index.html; proxy_pass http://cnserver/rest/; } } 上記は、redisson-tomcat を使用して単一マシン展開から複数マシン展開までを実装するためのすべての構成です。 要約する ビジネスの発展に伴い、技術アーキテクチャも進化し続けます。ビジネス開発の初期段階では、ユーザー数やビジネスの複雑さは比較的低く、迅速なオンライン検証を実現するために、シンプルで単一のアーキテクチャが採用されることが多いです。多くのプロジェクトは、アーキテクチャを進化させてアップグレードする時間がないうちに失敗する可能性がありますが、幸運にも成長を続けるプロジェクトは、ビジネスの拡大に合わせて必然的に継続的に最適化およびアップグレードされます。 この記事で紹介した redisson-tomcat は、もちろんセッション管理リンク内でのみ、単一マシン プロジェクトを複数マシン サポートに素早く切り替えるのに役立ちます。ファイルのアップロード、スケジュールされたタスクなどの他の分散サポートが関係する場合は、対応する調整を行う必要があります。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
目次1. Reduxを選ぶ理由2. Reduxデータフロー3つの原則4. Reduxソースコード分析...
Go は、シンプルで信頼性が高く、効率的なソフトウェアを簡単に構築できるオープンソース プログラミン...
この記事では、Docker のマルチステージ ビルド機能を使用してイメージ サイズを大幅に削減する方...
今日もまた罠に落ちてしまいました。 私は以前MySQLの主キーオーバーフローに遭遇したことがあり、そ...
目次1. setState は同期的ですか?非同期ですか? 2. 非同期的に動作する1. React...
目次1. uniappプラグインマーケットのリファレンスプラグイン2. 具体的な導入プロセス1. m...
PCIE には 4 つの異なる仕様があります。下の図でそのうちの 2 つを見てみましょう。マザーボー...
序文ORDER BY 字段名升序/降序、このソートステートメントは皆さんご存知だと思いますが、特殊な...
目次utf8mb4 の紹介UTF8 バイト数超過エラーutf8mb4 サポートデフォルトの文字エンコ...
目次序文根拠手順1. CDから仮想マシンを起動する2. GPartedツールを使用してパーティション...
1. 基本的な Spring-boot クイックスタート1.1 クイックスタート pom.xml は...
目次序文: 1. インデックスメソッドを作成する2. インデックスを作成するために必要な権限序文: ...
目次1. ESXiをインストールする2. ESXiをセットアップする3. ESXiを起動するESXi...
次に、ログ管理、ログのアーカイブ、ログのトラブルシューティング、イベントの転送と収集のためのコンピュ...
目次導入1. one-click.jsとは2. パッケージングツールはどのように機能しますか? 3....