Rabbit Slide Show

Droongaの紹介

2013-11-29

Description

スケーラブルのデータ処理エンジンDroongaの設計方針と実装方法について説明します。

Text

Page: 1

Droonga
の
紹介
未来検索ブラジル
森大二郎
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 2

今日の内容
Droongaとは?
設計方針
実装
現状
今後の予定
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 3

Droongaって何ですか?
Distributedの"D"
リアルタイム分散処理エンジン
分散データストア
分散型全文検索エンジン
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 4

設計方針
ストリーム指向
リアルタイム指向
可用性重視
拡張性重視
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 5

ストリー
ム指向

Page: 6

ストリーム処理
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 7

ストリーム処理
入出力:JSONデータストリーム
入力データを処理
データストアを参照・更新
(必要なら)
0個以上のデータを出力
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 8

カスケードして様々な処理
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 9

分散検索エンジンも..
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 10

リアルタ
イム指向

Page: 11

ここで言うリアルタイム:
情報が発生したら
必要とする人に
最短の遅延時間で届ける
...そのために
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 12

情報を受け取ったら
索引をすぐに更新する
購読してた人に即届ける
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 13

リアルタイム指向
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 14

可用性重視
shared nothing
レプリケーション
結果整合性重視
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 15

拡張性重視
Pluginで機能拡張
Rubyで書ける!
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 16

Pluginで拡張
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 17

実装
二つのコンポートネント
Protocol Adapter
Droonga Engine
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 18

コンポーネント
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 19

Droonga Engine
実処理エンジン
複数エンジンでクラスタを構成
通信: MessagePack Stream
Fluentdのplugin
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 20

Protocol Adapter
APIを提供
HTTP(Rest) API
Socket.IO(WebSocket) API
Node.JS上で動作
Expressのplugin
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 21

Engineのモジュール構成
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 22

モジュール構成
Adapter:
JSONデータを整形
Dispatcher: 処理フローを計画
Distributor:データを配布
Droonga の 紹介
Handler: 実処理
Collector: データを集約
Powered by Rabbit 2.1.1

Page: 23

クラスタの構成
1クラスタに複数のdataset
dataset毎にpartition/replica
数を設定
ハッシュ値と世代でpartition
catalog.json
全パーティション構成を記述
全ノードで共有
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 24

クラスタの構成
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 25

現状
version0.7.0 リリース!
http://droonga.org/
分散検索が一通り動作!
チュートリアルあります
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 26

使い方
gem install fluent-plugin-droonga
fluentd.confとcatalog.jsonを準備
<source>
type forward
port 24224
</source>
<match taiyaki.message>
name localhost:24224/taiyaki
type droonga
proxy true
</match>
<match output.message>
type stdout
</match>
fluentd --config fluentd.conf &
fluent-cat taiyaki.message < jsons
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 27

今後の予定
version0.8.0 (安定版)
2013/12/29リリース予定
version0.9.0 (開発版)
Groonga Http Server互換機能
2014/1/29リリース予定
version1.0.0 (安定版)
2014/2/9リリース予定
Droonga の 紹介
Powered by Rabbit 2.1.1

Page: 28

協力者募集してます!
バグレポート
Plugin開発
Droonga の 紹介
Powered by Rabbit 2.1.1

Other slides