Რეალურ დროში რეიტინგები: ტექნიკური არქიტექტურა
Real Time რეიტინგი არის სერვისების ერთობლიობა, რომელიც მილიონობით თამაშის მოვლენას განახლებულ პოზიციად აქცევს ასობით მილიწამში, შეინარჩუნებს პატიოსნებას, აუდიტს და ეკონომიკურ მართვას. ქვემოთ მოცემულია პრაქტიკული დიზაინერი მოთხოვნებიდან ექსპლუატაციამდე.
1) მოთხოვნები და მიზნები
ლატენტობა UI: 200-300 ms p95 ევრო ღონისძიების მოსვლიდან პოზიციის განახლებამდე.
სიზუსტე: „საუკეთესო N „/დივიზიების/ტაიმ-შესვენების სწორი კლასიფიკაცია დატვირთვისა და გაუმართაობის დროს.
წვდომა: 99 ევრო. 9% ტურნირის პერიოდისთვის; დეგრადაცია მთლიანობის დაკარგვის გარეშე.
Idempotence: „ზუსტად ერთხელ“ დარიცხვის დონეზე, „ერთხელ მაინც“ ტრანსპორტში.
მასშტაბი: ჰორიზონტალური ზრდა რეგიონების/დანაყოფების/გუნდების მიხედვით (საუკეთესო-K ბურთზე).
აუდიტი: წესების, მოვლენების, დარიცხვისა და განთავისუფლების უცვლელი ლოგოები.
2) სისტემის სქემა (დონე 10,000 ft)
Клиент → Event Ingest → Scoring Engine → Stream Aggregator (Top-K/Top-M) → Write-Optimized Store → Hot Cache/Edge → UI/Comms → Rewards/Claim
Фоново: Snapshotter, Anti-Fraud/RG, Analytics & A/B, Audit/Observability.
3) ღონისძიების მიღება
დავალებები: დაცვა დუბლებისგან, ადიდებისგან, ქსელის დანაკარგებისგან.
Idempotence: თითოეულ მოვლენას აქვს 'ღონისძიება _ uuid'; შემოწმება „ნახეს/ჩაიწერეს“.
მიწოდების სემანტიკა: ტრანსპორტი - at-least-once, ქულების აღრიცხვა - exactly-once.
Backpressure: ხაზები დინამიური ნაწილებით; გადატვირთვისას - „აქტიური“ ტურების პრიორიტეტი.
დროებითი ფანჯრები: ჩვენ ვუშვებთ late events (მაგალითად, 90 წამამდე) - ჩვენ ვატარებთ მარშრუტს „გადაანგარიშების ფანჯარაში“.
დრო: სერვერის UTC, კლიენტზე - მხოლოდ იდაყვის ჩვენება.
4) გაანგარიშება (Scoring Engine)
პრინციპები: ვერსირებული წესები, ანტი-ანაზღაურებადი, მარტივი დაბრუნება.
ვერსია: 'rule _ set _ id' + feature-flags per-region/division.
მოდელები: multiplier ('Score = round (100log2 (Win/Bet + 1))'), win-based log მრუდი, wager-based (მხოლოდ როგორც ფონის მეტა).
„საუკეთესო N „- ის კლასიფიკაცია: ჩვენ ვატარებთ ტოპ-N სტრუქტურას მოთამაშეს/დღეში/ტურზე; შეჯამება/საშუალო ფორმატით.
გამონაკლისები: ბონუს საშუალებები 'coef _ bonus _ 0. 5 'ან' 0 '; კაპერ სპინ/დღე; პროვაიდერის კვოტები.
ტაი-ბრეიკი: 1) საბოლოო მწკრივის ადრეული მიღწევა; 2) უფრო დიდი მრავალფეროვნება; 3) დეტერმინირებული თესლი.
5) Strim აგრეგაცია და ტოპ K
მიზანი: სწრაფად დაანგარიშება პოზიციები მთელი სიმრავლის სკანირების გარეშე.
6) შენახვა: write vs read
Write-optimized store: დარიცხვების ლოგო, სახელმწიფოები „საუკეთესო-N“, ტაიმ-ბრეიკი, მეტამონაცემები (მხოლოდ ჩანაწერი/აპდეიტები).
Read-optimized store (Query): დენორმალიზებული „ფანჯრები“ UI- სთვის: ტოპ 100, „ჩემი პოზიცია“, „ტოპ დღე/დივიზია“, გუნდში შეტანილი წვლილი.
სურათები (Snapshotter): ლიდბორდის საათობრივი „ფიფქები“; სწრაფი rollback/replay, მოხსენებები და აუდიტი.
კოორდინაცია: ღონისძიება ფართო სიებისთვის, read your writes „ჩემი პოზიციისთვის“.
7) კეში და ედჯი
ცხელი ქეში: ბოლო პოზიციები და მოთამაშეთა ანგარიში; TTL 1-5 წამი; ღონისძიების ინვალიდობა.
Edge ფენა/CDN: სტატიკური ბლოკები, შედეგების „ცივი“ გვერდები, მაგრამ არა დარიცხვის ლოგიკა.
Fallback: დეგრადაციის დროს - „ბრინჯაოს რეჟიმი“: UI განახლება ყოველ X წამში + მძიმე ვიჯეტების ბლოკი.
8) დრო, ფანჯრები და ტაიმზონები
ერთი „ჭეშმარიტი“ დრო: UTC სერვისებზე; ვადები UTC- ში.
ლოკალიზაცია: კლიენტზე დროის ტრანსფორმაცია (მომხმარებლის დროის ზონა).
საზღვრები: 1-3 წუთის დახურვის „რბილი ფანჯარა“ ქსელის ბლოკებისთვის (T & C- ში).
ჩვენ ვატარებთ word კლასს: clock-skew მონიტორინგი, NTP ალერტები, დრიფტის გაზომვა.
9) გვიან და დუბლირებულ მოვლენებთან ბრძოლა
გვიან მოვლენები: ჩვენ გვაქვს „რეკონსტრუქციის ფანჯარა“; ადგილობრივად + „მშვიდი“ პოზიციების კორექტირება შეტყობინებების ფირიდან.
დუბლი: 'event _ uuid' + (player, game, bet, ts) ვიწრო ფანჯარაში; ჟურნალი „თესლი“.
დარიცხვების idempotence: გარიგებები „მოვლენა - ცვლილებები“, რომელსაც აქვს applied/rolled _ back სტატუსი.
10) Anti frode და RG (ჩასმული pline)
ქცევითი მორიელი: ერთგვაროვანი ინტერვალები, ზედმეტი სიჩქარე, „ხმაურის გარეშე“ - დროშები.
ობლიგაციების გრაფიკი: ზოგადი მოწყობილობები/IP/გადახდები მტევანი; ჯილდოს Hills, სახელმძღვანელო შემოწმება.
კვოტები და ქუდები: N საუკეთესო მცდელობები/დღე, კვოტები ერთი სლოტი/პროვაიდერი, ქუდი per spin/day.
ბონუსის საშუალებები: კოეფიციენტები/გამონაკლისი.
RG: ქულები ენიჭება მხოლოდ ნებაყოფლობითი ლიმიტების ფარგლებში (დრო/ანაბრები/ზარალი); შეფერხებების შეხსენებები.
11) მულტფილმის რეგიონი და წინააღმდეგობა
აქტივი აქტივი რეგიონებისთვის: რეგიონალური საშინელებები + გლობალური თაღი; სიახლოვის მარშრუტი.
RTO/RPO: RTO <15 წთ (sneakers folback), RPO = 0 დარიცხვისთვის (edempotent loge reple).
წვეულება-ტოლერანტობა: ქსელის შესვენებით - ადგილობრივი ლიდერი, შემდგომი კონსოლიდაცია და პოზიციების რბილი კორექტირება.
FX და ვალუტები: თუ პრიზები სხვადასხვა ვალუტაში - ჩვენ აღვნიშნავთ კონვერტაციის მომენტს, FX ბუფერს 1-3%.
12) უსაფრთხოება და კონფიდენციალურობა
მონაცემები: მინიმიზაცია (ფსევდონიმები, აგრეგატორში PII გარეშე), დაშიფვრა „ფრენის დროს“ და „დასვენებისთვის“.
დაშვება: მინიმალური შეღავათების პრინციპი, საიდუმლოებები KMS- ში, წვდომის აუდიტი.
T & C/იურისდიქციები: წესების/ვერსიების ლოგოები, გეო-ბლოკები, ასაკობრივი შეზღუდვები.
13) დაკვირვება და SRE პრაქტიკა
SLO: UI-lag - 300 ms p95, Claim დრო - 10 წთ p95, აფთიაქი - 99. 9%.
მეტრიკა: events/sec, დუბლირების/გაუქმების წილი, უღელტეხილი, ტოპ-K heap ზრდა, ნაკადის ლაქი, ბრალდების შეცდომები, კლაიმ-რატი.
ტრეისი: მეშვეობით (ingest-scoring-cache-UI).
ალერტები: გაჩერებული ღილაკი (მძიმე ექსპერიმენტები/საუკეთესო N საუკეთესო), მანქანის დეგრადაცია.
Post-mortem: RCA 24-48 საათში, მოქმედების ჩამონათვალი, error-budget პოლიტიკა.
14) Rewards & Claim
ავტომაგისტრალი: წებოვანი მოვლენის დროს - პოზიციების დათვლა, გაცემა, ქვითრები.
Claim ფანჯარა: 72 საათი ევრო, ადგილზე მიტანის რუტინა, დეტერმინისტული გადახდის პროცედურა.
გამჭვირვალობა: ჯილდოს ისტორია პროფილში: წესი, დრო, თანხა, წყარო.
Hills: იშვიათი/ღირებული პრიზებისთვის KYC/AML.
15) A/B ექსპერიმენტები და სქემების ევოლუცია
რა უნდა შეამოწმოთ: N საუკეთესო (10/20), cap per spin (on/off), მრავალფეროვნების პრემია (0/50/100), აგრეგაციის ტიპი (თანხა/საშუალო).
Randomization: რეგიონების/არხების/მტევნების გასწვრივ - ჩვენ თავიდან ავიცილებთ გადინებას.
Guardrails: RTP, საჩივრები/10k, RG სიგნალები - არ გაუარესდება.
მიგრაცია: შენახვის სქემების თავსებადობა, ორმაგი ჩაწერა მიგრაციის დროს.
16) რეალური შეფასების UX ნიმუშები
შეფასების ცენტრი: გამარჯვების წესი, ტაიმერი, თქვენი ანგარიში, დარჩენილი მცდელობები, შემდეგი შედეგი.
ცოცხალი ფიტბეკი: „+ 40 ქულა x3-ზე“, „20-დან 2 მცდელობა დარჩა“, „თქვენ 3 ადგილზე ავიდა“.
ფანჯრები: საერთო ტოპ 100, „ჩემი პოზიცია“, „ტოპ დღე/დივიზია“, გუნდში შეტანილი წვლილი.
A11y: კონტრასტი, დიდი რიცხვები, ფოკუს სტეიტები, პროგრესის ხმა.
ლოკალიზაცია: ვადები/ტაიმერები ადგილობრივ TZ- ში, მრავალენოვანი.
17) ხშირი გაუმართაობა და დეგრადაციის სცენარები
18) რეალურ დროში შეფასების დაწყების კრიტიკოსი
წესები/ეკონომიკა
- ფორმულა, N საუკეთესო, ჰალსტუხი, დივიზიები
- RewardRate, გადახდების სიგანე, vagers, claim - 72 საათი
ტექნიკა
- Idempotent Ingest, Late Window, sharding
- Stream-Aggregator (топ-K/Top-M), Snapshotter
- Hot Cache/Edge, Health/Status API, გაჩერების ღილაკი
უსაფრთხოება/RG
- ქცევითი ესკიზი, ობლიგაციების გრაფიკი, ქუდი/კვოტები
- RG ლიმიტები, შეხსენებები, KYC/AML დიდი პრიზებისთვის
მონაცემები/A/B
- Dashbords: lag, late-rate, dubles, fairness მეტრიკა
- ექსპერიმენტული გეგმა და guardrails, ორმაგი თავისუფალი მიგრაციის გეგმა
UX
- შეფასების ცენტრი, მიკრო ფიტბეკი, A11y, ლოკალიზაცია
- მოკლე წესები 1 ეკრანზე + სრული T&C
რეალურ დროში საიმედო რეიტინგი არ არის ერთი სერვისი, არამედ მოწესრიგებული ეკოსისტემა: idempotent ტექნიკა, ვერსირებული მორიელი, ტოპ K ნაკადის აგრეგაცია, სწრაფი ქეში, სახელმწიფო სურათები და ჩაშენებული ანტი-ფროდი/RG მექანიზმები. დაამატეთ მკაცრი SLO/SLA, გასაგები UX და შეამოწმეთ ცვლილებები A/B- ში - და მიიღებთ ლიდერებს, რომლებსაც მოთამაშეები ენდობიან, ხოლო პროდუქტი იღებს პროგნოზირებად ზრდას Retention, Stickness და LTV.