Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install...

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

Transcript of Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install...

Page 1: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

Droongaの紹介

未来検索ブラジル森大二郎

Page 2: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

今日の内容

Droongaとは?

設計方針

実装

現状

今後の予定

Page 3: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

Droongaって何ですか?

Distributedの"D"

リアルタイム分散処理エンジン

分散データストア

分散型全文検索エンジン

Page 4: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

設計方針

ストリーム指向

リアルタイム指向

可用性重視

拡張性重視

Page 5: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

ストリーム指向

Page 6: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

ストリーム処理

Page 7: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

ストリーム処理

入出力:JSONデータストリーム

入力データを処理

データストアを参照・更新(必要なら)

0個以上のデータを出力

Page 8: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

カスケードして様々な処理

Page 9: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

分散検索エンジンも..

Page 10: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

リアルタイム指向

Page 11: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

ここで言うリアルタイム:

情報が発生したら

必要とする人に

最短の遅延時間で届ける

...そのために

Page 12: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

情報を受け取ったら

索引をすぐに更新する

購読してた人に即届ける

Page 13: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

リアルタイム指向

Page 14: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

可用性重視

shared nothing

レプリケーション

結果整合性重視

Page 15: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

拡張性重視

Pluginで機能拡張

Rubyで書ける!

Page 16: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

Pluginで拡張

Page 17: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

実装

二つのコンポートネント

Protocol Adapter

Droonga Engine

Page 18: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

コンポーネント

Page 19: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

Droonga Engine

実処理エンジン

複数エンジンでクラスタを構成

通信: MessagePack Stream

Fluentdのplugin

Page 20: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

Protocol Adapter

APIを提供HTTP(Rest) API

Socket.IO(WebSocket) API

Node.JS上で動作

Expressのplugin

Page 21: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

Engineのモジュール構成

Page 22: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

モジュール構成

Adapter: JSONデータを整形

Dispatcher: 処理フローを計画

Distributor:データを配布

Handler: 実処理

Collector: データを集約

Page 23: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

クラスタの構成

1クラスタに複数のdataset

dataset毎にpartition/replica数を設定

ハッシュ値と世代でpartition

catalog.json全パーティション構成を記述

全ノードで共有

Page 24: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

クラスタの構成

Page 25: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

現状

version0.7.0 リリース!

http://droonga.org/

分散検索が一通り動作!

チュートリアルあります

Page 26: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

使い方

gem install fluent-plugin-droongafluentd.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

Page 27: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

今後の予定

version0.8.0 (安定版)

2013/12/29リリース予定

version0.9.0 (開発版)

Groonga Http Server互換機能2014/1/29リリース予定

version1.0.0 (安定版)

2014/2/9リリース予定

Page 28: Droonga の - Rabbit Slide Show · Droonga の 紹介 Powered by Rabbit 2.1.1 使い方 gem install fluent-plugin-droonga fluentd.confとc atalog.jsonを 準備  type

Droonga の 紹介 Powered by Rabbit 2.1.1

協力者募集してます!

バグレポート

Plugin開発