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. Dismiss alert
The gRPC client supports an API that allows load balancing policies to be implemented and plugged into gRPC. An LB policy is responsible for: receiving updated configuration and list of server addresses from the resolver creating subchannels for the server addresses and managing their connectivity behavior setting the overall connectivity state (usually computed by aggregating the connectivity sta
本記事はErlang Advent Calendar 2015の8日目の記事です。 最初に 本エントリでは、弊社で開発中のオンラインゲームサーバーエンジン「KiQ」の開発過程で得られた経験をもとに、Thriftの通信をErlang/OTPで仲介するといろいろなことができそうですよ、ということをご紹介します。 Thriftについて Thriftは、多言語対応のRPCで、現在 0.9.3 が配布されています(Apache Thrift公式サイト)。Thriftでは、サーバーとクライアントの間はTCPソケットやファイルなどが使用でき、その中を流れるプロトコルとしてバイナリやJSONなどが選択できるようになっています。 KiQでは、クライアントとKiQの間、およびKiQとプラグインの間の通信にThriftを採用しており、KiQの多言語対応は、Thriftによって実現されています。 公式のチュートリ
はじめに Finagleのクライアントが持っているらしいロードバランサ機能の詳細が不明だったので、調査してみた。 Load Balancer 概要 Finagleのクライアントはロードバランサを備えている。 ロードバランサは、クライアントスタックが持つエンドポイントの集合に対して、タスクをダイナミックに分散する。 ロードバランサの実装は「負荷メトリック」「ディストリビュータ」の2つで構成される。 負荷メトリック エンドポイントごとの負荷を計測している。未処理のリクエストの数やレイテンシなどを負荷の指標として使用する。 ディストリビュータ 負荷メトリックが計測したエンドポイントごとの負荷に応じて、タスクを書くエンドポイントに分散する。 アルゴリズム 下記4つの分散アルゴリズムが用意されていて、P2Cがデフォルトである。 Heap + Least Loaded ヒープ(バイナリツリー?)を使用
高速なオブジェクトシリアライズ形式 MessagePack をプロトコルに採用したRPCライブラリをリリースしました。 Ruby を使って簡単にRPCサーバーやクライアントを実装できます。 msgpack-rpc MessagePack-RPC プロトコルは既にkumofsやクラスタ管理ツール「clx」などで利用しており、高速なサーバーの実装にも便利ツールの実装にも、幅広く使えるシンプルなプロトコル仕様になっています。 clxを使うと複数のサーバーをグループに分けて、同じグループに属するサーバーに対して同じコマンドを実行できます。コマンドは並列して実行されるので、ファイル転送(rsync)のような時間のかかるコマンドでも快適に使えます。 clxのコアは汎用的なRPCサーバーで、RPC以外の機能はすべてモジュールとして実装されています。モジュールは起動時に登録できるほか、実行中でも追加でき、
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
以前に書いた MessagePack RPC プロトコル は少し古くなってしまったので、ここでまとめ直しておこうと思います。 MessagePack-RPCのプロトコルは、非同期型の呼び出しができる点(非同期プロトコル)が大きな特徴となっています。複数のサーバが相互に通信し合ったり、通信と計算をオーバーラップさせて高速化を図ったりするような、高度なネットワークアプリケーションを実装しやすくなります。 RPCライブラリと言うよりも、シンプルな非同期メッセージングライブラリと言えます。 ここではMessagePack-RPCのプロトコル仕様と、以上の特徴を活かせるような実装例も合わせて紹介します。 基本仕様:MessagePack-RPC specification version 0.1 MessagePack-RPCのプロトコルは、メソッドの呼び出すRequestメッセージと、それに対する
分散KVS kumofs のコードは、全体で約2万行です。 そのうち、ネットワークI/Oやプロトコルに関するコードは約1万行で、全体の約半分を占めています。 並列イベント駆動I/Oフレームワーク「mpio」リリース ネットワークアプリケーションを実装する上で、もっとも大きな障壁は、ネットワークI/Oとプロトコルです。 では、それが両方ともフレームワークでサポートされ、コードを書く必要が無くなったらどうでしょうか? 54行で簡単な分散KVSを実装したり、140行で分散リアルタイム検索エンジンを実装することができます。すなわち、インデックス作成サーバ、検索サーバ、DBサーバなど、多数のサーバが連携し、スケールアウトの恩恵を得ることができるネットワークアプリケーションを、1台のホスト上で動作する並列アプリケーションとほぼ同じように書くことができます。 実装上の問題から解放されれば、並列性や耐障害
コンピューター:C言語講座:RPCについて(1) 概要 C言語講座もだいぶ増えて来ましたが、全体を見るとプロセス間通信が実に豊富に揃っていることがわかります。個人的に別々のプロセスが連携するということが非常に興味があったのでこういう結果になっているわけですが、実は避けて来た話題があります。それがRPCです。リモートプロシジャーコールですが、正直な所、使ったことがありませんでした。 ネットワーク上の他のマシンの関数を自由に使用できるような物だろうというイメージを持っていたのですが、何しろRPCに関する文献が非常に少なく(とくに日本語の)、これまで手を出さずにいたわけですが、ここまで来たらやっておかねばということで、取り上げることにしました。 RPCはどの様な所で使用されているかというと、mountd,ypserv,ypbind,rusersd,walldなど、ネットワークを介していろいろなサ
ちょっと前に「thriftって便利らしいよー」って話を聞いていたのだけれども、なかなか手をつけられずにいたらはてなブックーマークで使われているらしいという噂を聞いたり、Thriftを使って俺俺Key-Value Storeを作ったのように、TXを使ったThriftの紹介などが出てきたりしたのでそろそろ自分でも試したいなあと思い、試しました。で、先に結論を言っておくとThrift、とても気に入りました。とても簡単に処理用の専用サーバをたてることができて、かつ簡単にクライアントから処理要求が送れます。ボクは今まではRESTFulな感じでhttpでこのタスクをやっていたのですが、RESTFulな専用サーバをたてるのは結構開発コストがかかるんですよね。その点で、Thriftは開発コストはとても落ちると思うのでとても気に入っています。なんといって言語バインディングを自動で生成してくれるのは本当に開発
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く