STMの実⾏を開始する • readTVar − TVarから値を読む • writeTVar − TVarに値を書き込む • retry − TVarが更新されるまで待って、処理をやり直す HaskellのSTM STMの使い⽅ main = do tvar <- newTVarIO "ガッ" forkIO $ forever $ atomically $ do x <- readTVar tvar if x == "ガッ" then writeTVar tvar "ぬるぽ" else retry forever $ atomically $ do x <- readTVar tvar if x == "ぬるぽ" then writeTVar tvar "ガッ" else retry
ZooKeeper • Frontend サーバ • Control サーバ • Flare Indexサーバ • Flare ノード STMの使⽤例 KVS⾃動運⽤システム Zookeeper Zookeeper Control Control Control Control Zookeeper Frontend Frontend Frontend Frontend Flare Index Flare Index Flare Index Web Servers Web Servers Web Servers Flare Flare Flare ノードの監視・制御 構築・管理 KVS⾃動運⽤システム アプリケーション 構築・管理 get/set get/set