Az ismétlés nem egy második vásárlási döntés.
Vásárlási folyamatok nem sikerül a térben között egy külső fizetési esemény és egy in-game támogatás. A blokk érkezik kétszer. A hálózati kérelem időt követően a szerver elkötelezett állam, de mielőtt az ügyfél megkapta a választ. Egy folyamat összeomolhat, miután fenntartotta a tranzakció, de mielőtt a pénznem. Az újraindítás, a legbiztonságosabb intézkedés lehet, hogy újra a munka, hogy megszakadt. Ha a rendszer kezeli minden ismétlés, mint az engedély megadására, kettős jogosultságok egy normális következménye a visszanyerés.
A hasznos különbségtétel szándék kontra támogatás. A szándék az a kérés, hogy egy adott terméket egy adott tranzakciós identitás alapján szerezzenek be. A támogatás a tartós játékoldali eredmény: jogosultsági tulajdonjog, egy pénznem delta, egy leltár vagy egy előfizetési időszak. Ugyanezt a szándékot többször is ki lehet adni, meg kell vizsgálni, újra kell próbálni vagy újra kell adni.
Ez egy mérnöki minta, nem pedig egy platformspecifikus garancia. Különböző üzletek, fizetési szolgáltatók, és a játék backends felfedi a különböző elismervény, elismervény, és a visszatérítési viselkedés. Ne feltételezze, hogy egy elismervény bizonyítja, hogy a játékos látott egy elemet. Építse meg a szerver-side rekord, így a játék tudja, amit tud, és biztonságosan vissza, ha egy külső eredmény hiányos vagy késleltetett.
Minden vásárlás célja egy stabil kulcs
Egy idempotencia kulcs egy döntéshez köti az ismételt kézbesítési kísérleteket. A megbízható platform tranzakciós azonosítóból származhat, ha ez az azonosító rendelkezésre áll és ellenőrizhető, vagy egy szerver kiadhatja, mielőtt a vásárlás megkezdődne, és később a megbízható átvételi adatokhoz kapcsolódna. A kulcsnak stabilnak kell lennie a relék során. Új, véletlenszerű kulcs létrehozása minden alkalommal, amikor az ügyfél megnyomja a "restauration" -t, egyszerűen több olyan tranzakciót hoz létre, amelyek hasonlónak tűnnek.
Elég kontextust tárol az eltérések elutasításához: a játékos vagy a számla hatóköre, a termék azonosítója, a várható mennyiség vagy jogosultság formája, a forráscsatorna, a kapott idő, az ellenőrzési státusz és egy olyan állapot, mint a függőben lévő, elkötelezett, elutasított vagy szükséges állapot. Az érzékeny átvételi anyagot a szokásos naplókból ki kell hagyni. Ha a nyers szolgáltató terhelése rövid visszatartást igényel az ellenőrzött visszanyerési folyamathoz, azokat külön kell védeni, és a hozzáférést meg kell tervezni.
Az adatmodellnek egyediség-határra is szüksége van. A nem fogyasztható jogosultsághoz az egyediség lehet számla plusz termékazonosító. A pénznem esetében az egyediség általában főkönyvbe történő bejegyzés vagy támogatás tranzakció a jelenlegi egyenleg helyett. A fogyóeszközök esetében a megbízható tranzakciós azonosító akkor is egyedi lehet, ha a termék azonosítója ismétlődik. A kulcsot az újrafeldolgozási politika kódolása előtt meg kell határozni; ellenkező esetben két alrendszer lehet a nem kompatibilis azonosítók semlegesítése.
Minta az ismeretlen elkötelezettség eredménye
A nehéz kimenetel nem tiszta siker vagy tiszta kudarc. Ez "ismeretlen": az ügyfél nem tudja, hogy a szerver követte-e el a támogatást. Időzítés, kapcsolat újraindítás, folyamat újraindítása, vagy szolgáltatás outage képes előállítani ezt az állapotot. A biztonságos kliens viselkedés az, hogy kérje a tranzakciós státuszt, vagy próbálja újra ugyanazt a szándékot. A biztonságos szerver viselkedés az, hogy vizsgálja meg ezt a szándékot, és adja vissza a tartós döntést, ahelyett, hogy egy másik mutációt alkalmazna.
Ne tegye az ügyfél kijelző állam autoritative. A spinner eltűnése, a helyi átvételi cache, vagy optimista egyensúly változás javíthatja a tapasztalatot, de nem tudja eldönteni, hogy a számla birtokol-e jogosultságot. Server hatóság azt jelenti, hogy a szerver ellenőrzi az elfogadott tranzakció szerint a termék bizalmi határ, vállalja a tartós rekord egyszer, és visszatér a jelenlegi állapot, ha újra kéri.

A sorozatnak láthatóvá kell tennie a részleges befejezés politikáját. Például: a szándék megszerzése, a megbízható vásárlási bizonyíték hitelesítése, a tartós főkönyv létrehozása vagy betöltése, a jogosultság vagy a valutamutáció, az adott rekord megjelölése, a külső kézbesítés elismerése, és adott esetben az eredmény visszaadása. Ha a folyamat két lépés között megáll, a helyreállító vagy későbbi állapotfelmérési kérdés folytatódhat a tartós nyilvántartásból. A pontos megrendelés a külső szolgáltatótól és a játék architektúrájától függ, de az egységes támogatási azonosság nem.
Jogosultság és pénznem-változók védelme
Egy idempotencia kulcs megakadályozza a visszajátszás egy szándék; nem automatikusan teszi minden mellékhatás helyes. Definiate the inverariants a támogatás kell megőrizni. Egy nem fogyasztható jogosultság jelenik meg legfeljebb egyszer a számla és a termék. A deviza támogatás van egy főkönyv bejegyzés egy tranzakciós kulcs, egy ismert delta, és az ebből eredő egyenleg, amely megfelel az összes érvényes bejegyzések. Felvételi támogatások engedelmeskedik verem, kapacitás, és az item- definíciós szabályok. Egy előfizetési időszak nem meghosszabbodik kétszer, mert a megerősítő végpont futott kétszer.
A folyamatos ellenőrzés része ugyanaz a tartós művelet, amely vállalja a támogatást. Egy olvasás után egy későbbi írás versenyezhet az egyidejű szállítás alatt. Két munkavállaló is megfigyelheti a "nem tulajdonosa" és mindkét támogatás. Használja a tranzakciós tárolás, kompare- és beállított szemantika, egy sorozatos számla mutációs út, vagy egy másik explicit konvaluta primitív alkalmas az adattároló. A fontos tulajdonság az, hogy a döntés és a marker nem lehet önállóan nyerni két kísérlet.
Az inmemória-futási idejű játékok esetében különböztesse meg a tartós sikert a prezentációtól. A szerver frissítheti a játékos látható egyensúlyát, miután a tartós naplóbejegyzés megtörténik, de a látható frissítés nem a bizonyíték. A kapcsolat újraindításakor vagy újraindításkor a bemutatott állapotot a tartós fiók rekordból kell újjáépíteni. Ez a késleltetett ügyfél-válasz kényelmetlenné teszi, nem pedig pénzügyileg nem biztonságos.
Tesztösszeomlások, újraindítások és szándékos újraszállítás
Kezdje egy meghatározó forgatókönyv. Hozzon létre egy számlát, egy termék, egy ismert indulási egyenleg vagy jogosultság készlet, és egy stabil tranzakciós kulcs. Futtassa az áramlás, majd adja be a hiba után minden megnevezett határ: után elfogadás, után főkönyv létrehozása, után jogosultsági mutáció, után státusz jelölés, külső elismerést, és miután a válasz készült. Újra az érintett munkavállaló vagy folyamat, próbálja újra ugyanazt a kulcsot, és érvényesítse a végleges tartós állapot.
A várt eredmény legyen egyedi. A remry vissza "már megadott" az eredeti eredmény, újra egy függőben lévő művelet, elutasítja a hibás hasznos teher, vagy egy rekordot felülvizsgálat. Nem kell hozzáadni egy második leltár tétel, alkalmazza a második valuta delta, vagy elrejteni az ismeretlen állam egy kitalált siker.
Használjuk az átvételi elismervényt ugyanazon forgatókönyv szerint. Szállítsuk le a pontos megbízható tranzakciót kétszer, majd egy újraindítás után adjuk át, majd szállítsuk le egy másik kliens újraindítása mellett. Az így kapott főkönyvnek és számlaállapotnak azonosnak kell lennie az egyedi kézbesítési esettel. Ha a termék engedélyezi az ismételt vásárlást, futtassuk ugyanazt a sorozatot két valóban különálló tranzakciós identitással, hogy bizonyítsuk, a rendszer nem deplikálja túl a termék azonosítóját.
Tartsd meg a határokat.
A tesztelés csak az Ön által végrehajtott kölcsönhatásokat tudja bizonyítani. A szimulált szolgáltató válasza hitelesítheti az állami gépét, de nem bizonyítja, hogy minden gyártó éle pontosan ugyanúgy viselkedik. A homokozóval szembeni végrehajtható teszt bizalmat adhat az integrációhoz, de még mindig különböző működési feltételek állnak fenn az élő bolttól. Jegyezze fel, hogy egy forgatókönyv szimulációt, helyi adaptert, homokozót vagy ellenőrzött szolgáltatói környezetet használ-e.
A megbízhatósági határnak is egyértelműnek kell lennie. Az ügyfél nem nyújthat be önkényes összeget, termékazonosítót vagy "ellenőrzött" jelzést, és nem kap támogatást. A bemenetek mindaddig nem megbízhatóak, amíg a szerver nem hitelesíti őket a megfelelő konfigurációval és vásárlási bizonyítékkal szemben. Ha az érvényesítés nem tudja befejezni, tartsa meg a függőben lévő szándékot vagy utasítsa el azt egy visszaigényelhető kategóriával. Ne hagyja, hogy az ismételt sor megkerülje a hitelesítést.
Adatvédelem vonatkozik erre a vizsgálati fegyelem. Fixturs kell használni szintetikus tranzakciós adatok. Logs kell hivatkoznia a biztonságos vizsgálati azonosító, nem nyers nyugta vagy számlanév. Egy gyártási esemény megkövetelhet korlátozott bizonyíték, de a rutin vizsgálati lakosztály soha nem válik második fizetési-adattároló.
Gyakorlati ellenőrzőlista
- Válasszanak ki egy stabil vásárlási szándékot a későbbi játékoldalas támogatástól.
- Használjon egy idempotencia kulcsot a szünetek, ismétlések, újraindítások és átvételi átszállítás során.
- A számla, a termék vagy a jogosultsági forma és a megbízható forráskörnyezet kulcsát kell megadni.
- Határozza meg az olyan tartós államokat, mint a függőben lévő, elkötelezett, elutasított és a szükségletek felülvizsgálata.
- A jogosultsági egyediség és a jelenlegi főkönyv-változók biztosítása ugyanazon a határon belül, mint a támogatás.
- Minden egyes átmeneti állapot után fecskendezze be a hibákat, majd kezdje újra és próbálja újra ugyanazt a szándékot.
- Vizsgálat kétszeres szállítás és jogszerű ismételt vásárlások külön.
- Jelentse az ismeretlen eredményeket őszintén; ne alakítson át egy időt egy feltalált siker.
- Tartsuk recept-szerű rögzítések és tesztnaplók szintetikus és átszerkesztett.
Gyakran feltett kérdések
Egy egyedi elismervény-azonosító elég az idempotenciához?
Hasznos komponens lehet, ha a szerver ellenőrizni tudja, hogy az átvételi azonosítás megbízható-e, és helyesen terjed-e. Még mindig fontos, hogy a kapott támogatási döntést, az eltérési politikát és a helyreállítási állapotot megőrizzük. Egy rendszer ugyanazt az azonosítót többször is megkaphatja, késve vagy olyan hasznos terheléssel, amely nem felel meg a tárolt termékkörnyezetnek. A tartós adatrögzítés az, ami ezeket az eseteket ellenőrizhetővé teszi.
A kliensnek egy kis szünet után automatikusan újra kell próbálkoznia?
Általában vissza kell próbálnia a státusz felbontását ugyanazzal a szándékkal, határolt visszacsatolással és egyértelmű felhasználói visszajelzéssel. Akár újra kell adnia a külső vásárlási bizonyítékokat, attól függ, hogy a szolgáltató és a hitelesítés. A nem biztonságos viselkedés csendben létrehoz egy új vásárlási kérelmet, vagy alkalmaz egy helyi támogatást, mert az eredeti válasz elveszett.
Hogyan különböznek a fogyóeszközök az állandó jogosultságoktól?
Az állandó jogosultságok rendszerint számláról és termékről zárolódnak le. A fogyóeszközök lehetővé tehetik, hogy ugyanazt a terméket többször is megvásárolják, így az egyediség határának tartalmaznia kell egy tranzakciós azonosítót vagy főkönyvet, nem pedig csak a termékösszetételt. Mindkettőnek egyetlen tartós támogatásra van szüksége minden elfogadott szándékhoz.
Mit állít itt az Persistium?
Persistium fejlesztés alatt áll. Ez a megjegyzés kifejti, hogy széles körben alkalmazható integritási és teszt- design minták; ez nem azt állítja, hogy egy nyilvános vásárlási termék, platform tanúsítás, ügyfél esemény története, vagy a hostolt szolgáltatás. Folytonosság irányát érdekli az azonos típusú határolt bizonyítékok és lejátszás biztonságos helyreállítási fegyelem.







