レプリケーション
同じものをもう1つ置く
この章の最初に、読みが98パーセントを占めると分かりました。読みを減らす手の1つが複製です。
書き込みは1台に集め、その中身をそっくり写した台をいくつか用意します。読みはその写しから返します。
書く台を primary、写した台を replica と呼びます。
返ります。複製は必ず遅れます。
空席の表示が1秒古くても困りませんが、予約した直後に自分の予約が見えないのは困ります。
書いた直後に読む場面だけ primary から読む、という決め方をします。
複製は書き込みを楽にしない
複製を3つに増やせば、読みは3台で分けられます。
書き込みは増えません。むしろ3台へ配るぶん重くなります。
Python
# 読み replica へ順番に
# 書き primary ひとつだけある所で止まります。増やすほど、書いた内容を配る相手が増えるからです。
読みを楽にする手は、書きを重くします。 読みが98パーセントだから成り立つ手であって、書きが多いサービスでは逆効果です。
演習
読み書きの並びと複製の一覧を受け取り、それぞれをどこへ送るかを返します。
要件
- write は必ず "primary" へ送る
- read は replicas へ順番に送る。何件目の読みかで replicas[読みの番号 % 複製の数] を選ぶ
- 複製が1つも無いときは read も "primary" へ送る。offloaded は複製へ送れた読みの数
ヒント
編集 ゆめさく編集部