golangでKVSサーバーを実装してみた
golangの勉強がてらKVSのDBサーバーを雑に実装してみた。
DBの実装自体はbuntdbというライブラリをそのまま使っているので、あまり大した事はやっていないけど。
実装したDBサーバーについて
全体構成
大体こんな感じで実装されている。
- DBサーバーを起動して8888ポートで待ち受ける。
- clientが8888に接続しにくる。
- DBサーバーはclientを受け入れてgoroutineを起動する。
- groutineではclientからデータが送信されてくるのを待ち受ける。
- clientから送られた文字列を溜め込んで、コマンドとして解釈可能なレベルまで文字列が溜まるのを待つ。
- コマンドとして解釈可能なら、それを使ってDBエンジンにデータをRead/Writeしに行く。
その他
- 軽く試した感じRedisよりもRead/Writeが速かった。これはBuntDBがredisよりも速い実装だから当たり前だけど。※index貼っていないので貼るともっと速くなるかも。
- goroutineとchannelをうまく使いこなせていないのでgoroutineがリークしてるかもしれないのと、適当な実装がたくさんある。