投稿

5月, 2019の投稿を表示しています

Elixir に入門したいので雑な 分散KVS を自作した

イメージ
長い連休を利用して、Elixir入門のために分散kVSを自作しました。
前書き 動機は以下の2点です。 Elixirに入門したかった何か自分で手を動かしたかった Erlangが書けるので同じErlangVM上の言語であるElixirが前から気になっていました。 丁度いい機会だし、入門してみるかな、くらいの気持ちで始めました。
初めてだったので、株式会社gumiが連載しているElixir入門の連載を開始(Elixir入門もくじ) - DEV Community 👩‍💻👨‍💻を参考にしました。単純な日本語翻訳ではなく、適宜加筆修正をしているようです。(後半に行くに連れて雑な文が増えているのが少しだけ残念でした。)
自分は集中力が無いので通読は苦手なのですが、23個の記事に全て目を通してから次を考えることにしました。Erlangと同じErlangVMで動くので、他の全く知らない言語よりは理解がしやすいだろうと思っていましたが、軽量プロセスやメッセージのやり取りといった基礎は共通していても、かなり機能が豊富、という印象を受けました。
なんとか全てを読み終わった後に、ErlangVMなので分散システムがいいな、と思い雑な分散KVSを作って見ることにしました。適当に検索したところBuilding a Distributed Fault-Tolerant Key-Value Store - The Blog of Fourthbitという、Apache Cassandraの概要を紹介しつつ、KVSの大事な部分の実装ぽいものを説明する、という記事を今回の目的にぴったりの記事を発見しました。この記事は実装するためにかなり参考になりました。 目標休みの間にそれっぽく動くところまで持っていくCRUD (Create/Read/Update/Delete) のインターフェースを持つ1台は落ちても読み書きができる耐障害性 出来たもの リポジトリはこちら
mopp/brownie: Hobby Distributed Key-Value Store 機能の概要N台1組のElixirクラスタを構築する実行時のノード追加は不可データはオンメモリで保持しているCRUD (Create/Read/Update/Delete) のインターフェースを持つElixir上の公開関数Key/ValueはE…