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 投稿