Kawababa

始まり

今日は以下のことをやりました。

TTLでキャッシュを削除

該当コミット

自分で作っていたlrucacheだとttlの実装が難しそうで、しかもmuxなどの実装をしなくてはならず、それは難しそうだったので、 golang-lruを使用することにしました。

このlrucacheだと、Genericsで実装されていて、すごく使いやすくて、 すぐに移行することができました。

Maglev Hashingの実装

該当コミット

実際にMaglev Hashingを実装しました。

工夫した点としては、参考にしたMaglev Hashingでは、配列でしかも昇順であることが必須だった部分をmapで実装することにより、
O(1)の計算量で、特定のバックエンドがダウンしているかどうかわかるようにしたところです。

Forwarderの実装

該当コミット

Maglev Hashingが実装できたので、Forwarderの実装にも着手しました。

すごくシンプルな実装なので、飛んできたURLを見て、Maglev Hashingを使ってバックエンドを求めて、そこに対してリバースプロキシするだけです。 もしかしたら、ここでもキャッシュを行ったりすると、階層構造になって良かったりするのかな?わからない。

終わり

やりたいことリスト