タグ

ブックマーク / frsyuki.hatenablog.com (9)

  • 続・リトライと冪等性のデザインパターン - リトライはいつ成功するか - Blog by Sadayuki Furuhashi

    三度の飯よりエラー処理。古橋です。 大変好評をいただいた序章リトライと冪等性のデザインパターンの続編です。 前回はほぼ前置きでしたが、今回は冪等でない操作を冪等にする具体的なテクニックもまとめていきます。 パターン2:エラーを区別してDELETEを冪等にする リソースに常に一意なIDが振られていれば、Deleteを冪等にするのは難しくない。そもそも同じリソースを2度削除することはできない。 一つ注意するべきなのは、削除されたリソースのIDが再利用されるケースでは、Deleteの冪等性は保証されない。例えば、kill -KILL <pid> コマンドはDelete系のAPIと考えられるが、pidは再利用されるので、何度も繰り返すと意図しないプロセスを殺してしまう可能性がある。 一般にIDの生成は非常に難しい問題だが、Deleteに関してのみ言えば再利用されなければいいので、単調増加する整数(

    続・リトライと冪等性のデザインパターン - リトライはいつ成功するか - Blog by Sadayuki Furuhashi
  • リトライと冪等性のデザインパターン - Blog by Sadayuki Furuhashi

    リトライを肴に一晩酒が飲める古橋です。 大規模なデータに触れることが日常茶飯事になっている今日この頃。この分野のおもしろいところは、いつまで経っても終わらないプログラムを簡単に作れてしまうことかもしれません。エラー処理、リトライそして冪等性*1の3つを抑えていないプログラムは、小規模なデータなら問題ないが、データ量が多くなると使い物にならなくなる可能性が大です。 大規模データをバッチ処理するケース以外でも、リトライは一般にプログラムの信頼性に関わる重要な問題です。 そんなわけで、リトライに関わるいくつかのデザインパターンを、連載でまとめておこうと思います*2。 では、第1回は背景から: なぜリトライが必要なのか プログラムは色々な理由で失敗する。例えば、 A) 通信先のプログラムが高負荷すぎて応答できなかった B) メモリを消費しすぎてメモリ確保に失敗した。またはOOM KIllerに殺さ

    リトライと冪等性のデザインパターン - Blog by Sadayuki Furuhashi
  • hbstudy#10「ずばり動く!kumofs と ずばり動かないケース」 - Blog by Sadayuki Furuhashi

    ずばり動く!kumofs と ずばり動かないケース と題して、hbstudy#10 で発表してきました。 序盤の趣旨は丸レク2010と共通しながらも、別の側面とストーリーから紹介してみました。 また今回は、列指向DBなどの他の分散データストアとの違いについても紹介しました。 kumofsは Dynamo で言うところの Eventually Consistent ではないのですが、今回は Eventually Consistent でポイントとなる Vector Clock についても少し紹介しています。 kumofsは double-hash-spaceという独自のアルゴリズムを使うことで、ノード増減時の一貫性を保っています。Vector Clock で問題となる、データの新旧が「比較不能」になることがないため、アプリケーションでマージ処理を実装する必要がありません。 目次 kumofs

    hbstudy#10「ずばり動く!kumofs と ずばり動かないケース」 - Blog by Sadayuki Furuhashi
  • kumofsはなぜスケールするか - Blog by Sadayuki Furuhashi

    先日、分散Key-valueストア kumofs を公開しました。 多く方から反響とフィードバックをいただいています。ありがとうございます。 今回は、kumofs はなぜスケールするのか、なぜスケールすると言えるのかーということについて紹介したいと思います。 ところでスケーラビリティとは何か? スケーラビリティとは、利用者や仕事の増大に適応できる能力・度合い とされています(端的!)*1 。Scalability を日語にすると、拡張性 と訳されるようです。 ただ一口でスケーラビリティと言っても、様々な側面があります。ITシステムでは主には処理性能と運用に関することを指す場合が多いと思いますが*2、その中にも様々な側面があります。 なぜスケーラビリティが必要か スケーラビリティは システムなどが持つべき望ましい特性 であって、高いに越したことはありません。しかし、高いスケーラビリティはタ

    kumofsはなぜスケールするか - Blog by Sadayuki Furuhashi
  • Interopクラウドコン優勝は「えとらぼ」分散key-valueストレージ kumofs - Blog by Sadayuki Furuhashi

    InteropTokyo 2009 クラウドコンピューティングコンペティション(通称クラウドコン)は、我等がえとらぼチームが優勝しました! 実行委員・StarBEDプロジェクト・IBMの皆様を始め関係者の皆様、ありがとうございました。 プレゼンテーションムービーとポスターとパンフレット*1を公開しました。 プレゼンムービー(マウスクリック/矢印キーで進む) PDF版 ポスター パンフレット *2 …どれも相当に気合いが入っているので、ぜひご覧ください^^ Ustream.tvの録画もあります(えとらぼチームはちょっと細切れですが) 途中で行ったデモは、StarBEDの45台の物理サーバーを使ってkumofsを動かして、ランダムで選んだノードを自動的にkill/再起動するスクリプトを走らせたものです。サーバーが落ちてもシステムは全然止まらないし、どのサーバーにも均等に負荷が分散されます。 時

    Interopクラウドコン優勝は「えとらぼ」分散key-valueストレージ kumofs - Blog by Sadayuki Furuhashi
  • Partty!.org始めました - みんなでペアプロできるサービス - Blog by Sadayuki Furuhashi

    今操作しているターミナルを共有できるサービスPartty!.orgを始めました。 Partty!.org ソースコード ソースコード@CodeRepos Partty!.orgソフトウェアを使ってシェルを起動すると、Webブラウザやtelnetコマンドを使って、その操作の様子が見られるようになります。パスワードを入力すれば、そのまま操作することもできます。 操作の様子は録画されているので、後から再生することができます。↑このようにブログに貼り付けることもできます。 ペアプログラミング、グループプログラミングに CUIアプリケーションのデモンストレーションに ペアプログラミングにはぴったりです。同じディスプレイをのぞき込んだり、二人が同じ場所に並んでいる必要もありません。「ちょっとコレ見て!」とPartty!.orgのURLを送るだけで、とても気軽に始められます。 とりあえず録画してブログに

    Partty!.org始めました - みんなでペアプロできるサービス - Blog by Sadayuki Furuhashi
    dealforest
    dealforest 2009/05/01
    partty.org でペアプロ
  • Flash Player 9,0,115,0の<policy-file-request/>に対処する方法 - 古橋貞之の日記

    いまさら画期的な発見!まずは長い前置きから。 最新のFlash Playerでは、SocketまたはXMLSocketを使ってサーバーと通信するとき、最初に<policy-file-request/>\0(\0はNULL文字)という文字列を送信してきます。これに対して<cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>\0というような文字列を返してやらないと、まったく通信できません。 これは(HTTPサーバーでホスティングする)crossdomain.xmlファイルとは関係ありません。SocketとXMLSocketではcrossdomain.xmlファイルは無視されます。 厄介なことに、XMLSocketだけでなくSocketを使ったときでもこのセキュリティポリシーが

    Flash Player 9,0,115,0の<policy-file-request/>に対処する方法 - 古橋貞之の日記
    dealforest
    dealforest 2008/05/04
    デフォルトTCP863ポート
  • P2P分散ストレージ「Cagra」 - Blog by Sadayuki Furuhashi

    id:nyaxt氏との共同開発の分散ストレージ「Cagra」(かぐら)のアルファ版をリリースしました。 cagra α3リリース cagra テクニカルデモ α2リリース 分散ストレージエンジンテクニカルデモ α版リリース cagraのα版試してみたよ - takumalog Cagraは以下のような特徴を持った(目指した)P2P分散ストレージです。 Zeroconf マルチマスタでレプリケーションするWrite 高速な分散Read オプションで高速な非同期Write インターネットレベルよりもLANレベルのマシン台数に特化 巨大データサポート 高速イベント駆動システムコール+軽量スレッド 超アジャ〜イルな開発体制 まだα版で全部が実装されているわけではないですが、とりあえず動きます。 Zeroconf UDPマルチキャストでノードを自動的に発見するので、一切設定ファイルを書かずに動作せる

    P2P分散ストレージ「Cagra」 - Blog by Sadayuki Furuhashi
    dealforest
    dealforest 2008/05/04
    開発者の人の日記
  • 開発環境としてのMac OS X Leopard - Blog by Sadayuki Furuhashi

    なかなかrootにならせてくれない、ハードウェアを選ばせてくれない、設定ファイルをviでいじらせてくれないなど、不自由なUNIX : Mac OS Xですが、それ故の自由が何物にも代え難い今日この頃。Leopardになってcron+pdumpfsの仕事まで持って行かれてしまいました。 前回のTiger版カスタマイズメモに引き続いて、Mac OS Xのカスタマイズを書いておこうと思います。 Terminal.app タブ機能が実装されたりssh-agentがKeychainと統合されたりと、Leopardで驚異的なアップデートが行われたターミナル周りですが、まだまだ改善できる余地があります。問題は以下の3点。 HomeキーとEndキーが使えない 色が見にくい ショートカットキーが使いにくい まずHomeキーやEndキーですが、これは環境設定で変更できます。Terminal.appの環境設定の

    開発環境としてのMac OS X Leopard - Blog by Sadayuki Furuhashi
  • 1