Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome or Safari browser. Firefox 10 (to be released soon) will also handle it.

Better Groonga Replication

Yappo

ConoHa presents - Groonga "How-To" Talks

今日の概要

僕が Mroonga に頼らずに Groonga で replication 構成を作った理由と実装を紹介します

そのまえに

このトークで紹介する仕組みを思い至ったいくつかの大事な要素の一つについての新しい概念を先日思いついたので、そちらの紹介をします

ちゃんと ConoHa 使ってます!

ちゃんと ConoHa 使ってます!

Registration Free
という概念のご提案

Yappo

ConoHa presents - Groonga "How-To" Talks

What is registration free?

直訳すると「登録自由」とか無料で登録そうな言葉なんですが僕の意味合いとしては「初期設定作業の手間が不要になる!らくちん!」ってイメージです

僕が社内向けツールを作ってきたときは極力設定が少なくなる物を作るようにしていました

理由は簡単で「設定が面倒い」

ikachan

GrowthForecast

kazeburo さん作だが yappo がプロトタイプを作ったので思想を紹介


という思想のもとプロトタイプを作りました

考え方は単純

GitHub とかも repository 作成画面無しで直接 push したら repository できたらまじ捗ると思うんですよ

Registration Free については以上です

Better Groonga Replication

Yappo

ConoHa presents - Groonga "How-To" Talks

10年くらい前の昔話

ガラゲー用の検索サイトやってて Senna + MySQL 頑張ってた

大昔は Senna を使っていた

Senna + MySQL を使うにはコツがあった

安定運用方法

昔話

あんまり今は役にたたない話ここまで

ここ数年以内の話

とある事で全文検索が必要な感じになった。JVM で動いている物を安心して使う気にならないので消去法で Groonga を使おうと思った(一応同僚も使ってたし)

< MySQL のストレージエンジンで使ってよ(超要約)

< Groonga は信用しようって気にはなれるけど with MySQL は信用無理!(過去の経験的に)(超要約)

< じゃぁ困らない感じにしといてよ(超要約)

って事で Groonga 単体でサービスを作る事にした

Groong + MySQL (Mroonga) の利点

Groong + MySQL (Mroonga) の欠点

Groonga 単独の欠点

無ければ作ったら良いよ

という事で、複数の Groonga Server に更新クエリを投げる為の Groonga Proxy Server を作りました。

概念的には pgpool のレプリケーション機能っぽい感じで application は Groonga Proxy Server に対して更新クエリを投げると backend のリアルな Groonga Server にクエリを中継してくれる君だった。

だがしかし!障害のノードの対処やスケールアウト戦略どうするの!!??!

クエリを proxy してるだけだから、実際に運用する事が不可能ってのが作ってみて学びありました。

< どうしようooえもん〜

< ちょっとまって

< わっふるわっふる

< binlog みたいな仕組みにしたらどう?

< !!!!1

という事で良い感じの replication の仕組みができました

特徴

システム概略

概要図

簡単なサーバ増設フロー

各ノードが処理した binlog の場所を個別で覚えているので、同期とかを気にせず増設していけて便利

という説明だけじゃわかりずらいと思うのでリファレンス実装書いてきました

madhand

https://github.com/yappo/ruby-madhand

FAQ

Q. なぜ Droonga を使わなかったの?


A. え、fluentd。。?あれ、、なんか、、、すごく、、、おっきかったです。。。

まとめ

以上です

Use a spacebar or arrow keys to navigate