S4とかStormとか、リアルタイムの分散イベント処理系のプロダクトがいろいろとあると思うけど、現在のところ、将来の勝者がどれになるのか予測困難だし、それぞれに一長一短があったり、何と言っても手軽ではない感が強い(現状、選択するのが難しい…)。あと、Hadoopもそうだけど、サーバを潤沢に持つ大規模なところがターゲットな感じがあるし(TwitterとかYahooとかだし)、そうでないところの案件には適用するのが辛い気がしている。つまり、最小構成ならTomcatとかに配備すれば動くよくらいの軽いノリのが欲しい。というわけで、何かしらのイベントをJSONでサーバに送りつけていろいろするための仕組みをEmprosとして作ることにしました。EmprosにJSONでキーと値のオブジェクトを送ると、Empros内に登録されたProcessor群に次々伝播されて処理されます。なので、Processorを適当に作れば、自由にカスタマイズできると思います。
直近の目的は、Fessとの連携があります。Fessに限らず、検索システムを作ろうとしたとき、共有フォルダが対象でサイズがでかいと夜間とかでクロールするのが不可能な状況になります。そのときに回避策として考えられるのが、更新分だけを夜間とかでクロールすることで使い勝手を上げる方法があるかと思います。WindowsやLinuxの共有フォルダとかで動いているのであれば、ファイル更新イベントとか取得できるので、発生したイベントをEmprosに送って、更新リストを作成して、Fessがそのリストを元にクロールする感じを考えています。というわけで、ガンガンイベントを送りつけられてもEmprosが動くようにする必要があるし(つまり、スループットが重要)、Tomcatとかで手軽に運用できると良いかなという感じです。まぁ、EmprosはFess以外にもいろいろと考えてはいますが、地道にやっていく感じかと思います。
FessとかはSAStrutsベースに作ってますが、EmprosはSpringベースです。そんでもって、Servlet 3.0 (非同期を利用しているため)で Java 7が必要になります。EmprosはデータをDBに保存できますが、そこはいつものDBFluteを採用してます(始めてSpring上でDBFluteを使ってみた)。現在はログの吐き出し、DBに保存、CSVに保存などをパラレルにできる感じです。まだ、始まったばかりな感じですが、いろいろと機能を追加していきたいところです。
という感じで、興味がありましたらどうぞ。
カテゴリー: CodeLibs
Solr 4.1から4.2へ
Fessに同梱されているSolrを更新する都合上、schema.xmlとsolrconfig.xmlの差分はバージョンアップする際にいつも比較しなければならない。なので、メジャーアップデートのときとかは結構辛いのだけど、今回はマイナーアップデートだったので差分はあんまり大したことなかった。solrconfig.xmlについていうと、
<codecFactory class="solr.SchemaCodecFactory"/>
が加わっていたことかな。schema.xmlについては、docValues要素が入っていることかな。docValues=”true”にできるのは、StrField、UUIDField、Tri*Fieldでマルチフィールドでなくて、必須かデフォルト値を持つ必要があるって書いてあった。うーん、Fessだと必須なフィールドは少ないのだよね。というわけで、変更点的にはそんな感じだった。
Fessのサイトを移行
今まで、http://fess.sourceforge.jp/にありましたが、http://fess.codelibs.org/にサイトを移行しました。SVN、チケット管理、リリース物管理とかは現時点では移行する予定はありません。これに合わせて、今までMavenリポジトリも移行しました。そもそも fess.sourceforge.jp に jar とか置いておいて良いのかがちょっと怪しかったというのもあったのですが、それが解消されることになったかと。Fessの共通的な機能を結構、CodeLibsに切り出したというのもありますが、Fess自体もCodeLibsの一環で良いかなという感じもしているのと、ドメインを新たに取るもの面倒というのもあったりで、fess.codelibs.orgにしてみました。それに合わせて、CodeLibsのサイトも用意したものの、地道に手直しをしていく感じかと思います。そんな感じでFess自体は特に何も変わることはありませんが、従来よりは開発の縛りがなくなるのでやりやすくなるかな、とか考えています。というわけで、引き続きよろしくおねがいします。