RustでClient-side Load Balancingする

Client-Side Load Balancing

Client-side Load Balancingとはクライアントがリクエスト先のサービスインスタンスの位置を把握し、クライアント自体が負荷分散することです。Client-Side Load Balancingを実現するソフトウェアとしてはNetflixのRibbonが有名でしょう。※1

ラウンドロビン方式での実装

負荷分散の方法としては最も素朴であろうラウンドロビン方式で実装しました。http://instance01.example.comhttp://instance02.example.comhttp://instance03.example.comに対して、均等にトラフィックを振り分ける例です。

"http://instance01.example.com"
"http://instance02.example.com"
"http://instance03.example.com"
"http://instance01.example.com"
"http://instance02.example.com"
"http://instance03.example.com"
"http://instance01.example.com"
"http://instance02.example.com"
"http://instance03.example.com"
"http://instance01.example.com"

補足

AtomicUsizeやOrderingなどAtomicなものを使用しているのは、サーバーに対して並列にリクエストすることも想定しているためです。これらはスレッド間でも安全に共有できます。

参考

--

--

Software engineer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store