1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【マイクロサービス】Redis分散キャッシュのすすめ

Last updated at Posted at 2019-12-01

最近、マイクロサービスでRedisの使い方について考える機会があったので。

#キャッシュとは
ざっくり言うと、キャッシュとはメモリー内に保存されているデータです。
そのため、データベース等のディスクに保存されているデータよりも速いCRUDオペレーションが可能です。

#マイクロサービスでのstate管理
マイクロサービスでキャッシュシステムを導入する動機の多くはstate管理にあると思います。

これはkubernetes等のオーケストレーションサービスを使用した場合、インスタンス同士でのstate共有が困難なためです。

例えば、下記のデザインがあったとします。

micorservice: blog_service
pod: blog_service_1, blog_service_2

もし blog_service_1, blog_service_2 が各自のstateをサービス内のみで管理していると
blog_service_1からのレスポンスはblog_service_2からのものとは、別になってしまう可能性があるからです。

そのためstate管理の責任をキャッシュに任せることで
blog_service_1, blog_service_2 は同等のstateを参照することが可能になります。

#なぜ分散キャッシュを使用するのか
###理由1. メモリー容量以上のデータサイズに対応するため
キャッシュのメモリー内にデータを保存するという特性上、単一のキャッシュシステムのみではメモリーサイズ以上のデータを保存することが出来ません。
例えばサーバーのRAMが16GBだったとしたらキャッシュできるデータの上限は16GBということになります。

キャッシュデータを複数のノードで共有することで、この上限を伸ばすことが可能です。

###理由2. データレプリケーション
分散キャッシュは複数のノード使用するので、各ノードがお互いのデータを複製して保存することが可能です。
これにより、データロスプリベンションが可能です。

###理由3. HA (High Availability)
複数のノードが存在するため、master-slaveの関係をノード同士で構築することが可能です。
よって万が一、masterノードがダウンした時にでも、slaveノードを次のmasterに選出が可能です。

#分散キャッシュの王道: Redis
##Redisとは
Redisはin-memoryのデータストラクチャーを保存するシステムです。
特徴としては、データをメモリー内で処理するので高速です。
キャッシュやNoSQLデータベース、メッセージブローカーなど使用用途は様々です。

スナップショットやデータをディスク上に保存することも可能なので、in-memoryに限らない使用も可能です。
Twitterなどのサービスでキャッシュシステムとして採用されています。

##Redis Cluster とは
Clusterは複数のRedisインスタンス上にデータ保存を共有するシステムです。
なのでCluster自体はHAやデータの複製は行いませんが、データを複数のインスタンスに分散して保存することを可能にします。

Culsterを取り扱うはデータのサイズに応じて見極めるのが良いと思います。

##Redis Sentinel とは
Sentinelの主な役割はFailoverに自動的に対応することです。
master node がダウンしたときに、slave node のプロモーションを行うのはsentinelです。
なので、sentinel無しではHAは成し得ません。

加えて、nodeのモニタリングやアラートも対応してくれます。

プロダクションでは最低3つのsentinelインスタンスのデプロイが推奨されています。
個人的にはプロダクションでのsentinelの使用はマストだと考えています。

##参照
https://redis.io
http://23.253.120.235/sentinel-or-cluster/
https://thinkpalm.com/blogs/introduction-redis-sentinel-features-work/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?