A Reliable Collections bemutatása az Azure Service Fabric állapotalapú szolgáltatásaiban
A megbízható gyűjtemények lehetővé teszik, hogy magas rendelkezésre állású, méretezhető és kis késésű felhőalapú alkalmazásokat írjon, mintha egyetlen számítógépes alkalmazást ír. A Microsoft.ServiceFabric.Data.Collections névtér osztályai olyan gyűjteményeket biztosítanak, amelyek automatikusan magas rendelkezésre állásúvá teszik az állapotot. A fejlesztőknek csak a Reliable Collection API-kra kell programozniuk, és lehetővé kell tenniük, hogy a Reliable Collections felügyelje a replikált és a helyi állapotot.
A Reliable Collections és más magas rendelkezésre állású technológiák (például a Redis, az Azure Table service és az Azure Queue szolgáltatás) közötti fő különbség az, hogy az állapot helyileg marad a szolgáltatáspéldányban, miközben magas rendelkezésre állásúvá is válik. This means that:
- Minden olvasás helyi, ami alacsony késést és nagy átviteli sebességet eredményez.
- Minden írás a hálózati IOS minimális számát eredményezi, ami alacsony késést és nagy átviteli sebességet eredményez.
A megbízható gyűjtemények a System.Collections osztályok természetes fejlődésének tekinthetők : a felhőbeli és többszámítógépes alkalmazásokhoz tervezett gyűjtemények új készlete, amely a fejlesztő számára nem növeli az összetettségét. Így a reliable collections a következők:
- Replikált: Az állapotmódosítások replikálva vannak a magas rendelkezésre állás érdekében.
- Aszinkron: Az API-k aszinkron módon biztosítják, hogy a szálak ne legyenek blokkolva az I/O-k felmerülésekor.
- Tranzakciós: Az API-k a tranzakciók absztrakcióját használják, hogy egy szolgáltatáson belül több megbízható gyűjteményt is könnyedén kezelhessenek.
- Tartós vagy volatilis: Az adatok a lemezen tárolhatók a nagy léptékű kimaradások (például adatközpontok áramkimaradása) tartóssága érdekében. Egyes megbízható gyűjtemények olyan illékony módot is támogatnak (a Kikötésekkel), ahol minden adat memóriában marad, például replikált memóriabeli gyorsítótár.
A megbízható gyűjtemények erős konzisztenciát garantálnak a dobozon kívül, hogy megkönnyítse az alkalmazásállapotra vonatkozó érvelést. Erős konzisztencia érhető el úgy, hogy a tranzakció véglegesítése csak akkor fejeződik be, ha a teljes tranzakciót a replikák többségi kvórumában naplózták, beleértve az elsődlegest is. A gyengébb konzisztencia érdekében az alkalmazások az aszinkron véglegesítés visszatérése előtt vissza tudnak nyugtázni az ügyfélnek/kérelmezőnek.
A Reliable Collections API-k az egyidejű gyűjtemény api-k (a System.Collections.Concurrent névtérben találhatók):
- Aszinkron: Egy feladatot ad vissza, mivel az egyidejű gyűjteményekkel ellentétben a rendszer replikálja és megőrzi a műveleteket.
- Nincsenek kimenő paraméterek: Paraméterek
ConditionalValue<T>
helyett egybool
és egy értéket ad vissza.ConditionalValue<T>
olyan, mintNullable<T>
, de nem követeli meg, hogy T legyen a szerkezet. - Tranzakciók: Tranzakcióobjektum használatával lehetővé teszi a felhasználó számára a műveletek csoportosítását egy tranzakció több megbízható gyűjteményén.
A Microsoft.ServiceFabric.Data.Collections jelenleg három gyűjteményt tartalmaz:
- Megbízható szótár: Kulcs/érték párok replikált, tranzakciós és aszinkron gyűjteményét jelöli. A ConcurrentDictionary-hoz hasonlóan a kulcs és az érték is bármilyen típusú lehet.
- Megbízható üzenetsor: Replikált, tranzakciós és aszinkron szigorú, első-kimenő (FIFO) üzenetsort jelöl. A ConcurrentQueue-hoz hasonlóan az érték bármilyen típusú lehet.
- Megbízható egyidejű üzenetsor: A replikált, tranzakciós és aszinkron legjobb munkamennyiség-rendezési várólistát jelöli a magas átviteli sebesség érdekében. A ConcurrentQueue-hoz hasonlóan az érték bármilyen típusú lehet.