<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Hajuss%C3%BCsteemid%3A_skaleerimise_m%C3%A4rkmed</id>
	<title>Hajussüsteemid: skaleerimise märkmed - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Hajuss%C3%BCsteemid%3A_skaleerimise_m%C3%A4rkmed"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Hajuss%C3%BCsteemid:_skaleerimise_m%C3%A4rkmed&amp;action=history"/>
	<updated>2026-11-03T07:18:26Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Hajuss%C3%BCsteemid:_skaleerimise_m%C3%A4rkmed&amp;diff=19702&amp;oldid=prev</id>
		<title>Tammet: Uus lehekülg: &#039;&lt;pre&gt; Meditsiinisüsteemi näide -------------------------  1) koormus liiga suur hommikul ja õhtul: peakid  2) rakendusserver aeglane, panime kaks rakendusserveri kasti, dns-l...&#039;</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Hajuss%C3%BCsteemid:_skaleerimise_m%C3%A4rkmed&amp;diff=19702&amp;oldid=prev"/>
		<updated>2022-03-22T17:36:56Z</updated>

		<summary type="html">&lt;p&gt;Uus lehekülg: &amp;#039;&amp;lt;pre&amp;gt; Meditsiinisüsteemi näide -------------------------  1) koormus liiga suur hommikul ja õhtul: peakid  2) rakendusserver aeglane, panime kaks rakendusserveri kasti, dns-l...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Meditsiinisüsteemi näide&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
1) koormus liiga suur hommikul ja õhtul: peakid&lt;br /&gt;
&lt;br /&gt;
2) rakendusserver aeglane, panime kaks rakendusserveri kasti, dns-l on kaks ip-d taga,&lt;br /&gt;
   praktikas võeti randomiga üks või teine ip&lt;br /&gt;
   &lt;br /&gt;
   NB! &lt;br /&gt;
    * Liiga palju parallelismi ühes masinas ei ole hea&lt;br /&gt;
    * &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
3) andmebaas hiljem aeglaseks:&lt;br /&gt;
&lt;br /&gt;
   a) leidsite aeglased queryd ja optimeerisite andmebaasi (indekseid ja queryde parandamine)&lt;br /&gt;
   &lt;br /&gt;
   b) kettakoormus ab-l läks ikkagi suureks, panite raid-10 kettad raid-5 asemel&lt;br /&gt;
   &lt;br /&gt;
   c) lisandus palju analüütilisi querisid, tegite ab replikatsiooni teise serverisse&lt;br /&gt;
      ja jooksutasite analüütilisi querisid teises serveris&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kalastuspileti näide pilet.ee &lt;br /&gt;
------------------------------&lt;br /&gt;
  &lt;br /&gt;
  - oracle &lt;br /&gt;
  &lt;br /&gt;
  - connection pool sai täis (rakendusserveri ühendus andmebaasiga), esialgu suurendasid&lt;br /&gt;
    tulemus läks veel halvemaks&lt;br /&gt;
    &lt;br /&gt;
  - lahendus 1:&lt;br /&gt;
  &lt;br /&gt;
     - piirasin connection pooli, andsin varem jalaga, värk läks paremaks&lt;br /&gt;
     &lt;br /&gt;
     - aeglased queryd: optimeerisime (lisad lisapiiranguid a la aegadele (indekseeritud)), katsetad&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
Id kaardi uuendamise näide&lt;br /&gt;
--------------------------&lt;br /&gt;
&lt;br /&gt;
id-kaardi teema connection pooliga kaartide uuendamisel:&lt;br /&gt;
&lt;br /&gt;
  - kogu aeg aeglane; algul oli piiratud hulk kasutajaid, siis kasutajate arv plahvatas&lt;br /&gt;
  &lt;br /&gt;
  - teemaks rakendusserver, mis suhtles mitme asjaga omakorda, tegi mujale api calle&lt;br /&gt;
&lt;br /&gt;
     - ühe ülesande teenindamise protsess oli pikk / nõudis palju calle väljapoole&lt;br /&gt;
     &lt;br /&gt;
     - konkreetne suur probleem oli logianalüsaatorile saatmise call: teine pool ei võtnud vastu&lt;br /&gt;
     &lt;br /&gt;
  - riik pani tulemüüril piirangud peale: piiras connectionite arvu minutis&lt;br /&gt;
  &lt;br /&gt;
    kaartide tühistamist aeglustati&lt;br /&gt;
    &lt;br /&gt;
    kasutus ka hajutus&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vaktsineerimise regamise näide&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
vaktsineerimise regamise aegluse case:&lt;br /&gt;
&lt;br /&gt;
  - pandi peale ootejärjekord (uus süsteem: regati sind ootejärjekorda? tehik?)&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tähelepanekuid ja soovitusi  &lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
* Terminoloogia NB! Mis tähendab &amp;quot;skaleerimine&amp;quot; ja &amp;quot;skaleeritavus&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
  * Praktikas tähendab ta &amp;quot;optimeerimist&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  * Rangemas tähendus on &amp;quot;skaleeritavus&amp;quot;: &amp;quot;võime lisada kergesti ressursse, mis tõstavad võimekust&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  * Hea point:&lt;br /&gt;
  &lt;br /&gt;
    ** Vertical scaling &amp;quot;skaleerimine&amp;quot;: paneme parema / kiirema masina / rohkem mälu&lt;br /&gt;
    &lt;br /&gt;
    ** Horizontal scaling: hajutame mitme masina peale&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ära optimeeri, kui pole vaja: enamasti ei teki süsteemile eriti suurt koormust&lt;br /&gt;
&lt;br /&gt;
* Ole valmis, et võivad tekkida ootamatud peakid või takistused&lt;br /&gt;
&lt;br /&gt;
* Rakendusserver ei pruugi olla süüdi: vbl ta ootab andmebaasi või väliste päringute taga&lt;br /&gt;
&lt;br /&gt;
* Rakendusserveri reaalse probleemi korral tuleb püüda tuvastada, mis osad tal aeglaselt käivad&lt;br /&gt;
&lt;br /&gt;
* Sisuliselt on pea alati probleem kas andmebaasis või välistes päringutes, mis on aeglased:&lt;br /&gt;
  st tüüpiliselt saab rakendusserveri koodi enda kiireks optimeerida&lt;br /&gt;
  &lt;br /&gt;
* Väga suurte koormuste ja keerulise süsteemi puhul on mõtet kaaluda hoopis queuedega &lt;br /&gt;
  a la Kafka või Rabbit MQ arhitektuuri kasutamist: selles siin hiljem&lt;br /&gt;
&lt;br /&gt;
* Andmebaasi teema:&lt;br /&gt;
&lt;br /&gt;
  * Leia aeglused ja mõõda&lt;br /&gt;
  &lt;br /&gt;
  * Hea on, kui saad katsetada live süsteemi kõrval arendussüsteemis (aga seal&lt;br /&gt;
    ei pruugi olla sama data / samad välised päringud / samad kõrval-tegevused)&lt;br /&gt;
  &lt;br /&gt;
  * Optimeeri kriitilisi päringuid (mis on aeglased)&lt;br /&gt;
  &lt;br /&gt;
  * Pane päringule lisapiiranguid (et suudaks kiiresti leida olulise dataseti)&lt;br /&gt;
  &lt;br /&gt;
  * Arhiveeri osa datat välja suurt tabelitest, mis paistavad olema kriitilised päringus&lt;br /&gt;
  &lt;br /&gt;
  * Ab serveri eraldada analüütilistest päringutest (kaks serverit, üks analüütika jaoks, teine olap-ks kiirpäringud)&lt;br /&gt;
  &lt;br /&gt;
  * Ab shardimine : tabelite jagamine tükkidena eraldi serveritesse&lt;br /&gt;
  &lt;br /&gt;
  * Ab replikeerimist: ab üldse paljudesse serveritesse&lt;br /&gt;
  &lt;br /&gt;
  * Kõik ab hajutamise asjad küsivad konsistentsuse järel: et igal pool oleks sama data (analüütika jaoks võib olla viivitusega!)&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
* Ketta failisüsteem võib ka väga fragmenteeruda (isegi ssd puhul on see probleem)&lt;br /&gt;
&lt;br /&gt;
* 10.000 päringut sekundis on see, mida sa optimistlikult võid oletada (http teeb, ab samuti)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kafka ja teenuse-põhine arhitektuur (ei pea olema mikroteenused)&lt;br /&gt;
------------------------------------- &lt;br /&gt;
&lt;br /&gt;
Message queued a la rabbit mq: saadad sõnumeid ja teiselt poolt tarbid.&lt;br /&gt;
&lt;br /&gt;
Erinevad teenused kirjutavad sõnumeid (ülesandeid) ja teine pool tarbib neid:&lt;br /&gt;
&lt;br /&gt;
* Kui &amp;quot;tava-api&amp;quot; pärib ja saab kohe vastuse, siis&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;queue&amp;quot; süsteem saadab päringu, see salvestatakse sõnumite/ülesannete baasi (a la queue) eraldi&lt;br /&gt;
&lt;br /&gt;
  datastruktuuris (mis võib olla andmebaasis a ei pea olema)&lt;br /&gt;
  &lt;br /&gt;
* Sõnumi &amp;quot;vastuvõtja ja töötleja&amp;quot;, kes peaks vastama, võtab sõnumeid sealt sõnumite/ülesannete baasist&lt;br /&gt;
&lt;br /&gt;
NB! &lt;br /&gt;
&lt;br /&gt;
* Tekib väike delay. &lt;br /&gt;
&lt;br /&gt;
* Saad pidevalt jälgida, kui palju sõnumeid ootel on&lt;br /&gt;
&lt;br /&gt;
* Saad panna piiranguid sõnumite hoidmise mahtudele&lt;br /&gt;
&lt;br /&gt;
* Saad panna juurde lisa-teenindajaid, kui ei jaksa teenindada&lt;br /&gt;
&lt;br /&gt;
* Kubernetes maailmas on näiteks auto-scaler, mis suudab ajutiselt automaatselt teenuseid lisada&lt;br /&gt;
&lt;br /&gt;
* Webhooks? Kasutaja saaks notificationi, kui toimub sündmus? A la githubi callbackid.&lt;br /&gt;
&lt;br /&gt;
* Panna soovi korral mitu tarbijat sõnumile&lt;br /&gt;
&lt;br /&gt;
* Võib tekkida oht (rabbitiga olnud) et rabbiti sõnumimasin ise ei jaksa (kafka paistab efektiivsem)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kõik tegevused toimuvad läbi queuede.&lt;br /&gt;
&lt;br /&gt;
Näited:&lt;br /&gt;
&lt;br /&gt;
  * push notification: kasutaja teeb aplikatsioonis tegevuse, me paneme sõnumi queuesse (mälus a la stackis)&lt;br /&gt;
  &lt;br /&gt;
  * kui teenus saab sõnumi, teeb requesti väljapoole maailma&lt;br /&gt;
  &lt;br /&gt;
  * kui sõnumeid tuleb rohkem, kui tarbitakse, tuleb suurendada teenuste kogust, mis neid tarbivad&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
</feed>