තොරතුරු තාක්ෂණ මෙහෙයුම් — සේවා විශ්වසනීයත්වය සජීවී ආකෘතිය

ඔබ වෙබ් සේවාවක් සඳහා ඇමතුමෙන් සිටී: අවස්ථා සමූහයකට ඉදිරියෙන් load balancer එකක්, දත්ත සමුදායකට ඉදිරියෙන් cache එකක් සහ 99.9 % ලබා ගත හැකි බවේ අරමුණක්. සෑම විනාඩියකම ආකෘතිය පෝලිම් ප්‍රමාදය, කාල සීමා, cache පහරවල් සහ දත්ත සමුදා බර පෙළපොත් සූත්‍රවලින් ගණනය කරයි — සහ ඔබේ තීරණවලට වැය වන දේ.

ඔබ ඉගෙන ගන්නේ කුමක්ද

සිමියුලේටරය

කාලය 0 මි
ඉල්ලීම් 1125 · දෝෂ අනුපාතය 0.00% · p99 ප්‍රමාදය 342 ms · සේවය කරන අවස්ථා 10 (+0) · Cache පහරවල් අනුපාතය 77% · දත්ත සමුදා උපයෝගීතාව 19% · ඉතිරි දෝෂ අයවැය (දින 30) 50.0%⇉1125 ඉල්/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msසමූහ උපයෝගීතාව 52%Cache පහරවල් අනුපාතය 77%දත්ත සමුදා උපයෝගීතාව 19%⚠ 0.00% · 🔥 0.0×50%$ 4.00/h · Σ $0.00
  • අවස්ථාව සේවය කරයි
  • අවස්ථාව ආරම්භ වේ
  • නරක ගොඩනැගීමේ අවස්ථාව
  • නිදහස් ස්ථානය
  • පැමිණෙන ඉල්ලීම්

පාලන

ඇණවුම් සමූහයේ පහළ සීමාව. එය ඉහළ නැංවීමෙන් අවස්ථා වහාම දියත් වේ — සේවය කිරීමට පෙර ඒවාට තවමත් ආරම්භක ප්‍රමාදය අවශ්‍යයි.

උපයෝගීතාව මත ඉලක්ක අනුගමනය; අවස්ථා තවමත් ආරම්භ වන අතරතුර නව ඉහළ පරිමාණයක් නැත. අක්‍රීය = හරියටම අවම.

අඩු = වැඩි අතිරික්ත ඉඩ සහ වැඩි පිරිවැය. මනින ලද උපයෝගීතාව 100 % ඉක්මවිය නොහැකි බැවින් සංතෘප්ත සමූහයක් වර්ධනය වන්නේ පියවරෙන් පියවරයි.

දිගු TTL = වැඩි පහරවල්, නමුත් පිළිතුරු පරණ විය හැක (සාමාන්‍ය වයස ≈ TTL/2).

විනාඩි 6 ක් උණුසුම් යතුරු පූරණය කරයි (විනාඩියකට cache හි +12 %) තත්පරයකට අමතර දත්ත සමුදා විමසුම් 600 ක මිලට.

අඩු ප්‍රමුඛතා 30 % න් (prefetch, batch, crawlers) load balancer හිදී “පසුව උත්සාහ කරන්න” සමඟ ප්‍රතික්ෂේප කළ කොටස.

බර විශේෂාංගය එක් ඉල්ලීමකට CPU ms 20 ක් සහ දත්ත සමුදා විමසුමක් එකතු කරයි. අක්‍රීය = මෘදු පරිහානිය.

අලුත් බලඇණියක අවසන් හොඳ build එක නැවත යොදවයි (5 min, දෙවරක් බිල්පත් කෙරේ), ඉන්පසු ගමනාගමනය මාරු කරයි. නැවත එබීම සූදානම නැවත ආරම්භ කරයි; නරක build එකක් සජීවීව නොමැති විට එයට මුදල් පමණක් වැය වේ.

දර්ශක

දෝෂ අනුපාතය
0.00%
සාමාන්‍ය
p99 ප්‍රමාදය
342ms
සාමාන්‍ය
ඉතිරි දෝෂ අයවැය (දින 30)
50.0%
සාමාන්‍ය
සමූහ උපයෝගීතාව
52%
සාමාන්‍ය
දැවෙන අනුපාතය (පැය 1)0.0 ×
ඉල්ලීම්1125 req/s
සේවය කරන අවස්ථා10
ආරම්භ වන අවස්ථා0
Cache පහරවල් අනුපාතය77 %
දත්ත සමුදා උපයෝගීතාව19 %
ඉවත දැමූ ගමනාගමනය0 %
සමූහ පිරිවැය4.00 $/h
මෙතෙක් පිරිවැය0.00 $
Cache කළ පිළිතුරුවල සාමාන්‍ය වයස30 s
නරක ගොඩනැගීමේ ගමනාගමනය0 %
නිර්දේශ ලබා ගත හැක100 %

ප්‍රවණතාව

දෝෂ අනුපාතය: — %20.000.00

අර්බුද අවස්ථා

මට්ටම 1 · නරක නිකුතුව

නව ගොඩනැගීමක් 09:10 ට නිකුත් වේ. මාසය දැනටමත් දුෂ්කර වී ඇත: දෝෂ අයවැයෙන් ඉතිරිව ඇත්තේ 20 % ක් පමණි. යෙදවීමෙන් විනාඩි කිහිපයකට පසු දැවෙන අනුපාත පිටුව නාද වේ. අයවැය ආරක්ෂා කරන්න.

  • අවසානයේ ඉතිරි දෝෂ අයවැය ≥ 18.5 %
  • යෙදවීමෙන් පසු සාමාන්‍ය දෝෂ අනුපාතය ≤ 0.65 %
  • සමූහ පිරිවැය ≤ $9.50

මට්ටම 2 · හදිසි පැමිණීමේ සමූහය

සේවාවට සබැඳියක් වේගයෙන් පැතිරෙමින් පවතින අතර අද උදෑසන යම් වේලාවක ගමනාගමන ඉහළ යාමක් බලාපොරොත්තු වේ — කවදාද හෝ කොතරම් විශාලද යන්න කිසිවෙකු නොදනී. අද නව අවස්ථා ආරම්භ වීමට විනාඩි 8 ක් ගනී. එය පැමිණෙන විට, නිෂ්ක්‍රීය ධාරිතාව සඳහා මුදල් වියදම් නොකර දෝෂ සහ ප්‍රමාදය අඩුවෙන් තබා ගන්න.

  • සාමාන්‍ය දෝෂ අනුපාතය ≤ 0.2 %
  • සාමාන්‍ය p99 ප්‍රමාදය ≤ ms 400
  • සාමාන්‍ය ඉවත දැමූ ගමනාගමනය ≤ 5 %
  • මුළු පිරිවැය ≤ $21
  • නිර්දේශ කාලයෙන් ≥ 85 % ක් ලබා ගත හැක

මට්ටම 3 · සීතල cache

මධ්‍යාහ්න උච්චතමයේදී නඩත්තු ස්ක්‍රිප්ට් එකක් සම්පූර්ණ cache එකම ඉවත් කරයි. සෑම ඉල්ලීමක්ම දැන් සුපුරුදු 85 % පහරවල් අනුපාතය සඳහා ප්‍රමාණ කළ දත්ත සමුදායට යයි. දත්ත සමුදායට අධි බර නොදී සේවාව ආපසු ගන්න.

  • සාමාන්‍ය දෝෂ අනුපාතය ≤ 1.5 %
  • පළමු විනාඩියෙන් පසු දත්ත සමුදා උපයෝගීතාව කිසිවිටෙක 90 % ට ඉහළ නොවේ
  • Cache කළ පිළිතුරුවල සාමාන්‍ය වයස සාමාන්‍යයෙන් ≤ තත්පර 90
  • මුළු පිරිවැය ≤ $9
  • නිර්දේශ කාලයෙන් ≥ 80 % ක් ලබා ගත හැක
  • සාමාන්‍ය ඉවත දැමූ ගමනාගමනය ≤ 5 %

පදනම — සංඛ්‍යා පිටුපස ඇති ආකෘතිය

සිමියුලේටරය භාවිත කරන සෑම සම්බන්ධතාවයක්ම, එහි මූලාශ්‍රය සමඟ. උපකල්පන ලෙස සලකුණු කළ නියත නිදර්ශන ක්‍රමාංකන වේ.

ඉල්ලීම් දෛනික වක්‍රයක් සහ බාධා අනුගමනය කරයි; විනාඩියකට ගණන අහඹුයි (පොයිසොන්, සාමාන්‍ය ආසන්නය) කුඩා පිපිරීම්වලින්.
λ(t) = base × (1 + 0.25·sin(2π(t + clock − 6 h)/24 h)) × surge(t), clock = time of day at the start (peak at 12:00); count/min ≈ N(60λ, √(60λ)) × (1 + N(0, 0.02))[6]උපකල්පනය: වැඩකරුවන් සංඛ්‍යාව, සේවා කාල, දත්ත සමුදා ධාරිතාව, cache ප්‍රමාණය, නැවත පිරවීමේ වේගය, මිල සහ නරක ගොඩනැගීමේ දෝෂ අනුපාතය මධ්‍යම ප්‍රමාණයේ වෙබ් සේවාවක් සඳහා නිදර්ශන අගයන්ය.
Erlang C: M/M/N පද්ධතියක ඉල්ලීමකට නිදහස් වැඩකරුවෙකු සඳහා බලා සිටීමට සිදු වීමේ සම්භාවිතාව.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
රැඳී සිටීමේ කාල වලිග: t ට වඩා දිගු රැඳී සිටීමේ අවස්ථාව ඝාතීය ලෙස පහළ යයි; තත්පර 2 කාල සීමාවේදී තවමත් බලා සිටින ඉල්ලීම් අසාර්ථක වේ. ධාරිතාවෙන් ඔබ්බෙන් අතිරික්තය අසාර්ථක වේ.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
සේවා කාලය සහ රැඳී සිටීමේ කාල ප්‍රමාණකවලින් p99 ප්‍රමාදය.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]ආසන්න කිරීමක්: සේවා සහ පොරොත්තු ප්‍රමාණක එකතු කිරීම ඒවායේ එකතුවේ නිවැරදි p99 නොවේ (එය තරමක් ඉහළ හෝ පහළ විය හැක); ඉල්ලීම් මිලිතත්පර ගන්නා බැවින් පෝලිම සෑම විනාඩියක් තුළම ස්ථාවර ලෙස සලකනු ලැබේ.
ලිට්ල්ගේ නියමය: කාර්යබහුල වැඩකරුවන් = පැමිණීමේ අනුපාතය × සේවයේ කාලය.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL cache: අහඹු ඉල්ලීම් සමඟ, සෑම මග හැරීමක්ම ඉල්ලීම් පහර දෙන TTL කාල පරිච්ඡේදයක් ආරම්භ කරයි.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Cache මග හැරීම් දත්ත සමුදායට බර දමයි; එහි පෝලිම් ප්‍රමාදය එයට ස්පර්ශ වන සෑම ඉල්ලීමක්ම මන්දගාමී කරයි, එමගින් යෙදුම් වැඩකරුවන්ද පිරේ.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]උපකල්පනය: වැඩකරුවන් සංඛ්‍යාව, සේවා කාල, දත්ත සමුදා ධාරිතාව, cache ප්‍රමාණය, නැවත පිරවීමේ වේගය, මිල සහ නරක ගොඩනැගීමේ දෝෂ අනුපාතය මධ්‍යම ප්‍රමාණයේ වෙබ් සේවාවක් සඳහා නිදර්ශන අගයන්ය.
SLO සහ දෝෂ අයවැය: දැවෙන අනුපාතය කියන්නේ අයවැය අවසරයට වඩා කී ගුණයක් වේගයෙන් වැය වන්නේද යන්නයි.
budget = 1 − SLO = 0.1 %; burn = error rate / 0.1 %; Δbudget per min = burn / 43,200; burn (1 h) = mean error rate over the last 60 min / 0.1 % (window pre-filled with the opening minute)[1][2]
ආරම්භක ප්‍රමාදයක් සහ සිසිලන කාලයක් (cooldown) සහිත ඉලක්ක අනුගමන ස්වයංක්‍රීය පරිමාණකය.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]උපකල්පනය: වැඩකරුවන් සංඛ්‍යාව, සේවා කාල, දත්ත සමුදා ධාරිතාව, cache ප්‍රමාණය, නැවත පිරවීමේ වේගය, මිල සහ නරක ගොඩනැගීමේ දෝෂ අනුපාතය මධ්‍යම ප්‍රමාණයේ වෙබ් සේවාවක් සඳහා නිදර්ශන අගයන්ය.
ආකෘතිය භාවිත කරන වෙනත් මෙහෙයුම් නියත.
16 workers/instance · app time 50 ms (+20 ms and +1 query with the feature on) · 2 queries/request · DB 4,000 queries/s · 20,000 hot objects · cache refill τ = 30 min (slower while the DB is saturated) · warm-up job +12 %/min for 6 min, +600 queries/s · timeout 2 s · 30 % low-priority traffic · bad build +5 % errors, ×1.25 CPU · rollback 5 min · $0.40 per instance-hour · scale-in by ≤ 20 % of the fleet after 10 quiet minutes · up to 40 instancesඋපකල්පනය: වැඩකරුවන් සංඛ්‍යාව, සේවා කාල, දත්ත සමුදා ධාරිතාව, cache ප්‍රමාණය, නැවත පිරවීමේ වේගය, මිල සහ නරක ගොඩනැගීමේ දෝෂ අනුපාතය මධ්‍යම ප්‍රමාණයේ වෙබ් සේවාවක් සඳහා නිදර්ශන අගයන්ය.

අහඹුබව: බීජ සහිත mulberry32 උත්පාදකයක්; භාවිත කළ ව්‍යාප්ති — ඒකාකාර, ඝාතීය (ප්‍රතිලෝම CDF), සාමාන්‍ය (Box–Muller), පොයිසන් (Knuth). බීජය පෙන්වන අතර බෙදාගත හැකිය.

මූලාශ්‍ර

  1. Site Reliability Engineering — Ch. 3 Embracing Risk (error budgets), Ch. 4 Service Level Objectives — Beyer, Jones, Petoff, Murphy (eds.), O'Reilly, 2016
  2. The Site Reliability Workbook — Ch. 5 Alerting on SLOs (burn rate; 14.4× over 1 h = 2 % of a 30-day budget) — Beyer, Murphy, Rensin, Kawahara, Thorne (eds.), O'Reilly, 2018
  3. Teletraffic Engineering Handbook — Erlang C formula; waiting-time distribution for M/M/n, FCFS — ITU-D Study Group 2 Question 16/2 (V. B. Iversen), 2005
  4. J. D. C. Little — A Proof for the Queuing Formula: L = λW — Operations Research 9(3):383–387, 1961
  5. J. Jung, A. W. Berger, H. Balakrishnan — Modeling TTL-based Internet Caches — IEEE INFOCOM 2003, 2003
  6. M. Harchol-Balter — Performance Modeling and Design of Computer Systems: Queueing Theory in Action (M/M/k, server farms, capacity provisioning) — Cambridge University Press, 2013

මෙය වෘත්තියක් ලෙස කරන්නේ කවුද

අධ්‍යාපනික ආකෘතියකි — මෙහෙයුම් තීරණ සඳහා නොවේ. සැබෑ අඩවි සෑම නියතයක්ම තමන්ගේ උපකරණ සහ දත්තවලට ක්‍රමාංකනය කරයි.