TL;DR
- Netflix は分散インメモリのキーバリューストアである EVCache を 4 つの用途で使い、コンテンツを素早く届けている。
- 用途は、ルックアサイドキャッシュ、一時データの置き場、主ストア、大量に読まれるデータの配信である。
内容
はじめに
記事によると、ユーザは見る作品を約 90 秒で決めるので、コンテンツを速く届けることが大切になる。そこで中心になるのが、分散インメモリのキーバリューストアである EVCache である。
ルックアサイドキャッシュ
アプリはまず EVCache を見て、なければバックエンド(Cassandra など)から取得し、その結果を EVCache に入れる。レイテンシが下がり、バックエンドとデータベースの負荷も減る。ホーム画面のおすすめやサムネイルがその例である。
一時データの置き場
頻繁に変わるが永続化しなくてよいデータを EVCache に置く。代表は再生セッションの状態で、再生位置や端末の情報を、セッション中にほかのサービスが更新する。ある端末で一時停止し、別の端末で続きから見られるのはこの仕組みによる。セッションのデータは終了時に捨てるか、分析用に永続的なデータベースへ移す。
主ストア
EVCache がキャッシュではなく、主なデータストアになる場合もある。パーソナライズされたホーム画面は、ユーザごとに毎晩計算される。大規模な事前計算の仕組みが視聴履歴や好みを分析し、その結果のページ構成を EVCache に書き込んでおくので、次のログインで素早く返せる。ピーク時の計算も減る。
大量に読まれるデータ
UI の文字列や翻訳のように、読み取りが多く高い可用性が必要なデータにも使う。タイトルや説明、メニューの文言は、別の非同期処理が計算して公開する。世界中のユーザ向けのローカライズと、高負荷時の信頼性を両立できる。
キーワード
- EVCache
- ルックアサイドキャッシュ
- キーバリューストア
- Cassandra