Вы працуеце ў аперацыйным цэнтры платэжнага камутатара, які стаіць паміж гандлярамі і эмітэнтамі картак. Кожную хвіліну паступае каля 400 транзакцый у секунду; кожная ацэньваецца на махлярства, чакае вольны слот злучэння і перадаецца свайму эмітэнту для атрымання адказу. Мадэль разлічвае чэргі, тайм-аўты, паўторныя спробы кліентаў, кампраміс антымахлярскага фільтра і рызыку stand-in па падручнікавых формулах. Сумы даюцца ў агульных грашовых адзінках (u). Толькі навучальная сімуляцыя — не фінансавая, юрыдычная або інвестыцыйная парада.
Чаму вы навучыцеся
Чаму паўторныя спробы могуць зафіксаваць перагружаны камутатар у шторме паўторных спроб, нават калі магутнасць дададзена — і як скід нагрузкі разрывае гэты цыкл.
Як парог ацэнкі махлярства мяняе страты ад махлярства на адхіленых добрых кліентаў, і чаму правільны парог залежыць ад базавай частаты махлярства.
Як адзін павольны эмітэнт запаўняе ўсе слоты злучэння (закон Літла) і колькі каштуюць тайм-аўты і апрацоўка stand-in.
Сімулятар
Час 0 хв
▶Сервер у эксплуатацыі
⚙Сервер запускаецца
·Вольнае месца ў стойцы сервераў
✓Эмітэнт адказвае нармальна
⌛Эмітэнт павольны або недаступны
⇄Апрацоўка stand-in уключана
•Уваходныя транзакцыі
Кіраванне
Кожны сервер трымае 32 слоты злучэння. Дададзеным серверам трэба 5 хвілін на запуск; плаціць трэба за кожны сервер, нават калі ён запускаецца.
Прымае не болей за 90 % магутнасці, а лішак адразу адказвае «паўтарыце пазней», замест таго каб даць яму стаяць у чарзе і выходзіць па тайм-аўце.
Як гандляры паўтараюць тэхнічны збой (да 3 паўтораў). Адразу = на наступнай хвіліне; backoff = выпадковая экспаненцыяльная затрымка, сярэднія затрымкі 1, 2 і 4 хвіліны.
Транзакцыі з ацэнкай на ўзроўні гэтага парогу або вышэй адхіляюцца. Ацэнкі выражаюцца ў стандартных адхіленнях сапраўднага трафіку: ніжэй азначае больш спыненага махлярства і больш адхіленых добрых кліентаў.
Ацэнкі, што знаходзяцца настолькі ніжэй за парог, атрымліваюць дадатковую праверку кліента замест рашэння: 85 % сапраўдных кліентаў праходзяць яе, 5 % махляроў праходзяць. 0 = выключана.
Як доўга слот злучэння чакае адказу эмітэнта. Пасля гэтага камутатар адпраўляе скасаванне (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-й хвіліне і падвойвае трафік да каля 800 транзакцый у секунду на 45 хвілін. Камутатар працуе на 6 серверах, разлічаных на звычайны дзень пры загрузцы каля 70 %. Гандляры паўтараюць кожны тэхнічны збой адразу. Захоўвайце ўхваленне добрых кліентаў і хуткія адказы, не купляючы магутнасць, якая вам не патрэбна.
Сярэдняе ўхваленне добрых кліентаў ≥ 95 % ад пачатку распродажу
Сярэдні час аўтарызацыі ≤ 500 ms
Выдаткі на серверы ≤ 75 u
Узровень 2 · Хваля махлярства
На 5-й хвіліне пачынае выкарыстоўвацца партыя скрадзеных даных картак: доля махлярства ў трафіку падскоквае з 0,1 % да 1 %. Парог адхілення настроены на звычайныя дні (3σ), а step-up выключаны. Знізьце ўзровень махлярства, не адштурхоўваючы добрых кліентаў.
Сярэдні ўзровень махлярства ≤ 25 bp
Сярэдняе ўхваленне добрых кліентаў ≥ 98 %
Добрых кліентаў, адхіленых правілам ≤ 5 ‰
Узровень 3 · Збой эмітэнта
На 5-й хвіліне эмітэнты групы B — чвэрць усяго трафіку — запавольваюцца да сярэдняга часу адказу 12 секунд. Камутатар чакае адказу да 8 s, не мае stand-in і працуе на 6 серверах. Захоўвайце паток кліентаў здаровых эмітэнтаў, абслугоўвайце групу B наколькі можна бяспечна і трымайце рызыку stand-in і выдаткі пад кантролем.
Кожнае суадносіна, якое выкарыстоўвае сімулятар, з яго крыніцай. Пастаянныя, пазначаныя як дапушчэнні, — ілюстрацыйныя каліброўкі.
Новыя транзакцыі паступаюць з базавай хуткасцю, памножанай на ўсплёск продажаў; колькасць за хвіліну выпадковая (Пуасон, нармальнае набліжэнне) з невялікай нераўнамернасцю (ўсплёскамі).
λ(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, доля марна патрачанай працы, сумы і цэны — ілюстрацыйныя значэнні для камутатара сярэдняга памеру, а не лічбы якой-небудзь рэальнай сеткі.
Паўторныя спробы кліента: кожны тэхнічны збой паўтараецца да трох разоў — адразу або з выпадковай экспаненцыяльнай затрымкай.
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 з seed; выкарыстаныя размеркаванні — раўнамернае, экспаненцыяльнае (адваротная CDF), нармальнае (Box–Muller), Пуасона (Knuth). Seed паказваецца і яго можна перадаваць.
M. Harchol-Balter — Performance Modeling and Design of Computer Systems: Queueing Theory in Action (M/M/k, capacity provisioning) — Cambridge University Press, 2013