Job Queue

Job Queueが欲しくて、いろいろ調べた。

要件としては、

  • persistent queue (not on memory, but storage)
  • low cost of maintenance
  • programming language independent

こんな感じのシンプルなJob Queue
FIFOでqueueを取り出せればいい。

という要件でいろいろ探したけれど、なかなかフィットするものがない。
その中でも一番良さそうだったのがMysqlのストレージエンジンであるQ4M。
プロトタイプを作って実験してみても、なんだか良さそう。

ただ、困ったことが一つ。
Q4Mはreplicationに対応していない、、、
完全なミラーリングがしたい訳じゃない(処理中のqueueくらい取りこぼしてもいい)んだけど、DBサーバすっとんですべてのqueueを失うような状況だけは避けたい。

https://groups.google.com/group/q4m-general/browse_thread/thread/32fa1c16bd149277/a4f12c3e269f3069?hl=ja&lnk=gst&q=replication#a4f12c3e269f3069
これを見ても、replicationするにはDRBDとかを使う必要があるらしい。
でも、サーバクラッシュするような状況で論理的に正しいファイルがDRBDのミラーリング先にできているのか不安っていうのと、heartbeatとか使ってMysqlのデータを動的に復旧させようって言うのはもろもろ無理があるというか大変すぎる気がする。

そもそものシンプルなJob Queueが欲しいというスタートから大きく逸脱している気がする。

DeNA, mixi等、大規模システムで導入されているのだから、何か運用のコツ等があるのだろうか。。

困った、、、