TodorokiKohei / mqttv5-broker

The fully compliant, embeddable high-performance Go MQTT v5 server for IoT, smarthome, and pubsub
MIT License
0 stars 0 forks source link

負荷分散アルゴリズムの設計 #4

Closed TodorokiKohei closed 1 year ago

TodorokiKohei commented 1 year ago

どのような負荷分散アルゴリズムを実装するかを考察する。

TodorokiKohei commented 1 year ago

一般的な負荷分散方式について

負荷分散の方式には静的負荷分散動的負荷分散がある。以下にそれぞれの特徴と具体的な実装を示す。 参考文献:負荷分散入門

静的負荷分散

あらかじめ定められたルールに従って配信先を選択する。

特徴

種類

動的負荷分散

サーバリソースなどをリアルタイムに監視しながら配信先を選択する。

特徴

種類

TodorokiKohei commented 1 year ago

一般的な動的負荷分散をより拡張した論文(読む候補)

以下の論文で挙げられていた論文が中心

TodorokiKohei commented 1 year ago

Response Time Based Balancing of Load in Web Server Clusters」で紹介されていた配信先のキュー内にある未処理のメッセージ数を追跡した分散配信手法がMQTTに適していると考えた。

SubscrberはPINGREQに"未処理のキュー内のメッセージ数"と"1メッセージあたりの処理時間"をJSONに格納してBrokerに送信する。Brokerはこの情報を管理し、配信時に最も未処理のメッセージ数が少ないSubscriberにメッセージを配信し、未処理のメッセージ数をインクリメントする。未処理のメッセージ数が同じ場合はメッセージ処理時間が早いものを優先的に採用する。

{
  “msgsInQueue”: x,
  “processsingTimePerMsg”: y
}