Megosztás a következőn keresztül:


Újrapróbálkozési szabályzat implementálása a .NET-tel

A felhőben futó vagy a távoli szolgáltatásokkal és erőforrásokkal kommunikáló alkalmazásoknak képesnek kell lenniük az átmeneti hibák kezelésére. Gyakran előfordul, hogy ezek az alkalmazások a hálózati kapcsolat pillanatnyi megszakadása, egy szolgáltatás vagy erőforrás foglaltsága esetén a kérések időtúllépése vagy más tényezők miatt tapasztalnak hibákat. A fejlesztőknek olyan alkalmazásokat kell létrehozniuk, amelyek transzparensen kezelik az átmeneti hibákat a stabilitás és a rugalmasság javítása érdekében.

Ebből a cikkből megtudhatja, hogyan állíthat be újrapróbálkozési szabályzatot az Azure Storage.NET-hez készült Azure Storage ügyfélkódtár használatával az Azure Blob Storage-hoz csatlakozó alkalmazásokhoz. Az újrapróbálkoztatási szabályzatok meghatározzák, hogyan kezeli az alkalmazás a sikertelen kérelmeket, és mindig úgy kell hangolni, hogy megfeleljen az alkalmazás üzleti követelményeinek és a hiba jellegének.

Újrapróbálkozás beállításainak konfigurálása

A Blob Storage újrapróbálkozési szabályzatai programozott módon vannak konfigurálva, így szabályozható, hogy a rendszer hogyan alkalmazza az újrapróbálkozások beállításait a különböző szolgáltatáskérésekre és forgatókönyvekre. A felhasználói interakción alapuló kéréseket kibocsátó webalkalmazások például kevesebb újrapróbálkozással és rövidebb késéssel rendelkező szabályzatot implementálhatnak, hogy növeljék a válaszképességet, és hiba esetén értesítsék a felhasználót. Másik lehetőségként egy, a háttérben kötegelt kérelmeket futtató alkalmazás vagy összetevő növelheti az újrapróbálkozások számát, és exponenciális visszalépési stratégia használatával lehetővé teheti a kérés sikeres befejezését.

Az alábbi táblázat a RetryOptions osztály tulajdonságait, valamint a típust, egy rövid leírást és az alapértelmezett értéket sorolja fel, ha nem hajt végre módosításokat. Proaktívnak kell lennie ezeknek a tulajdonságoknak az értékeinek finomhangolásában az alkalmazás igényeinek megfelelően.

Tulajdonság Típus Leírás Alapértelmezett érték
Késés TimeSpan A rögzített megközelítés újrapróbálkozási kísérletei közötti késés, vagy az a késés, amelyre a visszalépésen alapuló megközelítés számításait alapozza. Ha a szolgáltatás újrapróbálkozási válaszfejlécet biztosít, a következő újrapróbálkozást a fejléc értéke által megadott időtartam késlelteti. 0,8 másodperc
MaxDelay TimeSpan Az újrapróbálkozási kísérletek közötti maximális megengedett késleltetés, ha a szolgáltatás nem ad meg újrapróbálkozási válaszfejlécet. Ha a szolgáltatás újrapróbálkozási válaszfejlécet biztosít, a következő újrapróbálkozást a fejléc értéke által megadott időtartam késlelteti. 1 perc
MaxRetries egész Az újrapróbálkozási kísérletek maximális száma a feladás előtt. 5
Üzemmód RetryMode Az újrapróbálkozási késések kiszámításának módszere. Exponenciális
NetworkTimeout TimeSpan Az egyes hálózati műveletekre alkalmazott időtúllépés. 100 másodperc

Ebben a Blob Storage-kód példában a BlobClientOptions osztály tulajdonságában konfiguráljuk az Retry újrapróbálkozási beállításokat. Ezután létrehozunk egy ügyfélobjektumot a blobszolgáltatáshoz az újrapróbálkozás beállításaival.

// Provide the client configuration options for connecting to Azure Blob Storage
BlobClientOptions blobOptions = new BlobClientOptions()
{
    Retry = {
        Delay = TimeSpan.FromSeconds(2),
        MaxRetries = 5,
        Mode = RetryMode.Exponential,
        MaxDelay = TimeSpan.FromSeconds(10),
        NetworkTimeout = TimeSpan.FromSeconds(100)
    },
};

BlobServiceClient blobServiceClient = new BlobServiceClient(
    accountUri,
    new DefaultAzureCredential(),
    blobOptions);

Ebben a példában az objektumból kibocsátott szolgáltatáskérések az BlobServiceClient objektumban BlobClientOptions meghatározott újrapróbálkozési beállításokat használják. Az alkalmazás igényeinek megfelelően különböző újrapróbálkozási stratégiákat konfigurálhat a szolgáltatás-ügyfelek számára.

Georedundancia használata az alkalmazás rugalmasságának javítása érdekében

Ha az alkalmazás magas rendelkezésre állást és nagyobb rugalmasságot igényel a hibákkal szemben, az újrapróbálkozásokra vonatkozó szabályzat részeként használhatja az Azure Storage georedundáns lehetőségeit. A georedundáns replikációhoz konfigurált tárfiókok szinkron módon replikálódnak az elsődleges régióban, és aszinkron módon replikálódnak egy több száz kilométerre lévő másodlagos régióba.

Az Azure Storage két lehetőséget kínál a georedundáns replikációhoz: a georedundáns tárolást (GRS) és a georedundáns tárolást (GZRS). A tárfiók georedundanciának engedélyezése mellett a másodlagos régióban lévő adatokhoz való olvasási hozzáférést is konfigurálnia kell. A tárfiók replikációs beállításainak módosításáról a Tárfiók replikálás módjának módosítása című témakörben olvashat.

Ebben a példában a GeoRedundantSecondaryUri tulajdonságot állítjuk be a következőben BlobClientOptions: . Ha ez a tulajdonság be van állítva, a rendszer a másodlagos URI-t használja GET , vagy HEAD az újrapróbálkozások során kéri. Ha a másodlagos URI válaszának állapota 404, akkor a kérés későbbi újrapróbálkozásai nem használják újra a másodlagos URI-t, mivel ez az állapotkód azt jelzi, hogy az erőforrás még nem propagálta ott. Ellenkező esetben az ezt követő újrapróbálkozások az elsődleges és a másodlagos URI között oda-vissza váltanak.

Uri secondaryAccountUri = new Uri($"https://{accountName}-secondary.blob.core.windows.net/");

// Provide the client configuration options for connecting to Azure Blob Storage
BlobClientOptions blobOptionsGRS = new BlobClientOptions()
{
    Retry = {
        Delay = TimeSpan.FromSeconds(2),
        MaxRetries = 5,
        Mode = RetryMode.Exponential,
        MaxDelay = TimeSpan.FromSeconds(10),
        NetworkTimeout = TimeSpan.FromSeconds(100)
    },

    // Set the secondary storage URI
    GeoRedundantSecondaryUri = secondaryAccountUri
};

BlobServiceClient blobServiceClient = new BlobServiceClient(
    accountUri,
    new DefaultAzureCredential(),
    blobOptionsGRS);

A georedundanciát használó alkalmazásoknak figyelembe kell vennie néhány konkrét tervezési szempontot. További információ: Georedundancia használata magas rendelkezésre állású alkalmazások tervezéséhez.

Következő lépések