💳 ფინანსები — გადახდების ოპერაციები ცოცხალი მოდელი
თქვენ ხართ გადახდების სვიჩის (payment switch) ოპერაციების მაგიდასთან, რომელიც ვაჭრებსა და ბარათების გამცემებს შორის დგას. ყოველ წუთს დაახლოებით 400 ტრანზაქცია წამში შემოდის; თითოეული თაღლითობაზე ფასდება, თავისუფალ კავშირის სლოტს ელოდება და პასუხისთვის თავის გამცემთან იგზავნება. მოდელი სახელმძღვანელოს ფორმულებით ითვლის რიგებს, ტაიმაუტებს, კლიენტების განმეორებებს, თაღლითობის ფილტრის კომპრომისს და stand-in რისკს. თანხები ზოგად ვალუტის ერთეულებშია (u). მხოლოდ საგანმანათლებლო სიმულაცია — არა ფინანსური, იურიდიული ან საინვესტიციო რჩევა.
რას ისწავლით
რატომ შეუძლიათ განმეორებებს გადატვირთული სვიჩი განმეორებების ქარიშხალში (retry storm) ჩაკეტონ სიმძლავრის დამატების შემდეგაც — და როგორ არღვევს დატვირთვის შემცირება ციკლს.
როგორ აბალანსებს თაღლითობის ქულის ზღვარი თაღლითობის ზარალს უარყოფილ კარგ კლიენტებთან და რატომ არის სწორი ზღვარი თაღლითობის ბაზისურ მაჩვენებელზე დამოკიდებული.
როგორ ავსებს ერთი ნელი გამცემი კავშირის ყველა სლოტს (ლიტლის კანონი) და რა ღირს ტაიმაუტები და stand-in დამუშავება.
სიმულატორი
დრო 0 min
▶სერვერი სერვისშია
⚙სერვერი ირთვება
·სერვერის თავისუფალი ადგილი რეკში
✓გამცემი ნორმალურად პასუხობს
⌛გამცემი ნელია ან გათიშულია
⇄Stand-in დამუშავება ჩართულია
•შემომავალი ტრანზაქციები
მართვის ელემენტები
თითოეულ სერვერს 32 კავშირის სლოტი აქვს. დამატებულ სერვერებს ჩასართავად 5 წუთი სჭირდებათ; ყოველი სერვერი ითვლება, ირთვება თუ არა.
იღებს სიმძლავრის მაქსიმუმ 90 %-ს და ჭარბს მაშინვე პასუხობს „სცადეთ მოგვიანებით“, რიგში ლოდინისა და ტაიმაუტის ნაცვლად.
როგორ იმეორებენ ვაჭრები ტექნიკურ წარუმატებლობას (3 განმეორებამდე). დაუყოვნებლივ = მომდევნო წუთში; backoff = შემთხვევითი ექსპონენციალური backoff, საშუალო დაყოვნებები 1, 2 და 4 წუთი.
ტრანზაქციები ამ მნიშვნელობის ტოლი ან მეტი ქულით უარყოფილია. ქულები ნამდვილი ტრაფიკის სტანდარტული გადახრებითაა: დაბალი ნიშნავს მეტ შეჩერებულ თაღლითობას და მეტ უარყოფილ კარგ კლიენტს.
ქულები, რომლებიც ზღვარზე ამდენით დაბლაა, გადაწყვეტილების ნაცვლად დამატებით შემოწმებას იღებენ კლიენტისგან: ნამდვილი კლიენტების 85 % მას ასრულებს, თაღლითების 5 % გადის. 0 = გამორთულია.
რამდენ ხანს ელოდება კავშირის სლოტი გამცემის (issuer) პასუხს. ამის შემდეგ სვიჩი აგზავნის გაუქმებას (reversal) და იყენებს stand-in-ს ან უარყოფს „გამცემი მიუწვდომელია“ მიზეზით.
როცა გამცემი დროულად არ პასუხობს, სვიჩი მის სახელით ამტკიცებს ამ თანხამდე. ყოველი stand-in დამტკიცება რისკია, რომელიც გამცემს არასოდეს შეუმოწმებია. 0 = გამორთულია.
ინდიკატორები
კარგი კლიენტების დამტკიცების მაჩვენებელი
99,9%
ნორმალური
ავტორიზაციის დრო
330ms
ნორმალური
თაღლითობის მაჩვენებელი (დამტკიცებული თანხის წილი)
10,4bp
ნორმალური
დაკავებული კავშირის სლოტები
69%
ნორმალური
დამტკიცების მაჩვენებელი, ჯანსაღი გამცემები
99,9 %
თაღლითობის წესით უარყოფილი კარგი კლიენტები
1,3 ‰
Step-up-ზე გაგზავნილი ტრანზაქციები
0,0 %
შეჩერებული თაღლითობა
31 %
ახალი ტრანზაქციები
400 tx/s
შემოთავაზებული დატვირთვა (ახალი + განმეორებები)
400 tx/s
განმეორებები
0 tx/s
შემცირებული (პასუხი „სცადეთ მოგვიანებით“)
0 tx/s
რიგში გაუქმებული
0,0 %
გამცემის ტაიმაუტები
0,0 %
Stand-in დამტკიცებები
0 tx/s
სერვისში მყოფი სერვერები
6
სერვერები ირთვება
0
სერვერების ხარჯის ტემპი
36 u/h
სერვერების ხარჯი აქამდე
0 u
Stand-in რისკი
0,00 M u
აქამდე დამტკიცებული თაღლითობა
0,00 M u
აქამდე დაკარგული კარგი ტრანზაქციები
0,0 k tx
განმეორებას მოლოდინში მყოფი ტრანზაქციები
0 tx
გამცემთა ჯგუფი B დაყოვნება (საშუალო)
250 ms
ტენდენცია
კრიზისული სცენარები
დონე 1 · გაყიდვის პიკური აფეთქება
დიდი ონლაინ გაყიდვა მე-5 წუთს იწყება და ტრაფიკს 45 წუთის განმავლობაში დაახლოებით 800 ტრანზაქციამდე წამში ორმაგებს. სვიჩი 6 სერვერზე მუშაობს, რომლებიც ჩვეულებრივი დღისთვისაა გათვლილი დაახლოებით 70 % დატვირთვით. ვაჭრები ყოველ ტექნიკურ წარუმატებლობას დაუყოვნებლივ იმეორებენ. კარგი კლიენტები დამტკიცებული და პასუხები სწრაფი შეინარჩუნეთ იმ სიმძლავრის ყიდვის გარეშე, რომელიც არ გჭირდებათ.
კარგი კლიენტების საშუალო დამტკიცება ≥ 95 % გაყიდვის დაწყებიდან
ავტორიზაციის საშუალო დრო ≤ 500 ms
სერვერების ხარჯი ≤ 75 u
დონე 2 · თაღლითობის ტალღა
მე-5 წუთზე მოპარული ბარათების მონაცემების პარტიის გამოყენება იწყება: ტრაფიკში თაღლითობის წილი 0,1 %-დან 1 %-მდე ახტება. უარყოფის ზღვარი ჩვეულებრივი დღეებისთვისაა დაყენებული (3σ), step-up კი გამორთულია. თაღლითობის მაჩვენებელი შეამცირეთ კარგი კლიენტების უარყოფის გარეშე.
თაღლითობის საშუალო მაჩვენებელი ≤ 25 bp
კარგი კლიენტების საშუალო დამტკიცება ≥ 98 %
წესით უარყოფილი კარგი კლიენტები ≤ 5 ‰
დონე 3 · გამცემის შეფერხება
მე-5 წუთზე B ჯგუფის გამცემები — მთელი ტრაფიკის მეოთხედი — პასუხის საშუალო დროზე 12 წამამდე ნელდებიან. სვიჩი პასუხს 8 წმ-მდე ელოდება, stand-in არ აქვს და 6 სერვერზე მუშაობს. ჯანსაღი გამცემების კლიენტები ნაკადში შეინარჩუნეთ, B ჯგუფს ემსახურეთ რამდენადაც უსაფრთხოდ შეგიძლიათ და stand-in რისკი და ხარჯი კონტროლის ქვეშ შეინარჩუნეთ.
ჯანსაღი გამცემების კლიენტებისთვის საშუალო დამტკიცება ≥ 90 %
კარგი კლიენტების საშუალო დამტკიცება ≥ 86 %
Stand-in რისკი ≤ 9 M u
სერვერების ხარჯი ≤ 65 u
საფუძველი — რიცხვების უკან მდგომი მოდელი
ყველა დამოკიდებულება, რომელსაც სიმულატორი იყენებს, წყაროთურთ. დაშვებად მონიშნული მუდმივები საილუსტრაციო კალიბრაციებია.
ახალი ტრანზაქციები ბაზისური ტემპით, გამრავლებული გაყიდვების აფეთქებაზე, მოდის; წუთში რაოდენობა შემთხვევითია (პუასონი, ნორმალური მიახლოება) მცირე ბერსტულობით.
λ(t) = base × surge(t) (2-min lag); count/min ≈ N(60λ, √(60λ)) × (1 + N(0, 0.03))[2]დაშვება: სლოტების რაოდენობა, მომსახურებისა და გამცემის დროები, ქულების გამიჯვნა, step-up-ის გავლის მაჩვენებლები, ფუჭად დახარჯული სამუშაოს წილი, თანხები და ფასები ილუსტრაციული მნიშვნელობებია საშუალო ზომის სვიჩისთვის და არა რომელიმე რეალური ქსელის მაჩვენებლები.
ბინორმალური თაღლითობის ქულა: ნამდვილი და თაღლითური ქულები ორი ნორმალური მრუდია d′ მანძილზე; ზღვარი ROC მრუდზე წერტილს ირჩევს.
genuine score ~ N(0,1), fraud ~ N(d′,1), d′ = 2.5; FPR(t) = 1 − Φ(t), TPR(t) = 1 − Φ(t − d′); AUC = Φ(d′/√2) ≈ 0.96[6][7]დაშვება: სლოტების რაოდენობა, მომსახურებისა და გამცემის დროები, ქულების გამიჯვნა, step-up-ის გავლის მაჩვენებლები, ფუჭად დახარჯული სამუშაოს წილი, თანხები და ფასები ილუსტრაციული მნიშვნელობებია საშუალო ზომის სვიჩისთვის და არა რომელიმე რეალური ქსელის მაჩვენებლები.
ხარჯის მიხედვით ოპტიმალური ზღვარი: უარყავით, როცა ალბათობის შეფარდება აღემატება ბაზისური მაჩვენებლით შეწონილ ხარჯების შეფარდებას — ათჯერ მეტი თაღლითობა მას ln 10 / d′ ≈ 0,9σ-ით ქვემოთ წევს.
Step-up: ზღვრის ქვემოთ ზოლში მყოფი ქულები გადაწყვეტილების ნაცვლად დამატებით შემოწმებას გადიან.
scores in [t − b, t) are challenged: genuine pass 85 %, fraud pass 5 %; scores ≥ t declined[10]დაშვება: სლოტების რაოდენობა, მომსახურებისა და გამცემის დროები, ქულების გამიჯვნა, step-up-ის გავლის მაჩვენებლები, ფუჭად დახარჯული სამუშაოს წილი, თანხები და ფასები ილუსტრაციული მნიშვნელობებია საშუალო ზომის სვიჩისთვის და არა რომელიმე რეალური ქსელის მაჩვენებლები.
გამცემის დაყოვნება ექსპონენციალურია; სლოტი დაკავებულია დაყოვნებით ან ტაიმაუტით, რომელიც უფრო ადრე დადგება.
L ~ Exp(mean m); E[min(L, T)] = m(1 − e^(−T/m)), P(L > T) = e^(−T/m); S = 80 ms + forwarded × Σ share·E[min(L,T)][2][9]
ლიტლის კანონი: დაკავებული სლოტები = შემოსვლის ტემპი × დაკავების დრო.
ერლანგ C: ალბათობა, რომ ტრანზაქცია თავისუფალ სლოტს დაელოდება, და ალბათობა, რომ 2-წამიან რიგის ტაიმაუტზე მეტს დაელოდება.
P(W > 2 s) = C(a, N)·e^(−(N/S − λ)·2 s), a = λS; mean wait = C / (N/S − λ)[1][2]
სიმძლავრის ზემოთ სვიჩი სამუშაოს იმ მოთხოვნებზეც ხარჯავს, რომლებსაც მოგვიანებით აგდებს, ამიტომ სასარგებლო გამტარუნარიანობა დატვირთვის ზრდასთან ერთად ეცემა; დატვირთვის შემცირება ჭარბს იაფად უარყოფს.
λ ≥ N/S: goodput = (N/S − ω·λ)/(1 − ω), ω = 0.3; load shedding admits ≤ 0.9·N/S and answers the rest at once[4][5]დაშვება: სლოტების რაოდენობა, მომსახურებისა და გამცემის დროები, ქულების გამიჯვნა, step-up-ის გავლის მაჩვენებლები, ფუჭად დახარჯული სამუშაოს წილი, თანხები და ფასები ილუსტრაციული მნიშვნელობებია საშუალო ზომის სვიჩისთვის და არა რომელიმე რეალური ქსელის მაჩვენებლები.
კლიენტების განმეორებები: ყოველი ტექნიკური წარუმატებლობა სამჯერ მეტად მეორდება, დაუყოვნებლივ ან შემთხვევითი ექსპონენციალური backoff-ით.
failed attempt → retry with p = 0.95, ≤ 3 retries; immediate: next minute; backoff: delay ~ Exp(mean 1, 2, 4 min)[4][5]დაშვება: სლოტების რაოდენობა, მომსახურებისა და გამცემის დროები, ქულების გამიჯვნა, step-up-ის გავლის მაჩვენებლები, ფუჭად დახარჯული სამუშაოს წილი, თანხები და ფასები ილუსტრაციული მნიშვნელობებია საშუალო ზომის სვიჩისთვის და არა რომელიმე რეალური ქსელის მაჩვენებლები.
გამცემის ტაიმაუტი, გაუქმება და stand-in: თანხები ლოგნორმალურია, ამიტომ ლიმიტის ქვემოთ წილი და დამტკიცებული მოცულობა ნორმალური განაწილების ფუნქციიდან გამომდინარეობს.
issuer timeout → reversal; stand-in approves if amount ≤ limit: P = Φ((ln L − μ)/σ), volume = e^(μ+σ²/2)·Φ((ln L − μ − σ²)/σ)[9][11]
თაღლითობის მაჩვენებელი დამტკიცებული თანხის საბაზისო პუნქტებში; 13 bp გამოიყენება როგორც საორიენტაციო მასშტაბი მცირე დისტანციური საბარათე გადახდებისთვის.
მოდელის მიერ გამოყენებული სხვა საექსპლუატაციო მუდმივები.
32 slots per server, 2–24 servers, +5 min boot, 6 u per server-hour · switch time 80 ms · queue timeout 2 s · issuer latency 250 ms (group B = 25 % of traffic, ±15 % per minute) · amounts lognormal, median 40 u, σ = 1, fraud ×1.5 · ω = 0.3 · shedding at 90 % · reversal = 80 ms of switch timeდაშვება: სლოტების რაოდენობა, მომსახურებისა და გამცემის დროები, ქულების გამიჯვნა, step-up-ის გავლის მაჩვენებლები, ფუჭად დახარჯული სამუშაოს წილი, თანხები და ფასები ილუსტრაციული მნიშვნელობებია საშუალო ზომის სვიჩისთვის და არა რომელიმე რეალური ქსელის მაჩვენებლები.
შემთხვევითობა: სიდიანი mulberry32 გენერატორი; გამოყენებული განაწილებები — თანაბარი, ექსპონენციალური (შებრუნებული CDF), ნორმალური (ბოქს–მიულერი), პუასონის (კნუტი). სიდი ნაჩვენებია და გაზიარებადია.
M. Harchol-Balter — Performance Modeling and Design of Computer Systems: Queueing Theory in Action (M/M/k, capacity provisioning) — Cambridge University Press, 2013
საგანმანათლებლო მოდელი — არ არის განკუთვნილი ოპერაციული გადაწყვეტილებებისთვის. რეალური ობიექტები ყველა მუდმივას საკუთარ აღჭურვილობასა და მონაცემებზე ადგენენ.