SlideShare a Scribd company logo
なぜRiakが良いのか
@saisa6153
冗長性

{k:’v’}

どこに書き込んでも
データは複製されて
同じ値を読み出せる

{k:’v’}
耐障害性/高可用性

{k:’v’}

NW/HW障害が発生しても
他ノードが機能を代替して
生存ノードから読み出せる

{k:’v’}
更新可能性

{k:’w’}

変更を書き込んでも
更新内容は伝搬して
最新の値を読み出す

{k:’w’}
実際の使用例
インターネット/外部システム
外部アクセスのバランシング
アプリケーションサーバ

LB
web

内部アクセスのバランシング
Riakクラスタ

SW

Riak

web
LB
Riak

Riak
実際の使用例

LB
web

web
LB

マシンが壊れても

Riak

Riak

Riak
実際の使用例

LB
web

web
LB

NW障害が発生しても
Riak

Riak

Riak
実際の使用例

LB
残り2台が頑張る!
web
\ここは俺達に任せて(ry/
____________________
    <○√    <○√
      ∥       ∥
     くく     くく

web
LB
Riak

Riak
実際の使用例

LB
web
翌朝マシンを追加すれば...
Riak

web
LB
Riak

Riak
Node1

Node2

Node3

欠けていた間の差分を自動で送信
実際の使用例

もとどおり!!
システムも止まらない!!

LB
web

web
LB

Riak

Riak

Riak
データベースといえば
これがMySQLだと

ここらへんは一緒

LB
web

書き込みはMasterに
Masterへの書き込みはSlaveに複製
読み出しはSlaveに

Master

web

Slave
これがMySQLだと

LB
web

Masterが死んだら...

web

Master

Slave
これがMySQLだと

LB
web

Slaveが死んだら...

web

Master

Slave
そうだ冗長化しよう!!
冗長化しよう!!
LB
変更を書き込むSlaveを
複数に設定
↓
Slaveが一台壊れても
大丈夫

web

web
LB

Master

Slave
Slave
冗長化しy...
LB
web

web
LB

Master

Slave
Slave
冗長化した...
<Active-Standby構成>
・普段はMaster:Aが
 アクセスを受ける
・AとSは相互に死活監視
・Aからの応答がない場合、
 MasterのIPをSに振る
・以後、Master:Sが
 Masterとして振る舞う

LB
web

Master:A

web
LB
Slave

Master:S

Slave
LB

LB
web

web

web

LB
Master:A
Riak

Riak

Riak
Master:S

web
LB
Slave
Slave

Riak簡単!!台数も少ない!!
もちろんRiakにも不得意分野がある
● 強い整合性が求められるデータ
○ 課金情報

● 応答速度を求められるデータ
○ セッション情報

→こういった分野は別のDBを用いるべき
むしろRiakは他のDB製品に比べて
● 実績が少ない
● ユーザが少ない
● 使いはじめるまでが簡単ではない
しかし現実は非情
「一体いつから---  データ量が増えないと錯覚していた?」

「DBサーバ追加...だと..?」
「一体いつから---  webサーバは故障しないと錯覚していた?」

「再設定...だと..?」
オペミスなどによって
システムが停止すると
鳴り止まない、電

話

第
参
話
稼働後のシステムは
止められない
変わるトポロジ
変えられないサービス
日々増大する複雑さと
莫大なトラフィック/データに
立ち向かう
運用
運用者に優しいDB
Riakはなぜ良いのか
おしまい

More Related Content

Riakはなぜ良いのか