Uudelleenyritys ei ole toinen ostopäätös
Ostovirrat epäonnistuvat ulkoisen maksutapahtuman ja peliapurahan välillä. Kuitti voi saapua kahdesti. Verkkopyyntö voi jäädä pois palvelimen sitoman tilan jälkeen, mutta ennen kuin asiakas sai vastauksen. Prosessi voi kaatua tapahtuman varaamisen jälkeen, mutta ennen valuutan myöntämistä. Uudelleenkäynnistämisen yhteydessä turvallisin toiminta voi olla keskeyttää työn uudelleen. Jos järjestelmä käsittelee jokaisen uudelleenhaun luvan myöntämiseen, päällekkäiset oikeudet ovat normaali seuraus perinnästä.
Hyödyllinen ero on tarkoitus vastaan apuraha. Intent on pyyntö saada tietty tuote tietyn tapahtuman identiteetin. Avustus on kestävä pelin puolella tulos: oikeuden omistajuus, valuutta suisto, varaston erä, tai merkintäaika. Sama tarkoitus voidaan toimittaa, tiedustella, hakea, tai palauttaa monta kertaa. Sen pitäisi silti ratkaista yksi avustuspäätös.
Tämä on tekninen malli, ei alustakohtainen takuu. Eri kaupat, maksupalveluntarjoajat, ja pelin backends paljastaa erilaisia kuitti, vahvistus, ja palauttaa käyttäytymistä. Älä oleta kuitti todistaa apurahan, tai että vahvistus todistaa pelaajan nähnyt kohteen. Rakenna palvelimen puolella ennätys, jotta peli voi kertoa, mitä se tietää ja toipua turvallisesti, kun ulkoinen tulos on epätäydellinen tai viivästynyt.
Anna jokaiselle ostoaikeelle vakaa avain
Idemponency-avain sitoo toistuvat toimitusyritykset yhteen päätökseen. Se voi johtua luotettavasta alustan tapahtumatunnisteesta, kun tämä tunniste on saatavilla ja todennettu, tai se voidaan antaa palvelimelta ennen kuin osto alkaa ja linkitetään myöhemmin luotettaviin vastaanottotietoihin. Avaimen on oltava vakaa kaikissa uusintatiedoissa. Luominen uusi satunnaisavain joka kerta, kun asiakas painaa .
Tallenna riittävästi kontekstia avain torjua eroavuudet: pelaaja tai tili soveltamisala, tuote-identiteetti, odotettu määrä tai oikeus muoto, lähdekanava, vastaanotettu aika, todentamisen tila, ja valtio kuten vireillä, sitoutunut, hylätty tai tarve-arvioida. Pidä herkkä vastaanottomateriaali pois tavallisista lokeista. Jos raaka toimittaja hyötykuormat tarvitsevat lyhyen säilyttämisen todennettu elpymisvirta, suojata niitä erikseen ja tehdä niiden käyttö tarkoituksella.
Tietomalli tarvitsee myös yksilöllisen raja-arvon. Ei-merkittävälle oikeudelle ainutlaatuisuus voi olla tili plus tuotetunnus. Valuuttaa varten ainutlaatuisuus on yleensä tilikirja tai avustustapahtuma eikä nykyinen saldo. Kulutushyödykkeille luotettava tapahtumatunniste voi olla yksilöllinen myös silloin, kun tuotetunnus toistuu. Määrittele avain ennen kuin koodaat uudelleenkäytäntöä; muutoin kaksi osajärjestelmää voi deduplikoida yhteensopimattomia identiteettejä vastaan.
Malli tuntematon toimitustulos
Vaikea tulos ei ole puhdas menestys tai puhdas vika. Se on tuntematon.: asiakas ei tiedä, onko palvelin sitoutunut apurahan. Aikakatkaisu, yhteys nollata, prosessi uudelleen, tai huoltokatkos voi tuottaa tämän tilan. Turvallinen asiakas käyttäytyminen on pyytää tapahtuman tila tai yrittää uudelleen samaa tarkoitusta. Turvallinen palvelin käyttäytyminen on etsiä, että tarkoitus ja palauttaa kestävä päätös sijaan soveltamalla toinen mutaatio.
Älä tee asiakkaan näyttö valtion arvovaltainen. Spinner katoaa, paikallinen kuitti välimuisti, tai optimistinen saldon muutos voi parantaa kokemusta, mutta se ei voi päättää, onko tili omistaa oikeuden. Palvelin viranomainen tarkoittaa palvelin tarkastaa hyväksytyn tapahtuman mukaan tuotteen. Server-rajaa, sitoutuu pysyvään tietueeseen kerran, ja palauttaa nykyisen tilan, kun kysytään uudelleen.

Sekvenssi tekee osittaisen loppuun saattamisen politiikan näkyväksi. Esimerkiksi: vastaanottaa aatetta, validoida luotettavan oston todisteet, luoda tai ladata kestävä kirjanpito kirjaa, tehdä oikeus tai valuutan mutaatio, merkitä tietueen myönnetty, tunnustaa ulkoisen toimituksen tarvittaessa, sitten palauttaa tulos. Jos prosessi pysähtyy välillä kaksi vaihetta, elpyminen työntekijä tai myöhemmin tila kysely voidaan jatkaa kestävästä tietueesta. Tarkka tilaus riippuu ulkoisesta tarjoajasta ja pelin arkkitehtuuri, mutta yksi avustus identiteetti ei.
Suojaa oikeus ja valuuttainvariantit
Idemponency-avain estää yhden tarkoituksen toistamisen; se ei automaattisesti tee jokaista sivuvaikutusta oikeaksi. Määrittele invariantit apurahan on säilytettävä. Ei-konsensoiva oikeus ilmestyy enintään kerran tilille ja tuotteelle. Valuutta-avustuksella on tilikirja, jossa on yksi tapahtuma-avain, tunnettu delta, ja tuloksena oleva tasapaino, joka vastaa voimassa olevien tietojen summaa. Inventaarioapurahat noudattavat pinoa, kapasiteettia ja tuotemäärittelysääntöjä. Tilausaika ei pidennä kahdesti, koska vahvistuspäätepiste kesti kaksi kertaa.
Tee invariant tarkistaa osa samaa pysyvää toimintaa, joka sitoo apurahan. Lue jälkeen myöhemmin kirjoittaa voi kilpailla samanaikaisesti toimitus. Kaksi työntekijää voi molemmat tarkkailla . ei omistanut ja molemmat apuraha. Käytä tapahtumatallennus, vertailu-ja-set semantiikka, sarjautunut tilin mutaatiopolku, tai toinen selvä concurrency primitiivinen sopii datavarastoon. Tärkeä ominaisuus on, että päätös ja sen merkki ei voi itsenäisesti voittaa kaksi yritystä.
Pelien in-muisti runtime, erota kestävä menestys esityksestä. Palvelin voi päivittää pelaajaa näkyvän tasapainon jälkeen kestävä tilikirja merkintä sitoutuu, mutta näkyvä päivitys ei ole todiste. Rekontaktissa tai uudelleen, jälleenrakentaa esitetty tila kestävästä tilistä. Tämä tekee viivästynyt asiakkaan vastaus epämiellyttävä eikä taloudellisesti turvaton.
Testejä kaatuu, käynnistää uudelleen ja toimittaa tahallaan
Aloita deterministisella skenaariolla. Luo yksi tili, yksi tuote, yksi tunnettu aloitustasapaino tai oikeus asettaa, ja yksi vakaa tapahtuma avain. Suorita virtaus, sitten ruiskuttaa vikaa kunkin nimetyn rajan: vastaanottamisen jälkeen, kirjan luomisen jälkeen, jälkeen oikeus mutaation jälkeen, jälkeen tila merkintä, ulkoisen vahvistuksen, ja sen jälkeen, kun vastaus on valmis. Käynnistä uudelleen asianomainen työntekijä tai prosessi, yritä sama avain, ja vahvistaa lopullinen kestävä tila.
Odotettavissa oleva tulos tulisi olla erityinen. Uusintayritys voi palauttaa alkuperäisen tuloksen kanssa, jatkaa keskeneräistä operaatiota, hylätä epäsuhtaisen hyötykuorman tai pitää kirjaa uudelleentarkastelua varten. Sen ei pitäisi lisätä toista varastoerää, soveltaa toista valuuttaa deltaa tai kätkeä tuntematon tila tekaistulla menestyksellä. Ota luokitus testitulokseen niin myöhemmin refactor ei voi muuttaa tahallista pitoa vahingossa kaksoiskappaleeksi.
Käytä vastaanotto uudelleen toimitus samassa skenaariossa. Toimita tarkka luotettu tapahtuma kahdesti, sitten toimittaa sen jälkeen uudelleen, sitten toimittaa sen rinnalla kaksoisasiakas uudelleen. Tuloksena tilikirjan ja tilin tila olisi oltava identtinen yhden toimituksen tapauksessa. Jos tuote sallii toistuvia ostoksia, ajaa saman sarjan kaksi aidosti erillistä tapahtumatunnistetta todistaa järjestelmän ei yli-deduplicate by tuotetunnus yksin.
Pitäkää rajat rehellisinä
Testaaminen voi todistaa vain toteuttamasi vuorovaikutukset. Simuloitu palveluntarjoajan vastaus voi validoida valtion koneen, mutta se ei ole todiste siitä, että jokainen tuotannon tarjoajan reuna käyttäytyy aivan samalla tavalla. Suoritettava testi vastaan hiekkalaatikko voi lisätä luottamusta, että integrointi, mutta on edelleen erilaisia toimintaolosuhteita kuin live tallentaa. Tallenna, käyttääkö skenaario simulaatio, paikallinen adapteri, hiekkalaatikko, tai todennettu palveluntarjoajan ympäristö.
Luottamuksen rajan pitäisi myös olla selvä. Asiakkaan ei pitäisi toimittaa mielivaltaista määrää, tuotetunnusta tai ... ja saada apurahaa. Panoksia ei luoteta, kunnes palvelin vahvistaa ne asianomaisen konfiguraation ja ostaa todisteita. Jos validointi ei voi lopettaa, pitää aikomusta odottaa tai hylätä se kerrytettävissä luokka. Älä anna yrittää jono tulla ohitus noin tarkistus.
Yksityisyys koskee tätä testaus kurinalaisuutta. Korjauksissa pitäisi käyttää synteettisiä tapahtumatietoja. Lokien tulisi viitata turvalliseen testitunnisteeseen, ei raakakuittiin tai tilinnimeen. Tuotantotapahtuma voi vaatia rajoitettua näyttöä, mutta rutiininomaisesta testisviitistä ei pitäisi koskaan tulla toista maksutietovarastoa.
Käytännön tarkistuslista
- Erota vakaa ostoaike myöhemmästä pelin puolella olevasta apurahasta.
- Käytä yhtä idemponency avain kautta aikakatkaisut, retries, käynnistää uudelleen, ja vastaanotto uudelleen toimitus.
- Sido avain tilin, tuotteen tai oikeuden muoto, ja luotettu lähde konteksti.
- Määrittele kestävät valtiot, kuten vireillä, sitoutunut, hylätty, ja tarvearviointi.
- Toteuta oikeus ainutlaatuisuus ja valuutta-ledger invariants sisällä sama valuuttaraja kuin apuraha.
- Ruiskuta vika kunkin valtion siirtymisen jälkeen, aloita sitten uudelleen ja yritä samaa tarkoitusta.
- Testaa kaksoistoimitukset ja lailliset toistuvat ostokset erikseen.
- Ilmoita tuntemattomista tuloksista rehellisesti; älä muuta aikakattoa keksityksi menestykseksi.
- Pidä vastaanotto-kuten kalusteet ja testi lokit synteettinen ja reacted.
Usein kysytyt kysymykset
Riittääkö yksilöllinen kuittikortti?
Se voi olla hyödyllinen komponentti, kun palvelin voi varmistaa, että vastaanottotunniste on luotettava ja kattaa sen oikein. On edelleen tärkeää säilyttää tuloksena oleva avustuspäätös, verokohtelun eroavuuspolitiikka ja palautustila. Järjestelmä voi saada saman tunnisteen toistuvasti, vastaanottaa sen myöhässä tai vastaanottaa sen hyötykuormalla, joka ei vastaa tallennettua tuotekontekstia. Pysyvä tietue tekee näistä tapauksista tarkastettavissa.
Pitäisikö asiakkaan yrittää uudelleen automaattisesti aikalisän jälkeen?
Yleensä sen pitäisi kokeilla uudelleen tilaratkaisu käyttäen samaa aikomusta identiteettiä, jossa on rajoitettu backoff ja selkeä käyttäjäpalaute. Olipa se pitäisi toimittaa uudelleen ulkoinen osto-todisteita riippuu palveluntarjoaja ja todentamisen suunnittelu. Turvaton käyttäytyminen on hiljaa luoda uusi ostopyyntö tai hakemalla paikallista avustusta, koska alkuperäinen vastaus oli menetetty.
Miten kulutushyödykkeet eroavat pysyvistä tukioikeuksista?
Pysyvät oikeudet yleensä deduplisoivat tililtä ja tuotteelta. Konsulaatit voivat mahdollistaa saman tuotteen ostamisen monta kertaa, joten ainutlaatuisuuden rajassa on oltava tapahtumatunnus tai tilikirjasekvenssi pelkän tuotetunnuksen sijaan. Molemmat tarvitsevat silti yhden kestävän apurahan kutakin hyväksyttyä tarkoitusta varten.
Mitä Persistium väittää tässä?
Persistium on kehitteillä. Tämä huomautus selittää laajasti sovellettavat eheys- ja testisuunnittelumallit; se ei vaadi julkisia ostotuotteita, alustasertifiointia, asiakastapahtumahistoriaa tai isännöityä palvelua. Sen jatkuvuussuunta on kiinnostunut samanlaisesta näyttö- ja toistoturvallisesta palautuskurista.







