狠狠撸

狠狠撸Share a Scribd company logo
ZooKeeperで分散処理
2014年11月24日
JavaEE勉強会 開発合宿 成果発表
Akihiro HARAI
行ったこと
● ZooKeeper(Server)を動作させる
● HaskellでWorkerを作成
○ 区間の中にある素数を列挙
○ 例)
■ Request: {"from": 100000, "to": 100099}
■ Response: [100003, 100019, 100043, 100049, 100057, 100069]
● 複数のWorkerを利用して高速に素数を見つけ
るClientを作成(Ruby)
● Serverで、利用できるWorkerを管理する
○ Workerは動的に増減する前提
システム構成
Server
(port: 2181)
Server
(port: 2182)
Server
(port: 2183)
Replication
Worker
(port: 3000)
Worker
(port: 3001)
Worker
(port: 3002)
???
Client
Ephemeral(はかない) Node 作成
例) create /prime/3002
セッションが切れると自動消滅使えるWorkerの問合せ
ls /prime
>> [3000,3001,3002]
Webサービス利用
例) http://localhost:3000 {"from":100000,"to":100099}
>> [100003, 100019, 100043, 100049, 100057, 100069]
ZooKeeper
デモ
Server
(port: 2181)
Server
(port: 2182)
Server
(port: 2183)
Worker
(port: 3002)
Worker
(port: 3001)
Worker
(port: 3000)
ZooKeeper
リアルタイムStatus
Client
デモの内容
● Workerを取り除く
● Workerを追加する
● Serverを1つ止める
● 止めたServerを復旧させる
● Serverを2つ止める
学んだこと
● 動作させるだけならZooKeeperは難しくない
● Haskellでwebサービスを作るのは難しい
○ 情報が多くない、古い
● HaskellでZooKeeperを扱うのは難しい
○ 情報が少ない
● RubyでWorkerを扱うClientを作るのは大変
○ 並行処理

More Related Content

Java EE勉強会 開発合宿 成果発表