Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

読み込み(検索)処理の方が圧倒的に多いと予想されるようなKVS的なプロセスを、Erlang/OTPでどうやって効率的に(スケールアップするように)実装するか。 少し前にlocalという、名前のスコープを限定可能なプロセス名管理用ライブラリを実装した時に採用した方法のメモ。 結論 結論を先に書いてしまうと名前付きのETSを使うのが良い。 ETSを名前付き(and access=protected)にしておくことで、テーブルの所有プロセスを経由せずに読み込み処理を行うことが可能となる。 そのため、複数クライアントプロセスから同時に要求が来た場合でも、それらが(メッセージパッシングを通して)直列化されることなく、並列的に処理されることが期待できる。 実際に、今回測定した範囲では、ETSを使うことで読み込み処理はコア数に対してほぼ線形にスケールしていた。 実装例と性能比較 以降は、実際にETSを使
この場を借りて、以下の条件に合致する自作ライブラリ群の紹介をさせて貰います。 Erlangで記述されている 一年以内に更新があった ある程度汎用性が高い ある程度(最低限)ステーブル rebarの構成に準拠 ※ 諸事情で準備時間があまりとれなかったため、今回は本当に軽い紹介だけで、あまり有益な情報はないです... hash_ring https://github.com/sile/hash_ring コンシテントハッシュ法の実装ライブラリ 現状備えている機能 ノードの追加・削除 特定のキーに対するプライマリノードの検索や優先順位に基づくノードの畳み込み 各ノードの重み付け ハッシュアルゴリズムや仮想ノード数の指定 実装上の特徴 Pure-Erlang and No-ETS 副作用なし 仮想ノード群を保持するためにタプルを使っている ノード数が100で、個々の仮想ノード数が256なら、約2.
ErlangでHaskell風の Maybeモナド と do記法 を使う方法。エラーチェックなどを繰り返し行うコードが簡潔に記述できる。RabbitMQの開発者が公開した [erlando] (https://github.com/rabbitmq/erlando) で実現する。 erlandoにはListモナドやStateモナドなども含まれており、もちろん自分で新たにモナドを書くこともできる。また一部のモナドではMonadPlus型も実装されており guard/2 関数などが使える。さらに、関数の部分適用を読みやすく記述できる「cut」や、関数のインポート時に関数名を変更することで名前の衝突を避ける「import as」という機能もある。 maybe(A) 型 Erlang/OTPでは処理が失敗するかもしれない関数は、失敗したことを「例外」ではなく、「戻り値」で表現する。例えば list
HOME ニュース・イベント プレスリリース ACCESS、ElixirのWebアプリケーションフレームワークを「Antikythera Framework™」としてオープンソース化 プレスリリース ACCESS、ElixirのWebアプリケーションフレームワークを「Antikythera Framework™」としてオープンソース化 ― Webアプリケーション開発コミュニティを活性化 ― 株式会社ACCESS(本社:東京都千代田区、代表取締役社長:大石 清恭、以下ACCESS)は、本日、IoTサービス開発の活性化を目指し、自社開発のElixir(エリクサー)ベースのWebアプリケーションフレームワークを「Antikythera Framework™(アンティキティラ・フレームワーク)」としてOSS(オープンソース)化し、2018年4月27日、開発コミュニティ向けに公開いたします。 IoT
Posted on May 2, 2018 | Justin Schneck and Frank Hunleth We are thrilled to announce Nerves v1.0 is finally out. This has been 4219 commits by 102 contributors since the initial commit on October 29th, 2013! This would not have been possible without our corporate sponsors and individual backers. What’s Nerves? Nerves is tooling and core runtime support for creating bulletproof embedded software r
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く