先週末はThriftのスピード問題にはまり、ガンダム戦記にはまり、ほとんど外に出られませんでした。前回のエントリー(Thriftのスピードについて)の続きとなります。 やっぱりperlのクライアントライブラリに問題がありそう? 多くの有識者の方にアドバイスをいただき感無量でございます。前回のエントリーでは、perlライブラリ、pythonライブラリでThriftが異常なほどに遅いんじゃないか?といった内容でございました。当方のバグではないかと、おそるおそる前回のエントリーをポストしたのですが、tokuhiromさんがこの現象に関して調査と考察の結果を示してくれました(ThriftのPerl Clientが遅すぎる件について)。 クライアントが Pure Perl で書かれており、かつ実装に適当さが感じられ、「速そうには、みえないな。。。」と感じました。 Facebook 内で実際に使用され
ここまでの流れ Thriftの調査の続きです。前回のエントリー(Thriftのスピードが改善しました)では、Thriftのperlクライアントが遅いのはNagleアルゴリズムが原因ではないかという仮説をたて、そしてNagleアルゴリズムをオフにした状態で速度が向上したことを書きました。 それに対し、tokuhiromさんにより投稿されたエントリー(ThriftはThrift::BufferedTransport をつかいわすれると 147 倍遅くなってつかいものにならない)では、send(2)のバッファリングをしていないことが原因で、Thriftが吐き出すデフォルトのperlクライアントのスケルトンでは使われていない、 Thrift::BufferedTransport を使うことによってsend(2)がバッファリングされて、高速になることを示してくれました。加えてkazuhookuさんの
そもそもなんでnode.jsのThriftライブラリではBufferedTransportがサポートされず、FramedTransportのみが使える状態だったのか。Thriftの歴史的にはBufferedTransportの方が先行して存在しており、また仕様自体も単純のようだ。*1 実装を開始してみてわかったが、node.jsが採用する非同期I/OアーキテクチャのAPIと実に相性が悪い。Thriftが定義ファイルから各言語用のコードを自動生成する仕組みであることも関係している気がする。いざnode.jsの都合に合わないからといって、カジュアルに生成結果のコードを修正するわけにはいかない。また受信データ(を持っているはずのI/Oストリーム)からデータを読み出すところまでがThriftによる自動生成の範囲に含まれる。 (Twitterで言及を読んで追記) 普通にアプリケーション側のコードをコ
先日の node.jsからThrift経由でHiveServerに通信しようとして力尽きた - tagomorisのメモ置き場 の記事に書いた件、しばらくThriftの BufferedTransport の他言語実装を眺めていたらなんとなく作れそうな気がした*1ので、transport層を置き換え可能にするためのリファクタリングに半日、BufferedTransportの実装に半日をそれぞれかけてパッチを書いた。 github上でmasterを公開してる人にpullreqを送ってみたら取り込んでくれるようだ。その上 upstream(Apache Thriftプロジェクト本家)への取り込みへの提案もやってくれた。Rejectされることがなければ、待ってるとそのうちThriftを使う全プロジェクトで node.js でも実装できるようになる。自分が書いたパッチを当てたものを使うように意識し
準備 % sudo apt-get install build-essential automake libtool flex bison libboost\* % sudo apt-get install libbit-vector-perl libclass-accessor-perl インストール % cd program/thrift % wget -O thrift.tgz "http://gitweb.thrift-rpc.org/?p=thrift.git;a=snapshot;h=HEAD;sf=tgz" % tar zxvf thrift.tgz % cd thrift % ./bootstrap.sh % ./configure --disable-gen-java --without-java --disable-gen-csharp --disable-gen-st
ちょっと前に「thriftって便利らしいよー」って話を聞いていたのだけれども、なかなか手をつけられずにいたらはてなブックーマークで使われているらしいという噂を聞いたり、Thriftを使って俺俺Key-Value Storeを作ったのように、TXを使ったThriftの紹介などが出てきたりしたのでそろそろ自分でも試したいなあと思い、試しました。で、先に結論を言っておくとThrift、とても気に入りました。とても簡単に処理用の専用サーバをたてることができて、かつ簡単にクライアントから処理要求が送れます。ボクは今まではRESTFulな感じでhttpでこのタスクをやっていたのですが、RESTFulな専用サーバをたてるのは結構開発コストがかかるんですよね。その点で、Thriftは開発コストはとても落ちると思うのでとても気に入っています。なんといって言語バインディングを自動で生成してくれるのは本当に開発
All Thrift declarations ModuleServicesData typesConstants NoteStoreNoteStore authenticateToSharedNote authenticateToSharedNotebook copyNote createLinkedNotebook createNote createNotebook createOrUpdateNotebookShares createSearch createTag deleteNote emailNote expungeLinkedNotebook expungeNote expungeNotebook expungeSearch expungeTag findNoteCounts findNoteOffset findNotesMetadata findRelated getDe
このウェブサイトは販売用です! twiwt.org は、あなたがお探しの情報の全ての最新かつ最適なソースです。一般トピックからここから検索できる内容は、twiwt.orgが全てとなります。あなたがお探しの内容が見つかることを願っています!
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く