Spring Boot アプリケーションクラスタリング時のセッション管理

問題シナリオ マイクロサービス環境において、アプリケーションをクラスタとして展開し、セッションを使用して値を取得・保存すると問題が発生します。Nginxなどのゲートウェイを通じてリクエストがランダムに分散されるため、あるリクエストはマシンAで処理され、次のリクエストはマシンBで処理される可能性があります。この場合、セッションIDは同じであるかもしれません ...

7月31日 18:39 投稿

.NET Core で Apache Kafka を利用した信頼性のあるメッセージ処理実装

オフセット管理を活用した重複処理防止の実装 Apache Kafka を .NET Core で利用する際、コンシューマーがメッセージを受信した後、Kafka が停止/再起動した際に重複処理が発生する問題があります。この問題を解決するため、Redis を活用したオフセット管理を実装します。 問題の背景 コンシューマーがメッセージを受信後、StoreOffset() を呼び出してオフセットを確認しま ...

7月31日 01:00 投稿

Javaバックエンド技術面接対策:トランザクション、分散システム、キャッシュ戦略

1. トランザクション処理 1.1 ローカルトランザクション ローカルトランザクションは通常、Springフレームワークによって管理されます。実装方法としてはプログラマティックな手法と宣言的な手法(`@Transactional`アノテーションなど)がありますが、一般的には宣言的手法が用いられます。Springのトランザクション管理はデータベースのトランザクション機能に依存してお ...

7月29日 06:35 投稿

Redis データ移行方法

1. redis-dump コマンドを使用する方法 Ruby のインストール(Rocky Linux 9) dnf -y install ruby ruby-devel Rubygems のデフォルトミラーを変更 # 登録済みミラーの確認 gem sources # 公式ソースの削除 gem source -r https://rubygems.org/ # 腾讯雲ミラーの追加 gem source -a http://mirrors.tencent.com/rubygems/ redis-dump のインストール gem install ...

7月28日 04:04 投稿

Redisを用いた分散ロックの実装手法

分散ロックの要件 分散システムで共有データを操作する際、複数プロセス間の調整が必要です。高可用性のある分散ロックは以下の特性を満たす必要があります: 同一メソッドが同時に単一ノードの単一スレッドで実行される ロック取得・解放の高パフォーマンス デッドロック防止のための有効期限機構 再入可能なロック取得 非ブロッキングな取得失敗時の動作 Redisスタン ...

7月26日 20:26 投稿

RedisのPub/Subによるリアルタイムメッセージングと活用パターン

Redisにおけるパブリッシュ/サブスクライブの仕組み Redisは、パブリッシュ/サブスクライブ(Pub/Sub)機能を内蔵しており、非同期で軽量なメッセージ通信を実現できます。この仕組みでは、送信側(パブリッシャー)が特定のチャンネルにデータを発行し、受信側(サブスクライバー)は対象チャンネルを監視することでリアルタイムにメッセージを受け取れます。 この通信モ ...

7月26日 18:28 投稿

Redisを用いたブログのいいね・フォロー機能の実装

ブログ投稿と閲覧機能の実装 ブログ投稿処理 @PostMapping public Result createBlogPost(@RequestBody BlogEntry blogEntry) { UserDTO currentUser = UserContext.getCurrentUser(); blogEntry.setAuthorId(currentUser.getId()); blogService.save(blogEntry); return Result.success(blogEntry.getId()); } 画像アップロード処理 @PostMapping("upl ...

7月24日 04:39 投稿

Redis設定ファイルガイド

Redis設定ファイルは、Redisサーバーの動作を制御する重要な設定ファイルです。以下に主要な設定項目とその説明を記載します。 基本設定 # デーモンとして実行するかどうか。yesに設定するとバックグラウンドで実行されます。 daemonize yes # PIDファイルのパスを指定します。複数のRedisインスタンスを実行する場合は、 # 各インスタンスで異なるPIDファイルとポート ...

7月23日 18:05 投稿

Spring Boot 2系でRedisクラスタおよびシングルノードを統合する方法

Spring Boot 2.3.0.RELEASE をベースに、Redisのシングルノードまたはクラスタモードを統合する手順を示します。 Maven依存設定(pom.xml) <!-- Redisサポート --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- JSON ...

7月22日 20:47 投稿

Redis実践的な応用テクニック

1. スロークエリ管理 Redisは5つの主要データ型をサポートしますが、O(n)のコマンド処理時間が長くなると、シングルスレッドアーキテクチャの特性上、他のコマンドがブロックされる可能性があります。Redisのシングルスレッドモデルは、同時実行時にロックを必要としない利点がありますが、コマンドの実行時間に注意が必要です。 Redisはスロークエリを記録する機能を提 ...

7月22日 02:49 投稿