Upload
nobutoshi-ogata
View
5.203
Download
2
Embed Size (px)
Citation preview
GREEにおける全文検索の歴史
GREE Inc. Infrastructure Platform Development
Nobutoshi Ogata (@nobu666)
13年3月26日火曜日
about me
• @nobu666
• 片隅でくすぶっています
• 猫とウイスキーとワイン
13年3月26日火曜日
GREEの検索
13年3月26日火曜日
検索の歴史 (1)
• Senna
• 2007年とかその辺の話…?
• 安定稼働しなかった
13年3月26日火曜日
検索の歴史 (1)• Tritonn
• 2009年くらいまで
• データファイルが壊れる
• やっぱり安定しない
• MySQLのバージョンあげたい
13年3月26日火曜日
検索の歴史 (3)
• Lucene
• 2012年初頭まで
• 手動index optimizeとの戦い
13年3月26日火曜日
検索の歴史 (4)
• Solr
• イマココ
• 2012年初頭から
13年3月26日火曜日
Solr化の恩恵
• ほぼメンテナンスフリー
• SPoFフリー
• 全体的な検索速度向上
13年3月26日火曜日
LuceneからSolr3.6へ
13年3月26日火曜日
まずやること
13年3月26日火曜日
まずこれを買うんだ!!
13年3月26日火曜日
いつ買うか?
13年3月26日火曜日
Solr化への前提条件
• 他プロダクトへ影響を出さない
• フロントエンドからの呼び出しは互換性を維持する
• Ease of maintenance
13年3月26日火曜日
後方互換• HTTP GETを受けてXMLを返却
• Lucene+Tomcatで受け付けていたクエリをSolr向けに変換
• Solrの返却するXMLをカスタマイズ
• Indexing依頼のI/Fも変えない
13年3月26日火曜日
Ease of maintenance
• すべてのサーバーを冗長化
• サービス影響なしにindex optimize
13年3月26日火曜日
←WebアプリがQueueへ登録
←indexerがMasterへ登録 ここで定期的にoptimize
←クエリの受付、返却
←クエリとレスポンスの変換 クライアントからのクエリ受付
query translation
13年3月26日火曜日
簡単に説明
• 現状7schema
• サーバー台数40台ちょっと
• マルチコア使えばもっと詰められる
• 全部で250qps+ くらい
13年3月26日火曜日
13年3月26日火曜日
13年3月26日火曜日
負荷の傾向• 大凡0:00付近に負荷のピーク
• schemaによってはほとんど使われていない
• Range Query使いまくりなのでslaveが一番重くなる
13年3月26日火曜日
作りこみが必要だった部分(1)
• Indexer
• Masterへ分散してIndexing
• マルチスレッドで効率的に
13年3月26日火曜日
作りこみが必要だった部分(2)
• Query Translation
• 負の遺産の継承
• Schema毎の特殊なフィルタ付与
• 青少年保護なんちゃらけ
• 人力監視との兼ね合い
• 監視
• Replication, SSH, Ping, Solr Ping13年3月26日火曜日
今でも面倒なこと
• スキーマ変更を無停止でやるのすごいめんどい
• SlaveをMasterに昇格する、などの操作は手動で設定ファイルをいじる
13年3月26日火曜日
検索のこれから
13年3月26日火曜日
改善したいとこ• 精度
• 日本語以外でも使われるので辞書を使う&メンテするのが事実上難しい
• さらなる自動化
13年3月26日火曜日
試したいこと
• AmazonのサービスじゃないことでおなじみのElasticSearch
• Solr Cloud
• これもっと前にあったら俺はこんなに頑張らなくて良かった説
13年3月26日火曜日
Any Questions?
13年3月26日火曜日