タグ

ブックマーク / blog.nomadscafe.jp (9)

  • Webアプリケーションにおける Job Queue システムの構成例と Worker を作る際に気をつけること - blog.nomadscafe.jp

    Webアプリケーション内で処理を直列に実行せずにJob Queueに回して非同期に実行することが多くなって来て久しいと思いますが、そのおすすめ構成と気をつけることについてつらつらと。 1) 既存のデータベースをキューとして使う構成例 1つ目はMySQLなどのデータベースをキューとして用いる例。既にアプリケーションで利用しているデータベースにキュー用のテーブルを作成して利用します。データベースを利用したキュー管理の仕組みとしてJonk、Qudo、TheSchwartzなどがPerlでは有名どころです。 依存するミドルウェアが増えないので最もシンプルな構成になると思います。 上記の図ではWorkerはアプリケーション内で実行することで冗長性を確保しますが、キューを格納するデータベースはSPOFになります。しかし、、データベースに障害があった場合キューだけでなくすべてのサービスが停止すると思われ

  • GreenBuckets という Object Storage を作りました - blog.nomadscafe.jp

    GreenBuckets という Object Storage を作りました Object Storage とは何かというと、OSSではOpenStack Object StorageとかMogileFS 、Webサービスで使われているところでは mixi の ImageCluster とか livedoor の STF とか、比較にならないけどAmazon S3とかそういったたぐいのものです。しばしば画像のストレージなんかに使われていると思います。今回作ったのは GreenBuckets というもので、mixiのImageClusterの構成をまねしつつ、stfと同じようにバケット単位での操作を可能としています。なんですでにあるのに作ったのかというと、主に「つくってみかったから」ですね。一応目標として シンプルだけど使える cpanm でインストールが完了する できるだけ少ない依存関係

  • CloudForecastっていうリソース監視のツール/フレームワーク作った - blog.nomadscafe.jp

    「クラウド」って言ってみたかった。今は反省していr 上のグラフは前回のエントリーを公開したときの、当blogを配信しているサーバのトラフィックグラフです。記事を公開した17時にぴょーんとトラフィックが伸びています。4時にも増えているけどこちらは謎。 実はこのグラフもCloudForecastを利用して取得しています。CloudForecastはサーバ等のリソース監視を行うツールもしくはフレームワークで、rrdtoolの薄いラッパーとして動作し、小規模から大規模なサーバ群を一括で管理できるように設計してあります。tokuhirom曰く、「perlが書けてrrdtoolがつかえるsysadminの人だったら使いやすいと思われる」というのがもっともしっくりくるような気がします。Perlとrrdtoolが使える運用者によるカスタマイズ前提なのがフレームワークと呼んでいる所以です。 CloudFor

  • アメブロの中の人が書いたMySQLの本 - blog.nomadscafe.jp

    100億PVということで話題になったアメブロのMySQLが出たので買いました。 PVという言葉は定義によっていろいろ変るのであれですが、サーバで100億リクエストを処理していると考えるとやはり大規模なサービスであると感じます。 月間100億を秒に直すと、 10,000,000,000 / ( 3600 * 24 * 30 ) = 3,858.02469 大体4,000弱。ピークタイムではこの倍くらいになるでしょう。 の内容は、MySQLの基的な使い方に加えて、スケールアウトに適したアプリケーションの設計、運用に必要な監視やバックアップ、パフォーマンスチューニングについても丁寧に解説されています。 特に監視や負荷・障害対策は実際現場で経験をされた人の知識が詰まっていて良い感じです。 一つ気になったのは、MySQL 4.1、MyISAMを多く利用されているところです。 P4のコラムで触

  • 昨日のPubSubHubbub記事がどのように反映されたか - blog.nomadscafe.jp

    昨日の「FeedBurnerでPubSubHubbubに対応する」の続報 FeedBurnerがPubSubHubbubに対応していたので、FeedBurnerにpingを打つように設定したあと、publishしました。 FeedBurnerが更新さえすれば、PubSubHubbubに対応しているGoogle Readerとlivedoor Readerでは速攻で記事が更新されるハズです。 結論からいうと、Google Readerはすぐに反映されました。 右上の時間が「seconds ago」になってます。ちなみにgoogleの通常の検索にも反映してました。スゲエェェ。 livedoor Readerは若干時間がかかり、数分後に反映されました。 これについて、malaさんにtwitterで @kazeburo フィードが更新された際にrel=hubがあるかどうか確認して登録してるので、初

  • Catalyst::View::JSON : blog.nomadscafe.jp

    Catalyst::View::JSON miyagawaさんのCatalyst::View::JSONを試し中。 sub foo : Local { my ($self,$c) = @_; $c->stash->{tags}=[qw/foo bar baz/]; $c->forward('View::JSON'); } として、prototype.jsのAjax.Requestなどで、 new Ajax.Request( "/foo",{ onComplete: function(originalRequest){ var ret = eval(originalRequest.responseText); alert(Object.inspect(ret['tags'])); } }); こうすると、きちんと ['foo','bar','baz'] と得られるはず。Object.insp

  • 高速Webサーバ Nginxの組み込みPerlを使ってみる : blog.nomadscafe.jp

    高速Webサーバ Nginxの組み込みPerlを使ってみる NginxというWebサーバがあります。 ロシアの方がつくったもので、rambler.ruでも使われてます。 日語情報がほぼ皆無ですが、このあたりで紹介されています。 機能的には、epoll,kqueueやsendfileなどがサポートされ、 rewrite, header書き換え deflate FastCGI SSL シンプルな負荷分散付きreverse proxy 等すでにLighttpdと比較しても遜色ない十分な機能が実装されてます。 パフォーマンス的にもLighttpdと同等かそれ以上でます。 珍しい機能として、「perlインタプリタの組み込み」があるので早速試してみます。Fedora Core6ではnginxはyumでインストールできます。perl_moduleも有効になってます perl関連のドキュメントはここ。

  • Catalystでのセッション管理はどれがいいのだろう : blog.nomadscafe.jp

    Catalystでのセッション管理はどれがいいのだろう Catalystをちょっとやり始めている。 シスコのHUBの方はデータセンター内で他者さんのラックで使われているのをよく見ます。 うちは使ってないけど。管理機能は別としてすぐに代替が可能なお手頃なHUBの方がうちの運用にあっているんじゃないかと思うのだがごもごもごも。。 んで、勉強にCatalystでアプリケーションを作るのにあたって、セッション管理をどうしたらいいのか調べ中。 プラグインが4つほどあるんですよね。 Catalyst::Plugin::Session::FastMmap Catalystの制作者のプラグイン。データの保存には、Cache::FastMmapを使う。セッションキーのリダイレクト時の書き換え機能やHTML上のリンクへの埋め込み機能もある。FastMmapはけっこう速いらしい。たぶん一番ベーシック Catal

  • JSONとContent-Type : blog.nomadscafe.jp

    JSONとContent-Type サーバサイドからJSONを吐き出すときのContent-Typeなのですが、各ブラウザによって対応がちょっと違います。 下の表にまとめてみました。 ×のところはeval中にエラーがでます。 Content-type WinIE Firefox Safari Opera(8.5) text/javascript ○ ○ △ × text/javascript; charset=utf-8 ○ ○ ○ × text/javascript; charset=utf8(utf-8の間違い) × ○ ○ × text/javascript+json ○ ○ △ × text/javascript+json; charset=utf-8 ○ ○ ○ × text/html; charset=utf-8 ○ Safariでマルチバイトな文字を含む場合は、「charse

  • 1