Մի քանի արժույթների և դասընթացների աջակցությունը իրական ժամանակում

Ներդրումը

Առցանց կազինոն աշխատում է շուկաներում տարբեր արժույթների հետ 'CSR, USD, GBP, RUB և շատ տեղական։ Որպեսզի խաղացողները կարողանան կատարել տոկոսադրույքները և շահել իրենց սեփական դիրքում, պլատֆորմը պետք է դինամիկորեն փոխի գումարները համապատասխան դասընթացների վրա, ապահովելով թափանցիկությունը, ճշգրտությունը և նվազագույն ուշացումները։

1. Արտարժույթի ճարտարապետությունը

1. Currency Service

Առանձին միկրովայրվիս, որը պատասխանատու է դասընթացների ստացման, պահպանման և տարածման համար։
Էքսպոնացնում է API '/rates։ bull = USD & www.bols = CSR, GBP, RUB "և World Socket-փոփոխությունների հոսքը։

2. Exchange Rate Provider

Արտաքին API (Fixer. io, Open Express Rates, բանկային նավակներ) տվյալների թարմացման մոդուլով (թարմացում րոպեում մեկ անգամ)։
Պրովայդերների առաջնահերթությունը և fallback-ը, երբ հիմնական անհասանելիությունն է։

3. Քեշինգը և TTL

Redis-kash key = 'rates: USD' և TTL = 60 REST-ի համար; Pub/Sub ալիքը Socket-ի համար առանց ավելորդ հարցումների։

4. CDN ստատիկայի համար

Դասընթացների հասանելիությունը edge զանգերի միջոցով (եթե regionale setting-ը քննադատական չէ)։

2. Պահեստավորում և տվյալների մոդել

Direction _ rates '

```sql
CREATE TABLE exchange_rates (
base_currency CHAR(3) NOT NULL,
target_currency CHAR(3) NOT NULL,
rate DECIMAL(18,8) NOT NULL,
fetched_at TIMESTAMP NOT NULL,
PRIMARY KEY (base_currency, target_currency)
);
```

Պատմական դասընթացներ
Սխալ բջիջների վերլուծության և արձագանքման համար 'բանաձևը _ rates _ history ", որն ունի նույն սխեմա +" entated _ at "։

Precision և մասշտաբներ
Ութ նշաններ, որոնք փորագրված են, թույլ են տալիս վերափոխել ցանկացած գումար մինչև ցենտ 'սխալմամբ <0։ 0001.

3. Կոնվերսիա 108 և 108

1. Կոնվերսիայի հաշվարկը

Տոկոսադրույքի ընդունվելիս

```pseudo
rate = getRate(playerCurrency, platformCurrency)
platformAmount = round(playerAmount rate, 2, ROUND_HALF_EVEN)
```
Նույնը կարելի է ասել այն մասին, թե ինչ է կատարվում։

2. Մոսկվան և սպրեդը

Դրանք որոշվում են tenault/բրենդի մակարդակում, ավելացվում են որպես արտադրող («effectum Rate = rate (1 + spread)»)։
Spread-ի հստակ ամրագրումը փոխակերպման պահանջով և գործարքի լոգարանում։

3. Վիրահատությունների ատոմականությունը

Բոլոր հաշվարկները և ապամոնտաժումները տեղի են ունենում BD գործարքում, որպեսզի բացառեն ռեբինխրոնը ծրարի և հաշվապահության միջև։

4. Ալատիլության և ռիսկերի վերամշակում

Delk-in դասընթացը

Նստաշրջանի սկզբում կամ առաջին փոխակերպման ժամանակ դասընթացը «ամրագրված է» խաղացողի ամբողջ խաղային նստաշրջանի համար, որպեսզի բացառվի արագ տատանումների դեպքում։
Այն պահպանվում է «player _ sessions» -ում։

Stale rate detection

Եթե «fetched _ at» ավելի մեծ է, քան շեմը (օրինակ, 5 րոպե), փոխակերպումը արգելվում է մինչև դասընթացի նորացումը։

Alerting

Ալերտները, երբ ընկնում են SLA մակարդակից ցածր հաջողակ միգրանտների քանակը (օրինակ ՝ <95 տոկոսը ժամում) և ընդունելի ալատիլության ավելացման դեպքում (> 1 տոկոսը 1 րոպեում)։

5. Ինտեգրումը խաղային շարժիչների և միկրովայրկյանների հետ

gRPC/REST

Game Engine-ը պահանջում է փոխարկված գումարներ ծառայության միջոցով '/convice։ from=EUR&to=USD&amount=10. 00`.
Մետատվյալների պարտադիր փոխանցումը '«session _ id», «player _ id» տրամաբանության համար։

Event-driven

Currency Express-ի դասընթացները թարմացնելիս հրապարակում է «Roft Systated (big, target, rate)» իրադարձությունը Kafka-ում։ կոնյումերները (Anrontron, Reporting) նորարարում են իրենց միավորները։

6. Անկայունություն և մեծացում

Replica-set Redis

Sentinel-ը կամ Cluster Mode-ը ձախողված կեշի համար։
Stateless Currency Service

Հորիզոնական մեծացումը Kubernetes HPA-ի միջոցով պատասխանների ուշացման և QPS-ի միջոցով։
Circuit Breaker

Պաշտպանությունը արտաքին API-ի անհասանելիության դեպքում 'fallback-ը վերջին հաջողակ դասընթացին կամ հակառակը հրաժարվելը։

7. Անվտանգություն և համապատասխանություն

TFC/SSL-ը բոլոր արտաքին և ներքին զանգերի համար։
Audit log

Բոլոր հարցումների ձայնագրումը դասընթացի, timestamp-ի և աղբյուրի բաղադրիչների հետ։
Կարգավորող պահանջները

Տեղական օրենքները կարող են պահանջել դասընթացների հրապարակումը կամ սահմանափակումները։ այս պարամետրերը համապատասխանում են per region-ին։

8. Մոսկվան և մետրիկները

Prometheus

Метрики: `currency_rate_fetch_success_total`, `currency_rate_fetch_error_total`, `conversion_requests_total`, `conversion_latency_seconds`.
Grafana-dashbord

Դասընթացների կյանքի ժամանակը, հաճախությունը, p95 latency հակադարձումը, stale rates-ի պատճառով ձախողումների քանակը։

Եզրակացություն

Իրական ժամանակում կայունության աջակցությունը պահանջում է Currency Express-ի հատկացված կեշը, ճշգրիտ պահպանումը և լոգիստիկ դասընթացները, ատոմային փոխարկումները և կարգավորող նորմերը։ Այս ճարտարապետության դեպքում պլատֆորմը ապահովում է խաղացողներին թափանցիկ և ճիշտ վիրահատություններ իրենց հայրենի տարբերակում առանց սխալների։