RustでClient-side Load Balancingする

RustでClient-side Load Balancingを実現するための方法について書きました。

Client-Side Load Balancing

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

まずは、URLの一覧から順番に1つずつURLを取得してみます。

実行すると、以下のように出力されます。

"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"

http://instance01.example.comhttp://instance02.example.comhttp://instance03.example.comの順に繰り返し表示されているので、意図通りです。

これらをreqwestなどのHTTP Clientに渡せば、ラウンドロビン方式でのLoad Balancingを実現できます。実装は以下のようになります。(エラーハンドリングは省略しています)

ここではreqwestのgetメソッドに next_url()の結果を渡しています。

補足

参考

※1 Ribbonはこのブログを書いている2019年9月21日時点ではメンテナンス中になっています

--

--

Software engineer

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