タグ

ブックマーク / fallabs.com (13)

  • 開発メモ: memcachedプロトコルでメッセージキューを実現する

    前回の記事にて、Kyoto Tycoonでメッセージキューを実現する方法について述べた。今回は、それを実運用にて使いやすくするための諸機能について説明する。みんな大好きなmemcachedプロトコルでメッセージキューを実現してみよう。 ジョブキューとメッセージキュー どうでもいい話ではあるが、ジョブキューおよびメッセージキューという用語はよく混同して使ってしまう。俺定義では、ジョブキューは「ジョブ管理機能」という目的をたまたまキュー構造に基づいて実装しているものであり、メッセージキューはキュー構造に基づく非同期メッセージング機構であって用途は特に限定しない。つまりメッセージキューをジョブキューを実装するのに使うこともあるが、それ以外の用途にもメッセージキューは使われる。またジョブキューをメッセージキューに基づかないで同期的に実装することもできる。 きっと偉い学者さんがどこかでちゃんとした定

    kazeburo
    kazeburo 2011/06/21
    すごい RT @fallabs: [ja] memcachedプラグインでジョブキューを実現する方法についてブログった。
  • 開発メモ: KVSとシグナル機構でジョブキューを実現する

    いわゆるkey-value storeを使っている際に、レコードの挿入もしくは更新を検知して即座に何らかの処理を行いたくなることはないだろうか。俺はあんまりないけど、結構そういう質問が来るので、きっと巷にはそういう要求があるのだろう。Kyoto Cabinetでそれを実現してみた。 ジョブキュー もうちょい具体的な例を挙げると、ジョブキューである。ここで、「foo」という名前のタスクを考えてみる。読み出し側(ワーカ)は、適当な名前をつけた条件変数を常に監視していて、そこにシグナルが飛んできたら即座にレコードを取得して処理を行いたい。しかし、「一定の間隔毎にレコードの検索を繰返して発見したら処理を行う」というポーリングスタイルにはしたくない。操作にどうしてもタイムラグが出るし、ポーリングのための無駄なトラフィックが発生するからだ。 シグナル待機処理と該当レコードの取得処理を行う擬似コードは以

    kazeburo
    kazeburo 2011/06/16
  • Technical Memo: Signal Notification and Job Queue on KVS

    kazeburo
    kazeburo 2011/06/16
    ためす RT @fallabs: blogged about signal notification and job queue on KVS.
  • 開発メモ: LevelDBをKyoto Tycoon上で使う方法

    Googleが高速永続key-value storeとしてLevelDBを発表した(私はその開発に関わっているわけではないけども)。Kyoto CabinetとLevelDBの想定ユースケースは異なるけれども、LevelDBもまた有望かつ有用なツールであることに疑いはないと思っている。 ところで、Kyoto TycoonはDBMスタイルのいかなるデータベースもプラグインして使うことができる。ここではLevelDBをKyoto Tycoon上で使う方法について説明する。 LevelDBのビルドとインストール 準備として、まずLevelDBをインストールする必要がある。LevelDBのソースコードはSVNを使ってチェックアウトする。 $ svn checkout http://leveldb.googlecode.com/svn/trunk/ leveldb-read-only 今のところ、M

    kazeburo
    kazeburo 2011/06/10
    RT @fallabs: [ja] LevelDBの組み込みについてブログ書いた。
  • 生活メモ: 就職することにした

    長らくニートだったが、就職先が決まったということで、代官山のレストランでと娘にお祝いしてもらった。うれしい。そして、新しい道に踏み出すという新鮮な気持ちが何とも心地よい。 2011年2月1日付けで、Googleに入社する。その経緯について記述しておく。個人的事情をわざわざ晒す必要もないのだが、お世話になっている皆様やOSS関連や個人事業関連で関わりのある方々への報告ということでキーを叩く。 経緯 昨年7月末に前職を辞して、自作のOSS製品のデュアルライセンス販売でっていくべく開発作業や事務作業を半年ほど行ってきた。しかし、地価と物価の高い東京という都市に子とともに暮らせる収入を継続して得ていくにはあまりにも頼りないビジネスモデルであるため、それを業にすることは断念した。 より正確に言えば、当初からOSSでっていけるとは思っていなかったので、ライセンス販売はに任せて俺は就職できる

    kazeburo
    kazeburo 2011/01/19
  • 開発メモ: Kyoto Tycoon普及大作戦

    手前味噌だが、Kyoto CabinetおよびKyoto Tycoonは、かなりいけてるソフトウェアに仕上がっている。されど、いまいち普及していないのが現状である。よって、今後は普及活動を格化させる。 まずはKyoto Tycoonを普及させたい。Web屋さんがみんな大好きなmemcachedのユースケースをほぼ100%カバーしていて、機能性や空間効率でのアドバンテージを提供できるので、お勧めしやすい。memcachedプロトコルのプラガブルサーバを使えば、ユーザの既存のWebアプリケーションに一切手を加えることなく、KTをインストールしてサーバを再起動するだけで乗り換えが済む。非常にわかりやすい筋書きだ。 memcachedを置き換えるだけでなく、ファイルDBによる永続化によって新たな価値を提供することができる。さらに、レプリケーションなどのHA機能群によって、その価値を補強することが

    kazeburo
    kazeburo 2010/12/12
    ライブドアは全ての条件OKだ
  • 開発メモ: memcachedプロトコルをKTにプラグインする

    高効率キャッシュサーバ兼データベースサーバであるKyoto Tycoonのネットワーク通信機構をプラグインで切り替えられるようにして、memcachedプロトコルにも対応したというお話。 プラガブルサーバ Apacheは、様々なモジュールを後付けのプラグインで組み込むことで、非常に柔軟に機能追加を行えるようになっている。MySQLもストレージエンジンをプラグインで切り替えられるようになっていて、非常に柔軟なソリューションが提供できるようになっている。そのようなプラグインできるモジュールをプラガブルモジュールと呼ぶことにしよう。 同じように、KTでもストレージエンジン(DBM層)をプラガブルモジュールにする予定ではあるが、今回はストレージエンジンの話ではない。逆に、ネットワーク層をプラガブルモジュールにしてしまうのだ。そうすると、任意のプロトコルでデータベースを操作できるようになる。 DBM

  • fallabs.com

    fallabs.com 2023 著作権. 不許複製 プライバシーポリシー

    kazeburo
    kazeburo 2010/11/24
  • 開発メモ: memcachedとKyoto Tycoonの空間効率

    Kyoto CabinetおよびKyoto Tycoonに新たに導入された「StashDB」を使うとmemcachedよりも空間効率を向上させられるという話。 StashDBとは 前回の記事で説明したように、Kyoto CabinetではローカルMapReduceのキャッシュとしてTinyHashMapというクラスを実装して省メモリ化を図っている。丁寧にシリアライズしてデータを詰めていくとかなりメモリを節約できるものなのだ。 同じ構造をDBMのインターフェイスにしたのがStashDBである。ProtoHashDB, ProtoTreeDB, CacheDB, GrassDB, HashDB, TreeDB, DirDB, ForestDBに続く第9番目のDBMということになる。もちろん、マルチスレッドセーフにして、レコード単位の粒度でロックを施して一貫性を確保し、VisitorやCurso

  • 開発メモ: Kyoto Tycoon + Luaスクリプティング拡張 = 最強

    Kyoto Tycoon 0.8.1をリリースした。データベースサーバ上でスクリプト言語Luaを動かす「スクリプティング拡張」機能を搭載している。 TT+Luaの問題点 Tokyo TyrantにもLuaを搭載していた。Lua言語の処理系は、組み込み演算子と組み込み型と標準ライブラリのいずれもが貧弱だという欠点はあるが、非常に高速に動作するという利点がある。複数の処理系インスタンスを使えばネイティブスレッドとの親和性も高い。機能的な貧弱さはC言語の関数を呼ぶことで補うことができる。そのようなLuaをTTと組み合わせることで、ユーザが定義した任意のデータベース操作を実行するのに適した環境を提供できたと思っている。 ただし、以下の欠点が気になっていた。これらはいずれも機能不全を示すものではなく、工夫すれば乗り越えられるものだが、工夫しないと所望の機能が実現できないというのはストレスだ。 引数や

    kazeburo
    kazeburo 2010/10/12
  • 開発メモ: Kyoto Tycoonベータ版リリースすた

    ここのところ必死こいて作り込んでいたKyoto Tycoonだが、主要機能を実装しきって文書もそこそこ書けてきたので、ベータリリースということにした。プロジェクトページもちゃんと作ってある。 公式には英語の文書しか作らない方針なのだが、それだと国内ではなかなか使ってもらえないので、この場でチュートリアルを書いてみる。 Kyoto Tycoonとは プロセス組み込み軽量データベースライブラリであるKyoto Cabinetをネットワーク越しに利用できるようにするためのツールキットである。KCのデータベースを内部に持ったサーバプログラムと、それに接続してデータベースを操作するためのクライアントライブラリからなる。また、コマンドラインからサーバにアクセスするためのユーティリティもついてくるので、簡単に使い始められる。 製品コンセプトは、「永続的キャッシュサーバ」もしくは「memcachedの永続

    kazeburo
    kazeburo 2010/10/04
    keepaliveの実装が重要となりそうだな RT @mikio1978: Kyoto Tycoonのベータ版リリースについてブログった。
  • 開発メモ: Kyoto Tycoonの設計 その参

    前回実装した「クライアントソケット」「サーバソケット」「ソケット監視装置」のAPI群に、さらに「スレッドプール内臓タスクキュー」を組み合わせて、「多重I/Oマルチスレッド汎用TCPサーバ」の機能を司るクラスを作ってみた。 スレッドプール内臓タスクキュー 整合性を保ちつつ並列処理を行うために、「タスクキュー」とか「ジョブキュー」とか呼ばれる仕組みがよく用いられる。次々と発生するタスクリストをキューに入れていくスレッドと、キューに入っているタスクを次々と取り出して処理するスレッドが登場するモデルだ。 Kyoto製品群においては、スレッドの抽象化はKyoto Cabinetが担当するので、スレッドプール内臓タスクキューの実装はKCにて行うことにする。具体的には、以下のAPIを定義する。 class TaskQueue { public: // タスクを表す内部クラス class Task { p

    kazeburo
    kazeburo 2010/09/15
  • FAL Labs

    こんな疑問、悩みに答えます。 記事では「SESを半年で辞めるか悩んでいるエンジニア」に向けて、以下の内容・目的で記事を書いていきます。 SESを半年で辞めることは可能なのかどうか。 でも実は、退職可否を気にするより、も […]

    FAL Labs
    kazeburo
    kazeburo 2010/08/05
  • 1