Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Azure ServiceBus の負荷分散

こんばんは、statemachineです。Windows Azure Advent Calender 21日目です。相変わらず綱渡り的な感じなんですが、最後までバトンは渡るのでしょうか?!特にネタもないので、10月頃に追加されたAppFabric サービスバスの負荷分散について語ろうかと思います。

その前に、気づかなかったんですがWindows Azure AppFabricっていうブランド名は消滅ですか?MSDNのWindows Azure Platformの図みると、アレレなくなっているような気がします。また、MSDNライブラリの階層的にもAppFabricという文字が見あたりません。

Windows Azure Top Level Feature to Capability View



それはさておき、以前のサービスバスは、1つのサービスしか登録(Listen)できませんでした。これは負荷分散できないばかりでなく、コケたらおしまい的な単一障害点(SPOF)でした。

現在のサービスバスは、なんと25個までサービス登録可能となっており、負荷分散が可能になっていますし、SPOF的な欠点もなくなったわけです。ま、同じ回線を共有していたら、そこがSPOFになってしまう訳なんですが。

 

負荷分散は特別な処理は必要ありません。これまでは、多重にサービス登録しようとすると、AddressAlreadyInUseExceptionが発生してたわけですが、これが発生しなくなり、25までOKとなります。以下のようにいくつも登録できるわけです。25を超えて登録しようとすると、QuotaExceededExceptionが発生しまが、これは、この辺りに記述があります。

image

 

どのように負荷分散されるかは記述が見あたらなかったのでよくわかっておりませんが。Channelを使い回しているうちは、同じサービスに振り分けられるような挙動をしめしましたが、詳細はよく知りません。

 

以下は、オンプレのサービスにAzure上のクライアントから、Paralle.Forで並列に何百回か接続させてみたときの結果。毎回Channelを開いて接続しているのですが、分散されていることが分かります。(図の数字が接続された数のカウンタです)

image

 

以上、Azure上で検証したよ的な話であって、なんのオチもありませんが、色々と時間的なヨユーがないので、これにて失礼。