キューとかDBとか非同期とか分散とか
元ネタはさておき、過去見た色んな物をメモする
キューサーバ上のキュー
ActiveMQとかそっち系
2PCなキューとか作れるキューなのでDBとの同期とかもやる気になれば出来る(色々ハマるけど)
普通にキューを作るんなら多分一番楽だと思ってる
クラウド上のキュー
SQSとか
順序保証なにそれ?とか複数取得出来たりするので実装をだいぶ気をつけないとヤバそうなやつ
それに合わせて実装を頑張ればなんとか出来る
かなり大きいけどリクエストの上限があったり、容量制限がすっごい緩かったりする感じ
最近FIFOオプションとか対応してきてだいぶ良くなってる
ストリーム
最近多くなってきた感じのやつ
大量のリクエストを受け取れたり一定時間保持できたり再処理できたりするサービス
クラウドとオンプレの両方に同じようにある
シャーディング出来るので普通のキューで耐えれないほど大量のリクエストを処理する場合に有効な感じ
DBのキュー
キューというよりポーリングでの実装なのでこれをここに入れるのはちょっと違う気がする
ステータス管理しようが何しようが、普通に作るとDBのロックを使うのでDBへの負荷が結構になる
RDB使っていれば別のサービスとかサーバとか使わなくて良いので追加サーバをようしなくて良くなるのはだいぶ大きいメリット
ただ、この中では唯一と言って良いSQLで不要なメッセージを削除できる能力があるので上手く使うとそこはとっても良い
使い道とか
リクエストに投入する量とかコンシューマの数とかスケール性とかそれ以外の特性を決めると大体何を使ってどういう風に作れば良いのかが決まるはず
なので前提条件を決めずに特定の物をダメと言ったり代替案にするのもいまいちかなぁ〜って思う今日この頃