2

デプロイされた最初のインスタンスは常にゼロで終わりますか? 0. like "xxxx_IN_0" X インスタンスにスケールアップする場合、次のインスタンスは常に最後の数字として 1 2 3 4 を取得します。( そう思います)。再度縮小するとどうなりますか? インスタンスの1つをランダムに取得することを読みました。したがって、1 つのインスタンスにスケールダウンする場合、まだ実行中の ID がどの ID であるかを知っているとは限りません。

スケールアップとスケールダウンの際に ID をいじっていて、それらのことを知っている人はいますか?

私が尋ねる理由は、インスタンスの 1 つだけで実行したい追加のロジックがあるためです。「xxx_IN_0」が常に存在すると仮定できる場合は、最後の ID がゼロであることを簡単に確認するだけで済みます。そうでない場合は、すべての ID を確認することを検討しています。現在のインスタンスが最も低い場合は、その魔法を実行します。

最後のケースの場合、スケールアップまたはスケールダウンが行われたときに監視できるイベントはありますか?

アップデート

回答から:

    if (RoleEnvironment.IsAvailable)
    {
        RoleEnvironment.Changed += RoleEnvironment_Changed;
    }

    void RoleEnvironment_Changed(object sender, RoleEnvironmentChangedEventArgs e)
    {
        var change = e.Changes.OfType<RoleEnvironmentTopologyChange>().FirstOrDefault();
        if (change != null)
        {
            Trace.TraceInformation("RoleEnvironmentTopologyChange at RoleName '{0}'", change.RoleName);
    }

スケールアップおよびスケールダウンすると、トレースログに情報が表示されません。

イベントをトリガーするには、内部エンドポイントを設定する必要があります。

<InternalEndpoint name="InternalEndpoint1" protocol="http" />

http://blogs.msdn.com/b/windowsazure/archive/2011/01/04/responding-to-role-topology-changes.aspx

4

1 に答える 1

4

サービス構成が変更されたときに発生するRoleEnvironment.Changed イベントをリッスンする必要があります。

このイベントを受け取ったら、 RoleEnvironmentTopologyChangeのインスタンスのChangesプロパティを確認してください。この変更は、インスタンス数が変更されたときに報告されます。

その追加のロジックを実行するサーバーを決定するには、ロールのリストを調べて、そこからすべてのインスタンスを見つけることができます。インスタンスを ID でソートし、最初のものを特別なものとして選択します。

ただし、常に単一のサーバーのみがこの特別なロジックを実行することが重要な場合は、より安定したソリューションが必要になります。

于 2013-05-31T12:39:55.300 に答える