You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
2年前にLesqueという、Common Lisp向けにRubyのResqueクローンを作りました。 メッセージキューやジョブキューという種類のプロダクトで、非同期処理を別のプロセスに移譲してバックグラウンドで行うものです。Redisをバックエンドとしています。 ある程度の規模のWebアプリケーションなんかを運用しているところなら必要になってくるだろうものですが、Common Lispでそういうプロダクトを作っているところがあるのかどうかも怪しいです。弊社サムライトはどうなんだと言われると苦しい。 ブログでLesqueの紹介記事は書いたんですが、その後使うことも無いしQuicklispにも申請せずメンテナンスもしていませんでした。特にせっつくようなコメントももらってないので需要もないのかもしれません。 blog.8arrow.org 物好きな僕のフォロワーがRedditにも投稿しています。
はじめに 実際に運用していた時に非同期にしていた主な処理は下記のようなものがあります。 iOS Android の push 通知の送信処理 ログの作成 様々な外部 API の呼び出し 非同期で更新しても問題ないデータの更新 Sidekiq is なに sidekiqは非同期処理を実現する gem 他にも Ruby で非同期処理を実現できる有名な gem には resque や delayed_job 等がある。 sidekiq.org Enterprise版等もありますが、 今回はOSS版を使用している前提でのお話しです。 他の非同期処理が可能な gem との簡単な比較 FAQ · mperham/sidekiq Wiki · GitHub この内容は結構真実を語っていることを最近知った Sidekiq Redis マルチスレッド リトライ処理あり おしゃれなダッシュボード Resque
古い記事ですが、kestrelの作者さんによるkestrelの紹介。 http://robey.lag.net/2008/11/27/scarling-to-kestrel.html 生い立ち もともとScalingという名前だったそうです。 というのも、RubyにあるStarlingというMQサーバーをScalaに移植しようとして作り始めたそうで、memcacheプロトコルを使うという仕様もここからきています。 Starlingについてはhttp://www.rubyinside.com/starling-and-rudeq-persistent-ruby-queues-958.html だけど色々機能を追加したからちゃんと名前つけようか、ということでkestrelになったとのこと。 kestrelで実装した3つの機能について。以下、簡単に和訳します。 (Fanoutについては別のエント
TheSchwartz では、関連するジョブをグルーピングしてまとめて実行することができるとドキュメントに書いてあったので、試しにやってみました。(参考にしたのは、Movable Type のソースコード。) グルーピングしない場合 まずは、普通に処理する場合。キューにジョブを追加する client.pl はこんな感じ。 #!/usr/bin/perl use strict; use warnings; use TheSchwartz; use DateTime; my $client = TheSchwartz->new( databases => [ { dsn => 'dbi:mysql:TheSchwartz', user => 'db_user', pass => 'db_password', } ], ); $client->insert
まだちゃんと使ってないから問題点とかわからないけど、とりあえずStarmanを使うとかで結構スケールできる気がする。そのあたりを自由に変えられるのもPlack++だね。 package Lyra::Server::Worker; use Moose; use Router::Simple; use JSON::XS; use namespace::autoclean; use constant NO_SUCH_WORKER => [ 404, [ "Content-Type" => "application/json" ], [ q|{ "status" => 0, "message" => "no such worker" }| ] ]; use constant BAD_PAYLOAD => [ 500, [ "Content-Type" => "application/json" ]
続・Mobage を支える技術 YAPC::Asia 2012 - 09/28 at 東京大学 Yuji Shimada (xaicron) Me 嶋田 裕二 (Yuji Shimada) @xaicron ソフトウェアエンジニア Me CPAN Author Me デザインセンスがとてもよい Me New! 最近ぎっくり腰になりました Works DeNA Co., Ltd. Mobage オープンプラットフォーム Mobge API Gadget Server (Proxy Server) 宣伝 宣伝 春頃に「Mobage を支える技術」という本を書きました。 ⇡これね 他にうちの部では @zigorou @nekokak の二人が書いています。 ちなみに ちなみに JPA 理事 JPA 理事 路傍の石 はい 紹介ブログの名言集 @kazeburo 35億PV/day の世界では1万回
こんにちわこんにちわ!YAPC::Asia 2010でベストスピーカー賞(次点)を頂いた nekokak です。 今回は拙作 Jonk でオレオレJobQueueフレームワークを作るお話をします。 はじめに なぜJonkをつくったのかについては、JobQueueManagerについてを ご覧頂ければと思います。 簡単に言うと、やりたい事って案件によりけりだから、自分でその案件にあったJobQueueフレームワークつくれたほうがいいよね! です。 install $ cpanm Jonk だけです。依存モジュールはTry::Tinyというモジュール一個だけなので、 全く問題無く入るでしょう。 依存モジュールが殆ど無いのがJonkの売りの一つです。 JobQueueを管理するためだけに、よくわからないORMがインストールされてしまったり よく分からないモジュールがインストールされるのってやじゃ
最近Redisに興味があったんで 色々な使い方を検討してるんですが、その中でRedisをつかったJob Queueを思いついたので実装してみました。 ちなみにRedisをつかったJob Queueは既出で、githubなんかで使われている resqueというのがあります。 まぁ通常のJob Queueだったら正直別にRedisつかわなくていいのでちょっと違う感じで実装してみました。 # 個人的には普通のQueueだったらQ4MとかQudoとかTheSchwartzでいいとおもう。 # こんなところで無駄にRedisとか使うメリットないわ。 通常JobQueueだと1個ずつjobをとりだして(dequeue)処理を行うと思います。 ただ、ケースによってはある一定の個数のjobをまとめてdequeueして処理を行いたい時があります。 私は普段業務では、Q4Mを多用しているんですがQ4Mにはそう
xaicronとネタが被ったようだけど気にしない>< livedoorでOperations EngineerやってるkazeburoだYo。最近livedoorからオープンソース化された3億ファイルを管理してるオブジェクトストレージ「STF」でも使ってるMessage QueueのQ4Mのインストール方法を紹介するよ! カジュアルだからインストールだけ! 知ってる人も多いと思うけどQ4Mはkazuhoさんによって開発されたMySQLのストレージエンジンとして実装されてるMessage Queue。livedoorではもちろん、mixiやDeNAをはじめソーシャルゲーム各社でも使われている。 Message Queueの説明や使い方はDIS_COMMENTでテーブルスペースフルの猫神様が書いてるので参考になるね! Perl Hackers Hub 第10回 ジョブキューで後回し大作戦―Th
@shiba_yu36さんがQudoの発表をするというのがKyoto.pmに行く強いきっかけになったので、 一番まえの席に陣取って発表を見ていました。 @Yappoさんのように発表者が発表している最中にtwitterという公開の場でlive disをするのはためらわれたので、 今あらためて@shiba_yu36さんの発表内容を振り返りつつ突っ込んでみたいと思う。 disじゃないよ。 @shiba_yu36さんの発表資料 http://shibayu36.hatenablog.com/entry/2012/03/18/230525 拡張性について Job Queueを使う上でTheSchwartzではなくQudoを使った利用に、 「TheSchwartzはオーバースペック」 「たくさんカスタマイズ詩たいわけではない」 ⇩ 「Qudoがちょうどよさそう」 とあったのですが、Qudoは拡張性が高
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはnekokakさんこと小林篤さんで、テーマは「ジョブキューで後回し大作戦」です。 ジョブキューとは 一時代前は時間のかかる処理もすべてWebアプリケーションで行っていましたが、最近ではいろいろな部分で処理の非同期化が行われるようになってきました。たとえばWebのインタフェース側ではAjaxがその最たるものでしょう。アプリケーションのバックグラウンド側でも今回のテーマであるジョブキューと呼ばれるしくみが多く利用されるようになりました。ジョブキューを賢く上手に利用することで、ユーザにストレスを与えることなく、またサーバのリソースも有効に使えるようになります。 ジョブキューは延々と動き続けるバッチ処理、というイメージが最もわかりやすいでしょう。通常のバッチ処理であればcrondを利用し、一定周期でプログラムを起動して
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く