Ajánlott adatmegőrzési eljárások

Ez a dokumentum bemutatja a munkafolyamatok tervezésének és konfigurálásának ajánlott eljárásait a munkafolyamatok megőrzésével kapcsolatban.

Tartós munkafolyamatok tervezése és megvalósítása

A munkafolyamatok általában rövid időszakokban végeznek munkát, amelyek olyan időpontokkal vannak összekötve, amelyek során a munkafolyamat tétlen, mert egy eseményre vár. Ez az esemény lehet üzenet vagy lejáró időzítő. Ahhoz, hogy a munkafolyamat-példány inaktívvá váljon, a szolgáltatás gazdagépének meg kell őriznie a munkafolyamat-példányt. Ez csak akkor lehetséges, ha a munkafolyamat-példány nincs nem megőrzendő zónában (például tranzakció befejeződésére vár, vagy aszinkron visszahívásra vár). Ha engedélyezni szeretné egy tétlen munkafolyamat-példány eltávolítását, a munkafolyamat-szerzőnek csak a rövid élettartamú műveletekhez kell tranzakciós hatóköröket és aszinkron tevékenységeket használnia. A szerzőnek különösen fontos, hogy a késleltetési tevékenységeket a lehető legrövidebb időre korlátozza ezekben az átmeneti zónákban.

A munkafolyamatok csak akkor tárolhatók, ha a munkafolyamat által használt összes adattípus szerializálható. Emellett a perzisztált munkafolyamatokban használt egyéni típusoknak NetDataContractSerializer szerializálhatónak kell lenniük ahhoz, hogy SqlWorkflowInstanceStore által perzisztálhatók legyenek.

A munkafolyamat-példány nem állítható helyre gazdagép vagy számítógép meghibásodása esetén, ha nem lett mentve. Általában azt javasoljuk, hogy a munkafolyamat életciklusának korai szakaszában őrizze meg a munkafolyamat egy példányát.

Ha a munkafolyamat hosszú ideig foglalt, javasoljuk, hogy a munkafolyamat-példányt rendszeresen őrizze meg a forgalmas időszakban. Úgy teheti meg, hogy Persist tevékenységeket ad hozzá a tevékenységek sorozatához, amelyek a munkafolyamat-példányt lefoglalva tartják. Ily módon az alkalmazási domain újrahasznosítása, a gazdagép-meghibásodások vagy a számítógép-meghibásodások nem okozzák a rendszer visszaállását a foglalt időszak kezdetére. Vegye figyelembe, hogy a tevékenységek munkafolyamathoz való hozzáadása Persist a teljesítmény romlásához vezethet.

A Windows Server App Fabric jelentősen leegyszerűsíti a konfigurálást és az adatmegőrzés használatát. További információ: Windows Server App Fabric Persistence

Méretezhetőségi paraméterek konfigurálása

A méretezhetőség és a teljesítmény követelményei az alábbi paraméterek beállításait határozzák meg:

Ezeket a paramétereket a jelenlegi forgatókönyvnek megfelelően a következőképpen kell beállítani.

Forgatókönyv: Kevés olyan munkafolyamat-példány, amely optimális válaszidőt igényel

Ebben a forgatókönyvben az összes munkafolyamat-példánynak betöltve kell maradnia, amikor tétlenné válnak. Állítsa be TimeToUnload nagy értékre. Ennek a beállításnak a használata megakadályozza, hogy egy munkafolyamat-példány a számítógépek között mozogjon. Ezt a beállítást csak akkor használja, ha az alábbiak közül legalább egy igaz:

  • A munkafolyamat-példányok egész élettartama során egyetlen üzenetet kapnak.

  • Minden munkafolyamat-példány egyetlen számítógépen fut

  • A munkafolyamat-példány által fogadott összes üzenetet ugyanaz a számítógép fogadja.

Használja a Persist tevékenységeket, vagy állítsa TimeToPersist értékét 0-ra, hogy lehetővé tegye a munkafolyamat-példány helyreállítását a szolgáltatásgazda vagy a számítógép meghibásodása után.

Forgatókönyv: A munkafolyamat-példányok hosszú ideig tétlenek

Ebben a forgatókönyvben állítsa TimeToUnload értékét 0-ra az erőforrások lehető leghamarabbi kiadására.

Forgatókönyv: A munkafolyamat-példányok rövid idő alatt több üzenetet kapnak

Ebben a forgatókönyvben állítsa TimeToUnload 60 másodpercre, ha az üzeneteket ugyanaz a számítógép fogadja. Ez megakadályozza a munkafolyamat-példányok kiürítésének és betöltésének gyors sorozatát. Így a példány nem marad túl sokáig a memóriában.

Állítsa be TimeToUnload a 0 értéket, és állítsa a BasicRetry vagy az AggressiveRetry értékre InstanceLockedExceptionAction , ha ezeket az üzeneteket különböző számítógépek fogadhatják. Ez lehetővé teszi, hogy a munkafolyamat-példányt egy másik számítógép betöltse.

Forgatókönyv: A munkafolyamat rövid időtartamú késleltetési tevékenységeket használ

Ebben a forgatókönyvben a SqlWorkflowInstanceStore rendszer rendszeresen lekérdezi a kitartó adatbázist olyan példányok után, amelyeket lejárt Delay tevékenység miatt be kell tölteni. Ha a SqlWorkflowInstanceStore következő lekérdezési időközben lejáró időzítőt talál, az SQL Workflow Instance Store lerövidíti a lekérdezési időközt. A következő szavazás az időzítő lejárta után következik be. Így az SQL Workflow Instance Store nagy pontosságú időzítőket ér el, amelyek hosszabb ideig futnak, mint a lekérdezési időköz, amelyet a rendszer beállít RunnableInstancesDetectionPeriod. A rövidebb késések időben történő feldolgozásának engedélyezéséhez a munkafolyamat-példánynak legalább egy lekérdezési időközig a memóriában kell maradnia.

Állítsa a TimeToPersist értékét 0-ra, hogy a lejárati időt az adatmegőrzési adatbázisba írja.

Állítsa a TimeToUnload hosszabbra vagy egyenlőre, hogy az instance a memóriában maradjon legalább egy lekérdezési időközön keresztül.

Nem javasoljuk a csökkentést, RunnableInstancesDetectionPeriod mert ez a megőrzési adatbázis megnövekedett terheléséhez vezet. A SqlWorkflowInstanceStore-t használó minden szolgáltatás-gazdagép észlelési időszakonként egyszer lekérdezi az adatbázist. Ha RunnableInstancesDetectionPeriod-t túl kicsi időintervallumra állítja, a rendszer teljesítménye csökkenhet, ha a szolgáltatás gazdagépeinek száma nagy.

Az SQL Workflow Instance Store konfigurálása

Az SQL Workflow Instance Store a következő konfigurációs paraméterekkel rendelkezik:

InstanceEncodingOption Ez a paraméter utasítja a SqlWorkflowInstanceStore munkafolyamat-példány állapotának tömörítésére. A tömörítés csökkenti az adatmegőrzési adatbázisban tárolt adatok mennyiségét, és csökkenti a hálózati forgalmat abban az esetben, ha az adatmegőrzési adatbázis egy dedikált adatbázis-kiszolgálón található. Ha tömörítést használ, számítási erőforrásokra van szükség a példány állapotának tömörítéséhez és kinyeréséhez. A legtöbb esetben a tömörítés növeli a teljesítményt.

InstanceCompletionAction Ez a paraméter utasítja a SqlWorkflowInstanceStore befejezett példányok megőrzésére vagy törlésére. A befejezett példányok megtartása növeli a tárolóadatbázis tárolási követelményeit, és nagyobb táblákhoz vezet, ami növeli a táblák keresési idejét. Ha nincs szükség befejezett példányokra a hibakereséshez vagy a naplózáshoz, a legjobb, ha utasítja a SqlWorkflowInstanceStore befejezett példányok törlését. A törölt példányokat csak akkor szabad megőrizni, ha a felhasználó létrehoz egy folyamatot a példányok végleges eltávolítására. Vegye figyelembe, hogy a korrelációs kulcsok nem használhatók újra, amíg a befejezett munkafolyamat-példány a tárolóban van.

RunnableInstancesDetectionPeriod Ez a paraméter határozza meg azt a maximális időközt, amellyel a SqlWorkflowInstanceStore rendszer lekérdezi az adatmegőrzési adatbázist azon példányok esetében, amelyeket egy Delay tevékenység lejáratakor be kell tölteni. Ha egy SqlWorkflowInstanceStore időzítőt talál, amely a következő lekérdezési időközben lejár, lerövidíti a lekérdezési időközt, hogy a következő lekérdezés közvetlenül az időzítő lejárta után történjen. Így az SQL Workflow Instance Store nagy pontosságot biztosít a hosszabb ideig futó időzítők számára RunnableInstancesDetectionPeriod.

Nem javasoljuk a RunnableInstancesDetectionPeriodcsökkentést, mert ez nagyobb terhelést okoz a perzisztencia-adatbázisra. A SqlWorkflowInstanceStore-t használó minden szolgáltatás-gazdagép észlelési időszakonként egyszer lekérdezi az adatbázist. Ha túl rövid időközre állítja be a RunnableInstancesDetectionPeriod értéket, a rendszer teljesítménye csökkenhet, ha a szolgáltatás gazdagépeinek száma nagy.

HostLockRenewalPeriod Ez a paraméter határozza meg azt az időközt, amellyel a szerver megújítja a zárolást az adatmegőrzési adatbázisban. Az időköz lerövidítése lehetővé teszi a munkafolyamat-példányok gyorsabb helyreállítását, ha egy gazdagép vagy számítógép meghibásodik. Másrészt a rövid zárolásmegújítási időszak növeli a perzisztencia-adatbázis terhelését. Minden, az adatbázis SqlWorkflowInstanceStore zárolását használó szolgáltatás gazdagép megújítási időszakonként egyszer frissíti a zárolásokat az adatbázisban. Ha egy számítógép számos szolgáltatás-gazdagépet futtat, győződjön meg arról, hogy a zárolási megújítás által okozott terhelés nem csökkenti a rendszer teljesítményét. Ha igen, fontolja meg a HostLockRenewalPeriod növelését.

InstanceLockedExceptionAction Ha engedélyezve van, a SqlWorkflowInstanceStore következő 30 másodpercben újra megpróbál betölteni egy zárolt példányt. Állítsa be a InstanceLockedExceptionAction értékét BasicRetry vagy AggressiveRetry-ra, ha a munkafolyamat rövid időn belül több üzenetet kap, és ezeket az üzeneteket különböző számítógépek fogadják.

Mivel a terhelés-újrapróbálkozás mechanizmusa nem jár teljesítményterheléssel mindaddig, amíg a terhelés újrapróbálkozása nem történik meg, InstanceLockedExceptionAction mindig engedélyezni kell.