{"id":36205,"date":"2019-10-31T22:10:16","date_gmt":"2019-10-31T19:10:16","guid":{"rendered":"https:\/\/prohoster.info\/blog\/razbor-zadach-s-konferentsii-hydra-balansirovka-nagruzki-i-in-memory-hranilishha\/"},"modified":"2019-10-31T22:10:16","modified_gmt":"2019-10-31T19:10:16","slug":"razbor-zadach-s-konferentsii-hydra-balansirovka-nagruzki-i-in-memory-hranilishha","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/razbor-zadach-s-konferentsii-hydra-balansirovka-nagruzki-i-in-memory-hranilishha","title":{"rendered":"V\u00e4\u00e4ringud Hydra konverentsilt \u2014 koormuse tasakaalustamine ja in-memory salvestused","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>M\u00f5ni p\u00e4ev tagasi toimus <noindex><a rel=\"nofollow\" href=\"https:\/\/hydraconf.com\">konverents Hydra<\/a><\/noindex>. JUG.ru Group kutsus unistuste esinejad (Leslie Lamport! Cliff Click! Martin Kleppmann!) ja p\u00fchendas kaks p\u00e4eva jaotatud s\u00fcsteemidele ja arvutustele. Contour oli \u00fcks kolmest konverentsi partnerist. Me suhtlesime stendis, r\u00e4\u00e4kisime oma jaotatud ladudest, m\u00e4ngisime bingo't, lahendasime \u00fclesandeid.<\/p>\n<p><\/p>\n<p>See postitus sisaldab \u00fclesannete lahendusi Contouri stendilt nende autori poolt. Kes oli Hydra's - see on v\u00f5imalus meenutada meeldivaid muljeid, kes ei olnud - v\u00f5imalus oma m\u00f5tteid pingutada. <em>big O<\/em>-m\u00e4rkusega. <\/p>\n<p><\/p>\n<p>Kohal olid isegi osalejad, kes tuletasid flipperi slaididele, et salvestada oma lahendused. Ma ei naljata - nad esitasid kontrollimiseks sellise paberikuhja:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"V\u00e4\u00e4ringud Hydra konverentsilt \u2014 koormuse tasakaalustamine ja in-memory salvestused\" src=\"\/wp-content\/uploads\/2019\/07\/4b74e8bc33e390d1f4c4523f9941ed0a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kokku oli kolm \u00fclesannet:<\/p>\n<p><\/p>\n<ul>\n<li>replikate valik kaalude j\u00e4rgi koormuse tasakaalustamiseks<\/li>\n<li>p\u00e4ringu tulemuste sortimine in-memory andmebaasis<\/li>\n<li>oleku edastamine jaotatud s\u00fcsteemis ringikujulise topoloogiaga<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"zadacha-1-clusterclient\">\u00dclesanne 1. ClusterClient<\/h1>\n<p><\/p>\n<p>Pidi pakkuma efektiivset K valimise algoritmi N-st kaalutud replikate jaotatud s\u00fcsteemis:<\/p>\n<p><\/p>\n<blockquote><p>Teie meeskond peab arendama klientide raamistiku massiliselt jaotatud N s\u00f5lme klastrile. Raamistik j\u00e4lgib erinevaid metainformatsiooni, mis on seotud s\u00f5lmedega (nt nende latentsus, 4xx\/5xx vastuste m\u00e4\u00e4r jne) ja m\u00e4\u00e4rab neile ujuvad kaalud W1..WN. Toetades samaaegse t\u00e4itmisstrateegiat, peaks raamistiku olema v\u00f5imeline juhuslikult valima K N s\u00f5lme \u2013 valimise t\u00f5en\u00e4osus peaks olema proportsionaalne s\u00f5lme kaaluga.<\/p>\n<p>Paku \u00fclesanne s\u00f5lmede efektiivseks valimiseks. Hinda selle arvutuslikku keerukust, kasutades suurt O m\u00e4rkust.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Miks on k\u00f5ik inglise keeles?<\/b><\/p>\n<p>Sest sellisel kujul v\u00f5itlesid nende vastu konverentsi osalejad ja kuna inglise keel oli Hydra ametlik keel. \u00dclesanded n\u00e4gid v\u00e4lja j\u00e4rgmiselt:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"V\u00e4\u00e4ringud Hydra konverentsilt \u2014 koormuse tasakaalustamine ja in-memory salvestused\" src=\"\/wp-content\/uploads\/2019\/07\/4bdf7031c82eea4340a5cdef9ad8df0f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V\u00f5tke paber ja pliiats, m\u00f5elge, \u00e4rge kiirustage kohe spoilerite avamisega \ud83d\ude42<\/p>\n<p>\n<b class=\"spoiler_title\">Lahenduse arutelu (video)<\/b><\/p>\n<p>Algus 5:53, kestvus kokku 4 minutit:<\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"HAiQ2llS0bE\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/HAiQ2llS0bE\/hqdefault.jpg\" alt=\"Vaata videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Nii esitasid oma lahenduse need samad poisid, kes olid flippide tahvlitega:<\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"U_yfKDwXppg\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/U_yfKDwXppg\/hqdefault.jpg\" alt=\"Vaata videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<b class=\"spoiler_title\">Lahenduse arutelu (tekst)<\/b><\/p>\n<p>Pinnal on selline lahendus: liita kokku k\u00f5ikide replikate kaalud, genereerida juhuslik number vahemikus 0 kuni k\u00f5ikide kaalude summani, seej\u00e4rel valida selline i-replika, et replikate kaalude summa vahemikus 0 kuni (i-1)-ni on v\u00e4iksem juhuslikust numbrist, ja replikate kaalude summa vahemikus 0 kuni i-ni on sellest suurem. Nii saab valida \u00fche replika ning j\u00e4rgmise valimiseks tuleb kogu protseduur uuesti l\u00e4bi viia, arvesse v\u00f5tmata valitud replikat. Sellise algoritmiga on \u00fche replikate valimise keerukus O(N), K replikate valimise keerukus on O(N\u00b7K) ~ O(N\u00b2).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"V\u00e4\u00e4ringud Hydra konverentsilt \u2014 koormuse tasakaalustamine ja in-memory salvestused\" src=\"\/wp-content\/uploads\/2019\/07\/0d869f10421f9cf36e501faefc76f209.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ruutfunktsioon on halb, kuid seda on v\u00f5imalik parandada. Selleks ehitame <noindex><a rel=\"nofollow\" href=\"http:\/\/brestprog.by\/topics\/segmenttree\/\">segmentpuu<\/a><\/noindex> kaalude summade jaoks. Saame puu, mille s\u00fcgavus on lg N, mille lehtedes asuvad replikate kaalud ja teistes s\u00f5lmedes osalised summad, j\u00f5udes puu juures k\u00f5ikide kaalude summani. J\u00e4rgmiseks genereerime juhusliku numbri vahemikus 0 kuni k\u00f5ikide kaalude summani, leiame i-replika, eemaldame selle puust ning kordame protseduuri \u00fclej\u00e4\u00e4nud replikate otsimiseks. Sellise algoritmiga on puu ehitamise keerukus O(N), i-replika otsimise ja selle puust eemaldamise keerukus on O(lg N), K replikate valimise keerukus on O(N + K lg N) ~ O(N lg N).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"V\u00e4\u00e4ringud Hydra konverentsilt \u2014 koormuse tasakaalustamine ja in-memory salvestused\" src=\"\/wp-content\/uploads\/2019\/07\/458c897c3b70c3870a3510f76ec2992f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lineaarlogaritmiline keerukus on meeldivam kui ruutline, eriti suurte K-de puhul.<\/p>\n<p><\/p>\n<p>Just see algoritm <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vostok\/clusterclient.core\/blob\/master\/Vostok.ClusterClient.Core\/Ordering\/Weighed\/WeighedReplicaOrdering.cs\">on rakendatud koodis<\/a><\/noindex> ClusterClient raamatukogus projektis \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/tech.kontur.ru\/vostok\">Ida<\/a><\/noindex>\u201c. (Seal ehitatakse puu O(N lg N) ajaga, kuid see ei m\u00f5juta algoritmi l\u00f5plikku keerukust.)<\/p>\n<p><\/p>\n<h1 id=\"zadacha-2-zebra\">\u00dclesanne 2. Zebra<\/h1>\n<p><\/p>\n<p>Vajati algoritmi, mis t\u00f5husalt sorteerib dokumente m\u00e4lus mingi suvalise indekseerimata v\u00e4lja j\u00e4rgi:<\/p>\n<p><\/p>\n<blockquote><p>Teie meeskond on \u00fclesandeks arendada \u0161arded m\u00e4ludokumentide andmebaasi. T\u00fc\u00fcpiline koormus oleks valida top N dokumenti, mis on sorteeritud suvalise (indekseerimata) numbrilise v\u00e4lja j\u00e4rgi kollektsioonist suurusega M (tavaliselt N &lt; 100 &lt;&lt; M). Veidi v\u00e4hem levinud koormus oleks valida top N p\u00e4rast top S dokumentide vahelej\u00e4tmist (S ~ N).<\/p>\n<p>Pakkuge algoritm, mis v\u00f5imaldab selliseid p\u00e4ringuid t\u00f5husalt t\u00e4ita. Hindake selle arvutuslikku keerukust suur O m\u00e4rkega keskmises ja halvimas stsenaariumis.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Lahenduse arutelu (video)<\/b><\/p>\n<p>Algus 34:50, kokku 6 minutit:<\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"HAiQ2llS0bE\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/HAiQ2llS0bE\/hqdefault.jpg\" alt=\"Vaata videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<b class=\"spoiler_title\">Lahenduse arutelu (tekst)<\/b><\/p>\n<p>Lahendus on pinnapealne: sorteerida k\u00f5ik dokumendid (n\u00e4iteks kasutades <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0\">quicksort<\/a><\/noindex>), seej\u00e4rel v\u00f5tta N+S dokumenti. Sellisel juhul on keskmine sortimise keerukus O(M lg M), halvim O(M\u00b2).<\/p>\n<p><\/p>\n<p>Ilmselgelt ei ole t\u00f5hus k\u00f5iki M dokumente sortida, et seej\u00e4rel ainult v\u00e4ike osa neist v\u00f5tta. Et mitte sortida k\u00f5iki dokumente, sobib algoritm <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Quickselect\">quickselect<\/a><\/noindex>, mis valib N+S vajalikke dokumente (neid saab sorteerida \u00fcksk\u00f5ik millise algoritmi abil). Sel juhul v\u00e4heneb keerukus keskmiselt O(M)-ni, kuid halvim juhtum j\u00e4\u00e4b samaks.<\/p>\n<p><\/p>\n<p>Siiski on v\u00f5imalik veelgi efektiivsemalt tegutseda \u2014 kasutada algoritmi <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/30914801\/optimal-algorithm-to-return-largest-k-elements-from-an-array-of-infinite-number\">binary heap streaming<\/a><\/noindex>. Sel juhul kogutakse esimesed N+S dokumenti min- v\u00f5i max-heap'i (s\u00f5ltuvalt sorteerimise suunast), seej\u00e4rel v\u00f5rreldakse iga j\u00e4rgmist dokumenti puu juurega, kus asub hetkel minimaalne v\u00f5i maksimaalne dokument, ja vajadusel lisatakse see puusse. Sel juhul halvim juhtum, kui puu tuleb pidevalt \u00fcmber ehitada \u2014 O(M lg M), keskmine keerukus \u2014 O(M), nagu quickselecti puhul.<\/p>\n<p><\/p>\n<p>Kuid heap streaming osutub t\u00f5husamaks, kuna praktikas saab suure osa dokumentidest k\u00f5rvale j\u00e4tta, ilma et oleks vaja k\u00fchveldust \u00fcmber ehitada, p\u00e4rast \u00fchte v\u00f5rreldumist juureelemendiga. Selline sorteerimine on rakendatud dokumendip\u00f5hises m\u00e4lu andmebaasis Zebra, mis on v\u00e4lja t\u00f6\u00f6tatud ja mida kasutatakse Konturis.<\/p>\n<p><\/p>\n<h1 id=\"zadacha-3-state-swaps\">\u00dclesanne 3. Olekuvahetused<\/h1>\n<p><\/p>\n<p>Pidi olema k\u00f5ige efektiivsem algoritm olekute liigutamiseks:<\/p>\n<p><\/p>\n<blockquote><p>Teie \u00fclesanne on arendada keeruline olekuvahetuse mehhanism jaotatud N s\u00f5lmega klastris. i-nda s\u00f5lme olek tuleks edastada (i+1)-ndale s\u00f5lmele; N-nda s\u00f5lme olek tuleks edastada esimesele s\u00f5lmele. Ainsaks toetatud toiminguks on olekuvahetus, kui kaks s\u00f5lme vahetavad oma olekud aatomiliselt. On teada, et olekuvahetus v\u00f5tab aega M millisekundit. Iga s\u00f5lm suudab osaleda \u00fches olekuvahetuses igal hetkel.<\/p>\n<p>Kui kaua l\u00e4heb aega k\u00f5ikide s\u00f5lmede olekute edastamiseks klastris?<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Lahenduse arutelu (tekst)<\/b><\/p>\n<p>Pinnapealne lahendus: vahetada esimese ja teise elemendi olekud, seej\u00e4rel esimese ja kolmanda, seej\u00e4rel esimese ja neljanda jne. Iga vahetuse j\u00e4rel satub \u00fche elemendi olek soovitud positsioonile. Peab tegema O(N) \u00fcmberkorraldust ja kulutama O(N\u00b7M) aega.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"V\u00e4\u00e4ringud Hydra konverentsilt \u2014 koormuse tasakaalustamine ja in-memory salvestused\" src=\"\/wp-content\/uploads\/2019\/07\/c0bbdf680f565d790bd64ebcd90bf985.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lineaarne aeg on pikk, seega saab elemente vahetada paaridena: esimest teisega, kolmandat neljandaga jne. Iga vahetuse j\u00e4rel satub iga teise elemendi olek soovitud positsioonile. Peab tegema O(lg N) \u00fcmberkorraldust ja kulutama O(M lg N) aega.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"V\u00e4\u00e4ringud Hydra konverentsilt \u2014 koormuse tasakaalustamine ja in-memory salvestused\" src=\"\/wp-content\/uploads\/2019\/07\/7d55d4f8b63bf63763e93b5780e02c48.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid nihke saab teha veelgi efektiivsemaks \u2014 mitte lineaarselt, vaid konstantselt. Selleks tuleb esimeses sammus vahetada esimese elemendi olek viimasena, teise eelviimasena ja nii edasi. Viimase elemendi olek j\u00f5uab vajaliku positsiooni. N\u00fc\u00fcd tuleb vahetada teise elemendi olek viimasega, kolmanda eelviimasega ja nii edasi. P\u00e4rast seda \u00fcmmargust vahetust asuvad k\u00f5ik elementide olekud vajalikes positsioonides. Kokku tehakse O(2M) ~ O(1) \u00fcmberpaigutust.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"V\u00e4\u00e4ringud Hydra konverentsilt \u2014 koormuse tasakaalustamine ja in-memory salvestused\" src=\"\/wp-content\/uploads\/2019\/07\/ad5fe5325985af3b280d2dc75c6a1077.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Selline lahendus ei \u00fcllata matemaatikut, kes veel m\u00e4letab, et p\u00f6\u00f6ramine on kahe teljega s\u00fcmmeetri kompositsioon. Muide, seda saab trivialiseeritult \u00fcldistada nihkega mitte \u00fche, vaid K &lt; N positsiooni kohta. (Kirjutage kommentaarides, kuidas t\u00e4pselt.)<\/p>\n<p><\/p>\n<p>Kas sulle meeldisid \u00fclesanded? Kas tead muid lahendusi? Jagage kommentaarides.<\/p>\n<p><\/p>\n<p>Ja siin on m\u00f5ned kasulikud lingid l\u00f5petuseks:<\/p>\n<p><\/p>\n<ul>\n<li>loe rohkem <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.kontur.ru\/infra\">infrastruktuuri arendamisest<\/a><\/noindex> Konturis<\/li>\n<li>vaata salvestisi sisemistest <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/playlist?list=PLc82OEDeni8TxAybSoENHU-hJ4mRbVQG2\">kohtumistest ettekannetega<\/a><\/noindex> jaotatud s\u00fcsteemide kohta<\/li>\n<li>vaata videoloengute ts\u00fcklit \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/tech.kontur.ru\/algorithms-for-everyone\">Tavalistele inimestele ebatavalised algoritmid<\/a><\/noindex>\u00bb<\/li>\n<li>tellige meie <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/KonturTech\">kanal Telegramis<\/a><\/noindex><\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skbkontur\/blog\/459958\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434 \u0441\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f Hydra. \u0420\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 JUG.ru Group \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043b\u0438 \u0441\u043f\u0438\u043a\u0435\u0440\u043e\u0432 \u043c\u0435\u0447\u0442\u044b (\u041b\u0435\u0441\u043b\u0438 \u041b\u044d\u043c\u043f\u043e\u0440\u0442! \u041a\u043b\u0438\u0444\u0444 \u041a\u043b\u0438\u043a! \u041c\u0430\u0440\u0442\u0438\u043d \u041a\u043b\u0435\u043f\u043f\u043c\u0430\u043d\u043d!) \u0438 \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043b\u0438 \u0434\u0432\u0430 \u0434\u043d\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c. \u041a\u043e\u043d\u0442\u0443\u0440 \u0431\u044b\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438. \u041c\u044b \u043e\u0431\u0449\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e \u043d\u0430\u0448\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u043a\u0438, \u0438\u0433\u0440\u0430\u043b\u0438 \u0432 \u0431\u0438\u043d\u0433\u043e, \u0440\u0435\u0448\u0430\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u043a\u0438. \u042d\u0442\u043e \u043f\u043e\u0441\u0442 \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27083,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434 \u0441\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f Hydra. \u0420\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 JUG.ru Group \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043b\u0438 \u0441\u043f\u0438\u043a\u0435\u0440\u043e\u0432 \u043c\u0435\u0447\u0442\u044b (\u041b\u0435\u0441\u043b\u0438 \u041b\u044d\u043c\u043f\u043e\u0440\u0442! \u041a\u043b\u0438\u0444\u0444 \u041a\u043b\u0438\u043a! \u041c\u0430\u0440\u0442\u0438\u043d \u041a\u043b\u0435\u043f\u043f\u043c\u0430\u043d\u043d!) \u0438 \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043b\u0438 \u0434\u0432\u0430 \u0434\u043d\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c. \u041a\u043e\u043d\u0442\u0443\u0440 \u0431\u044b\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438. \u041c\u044b \u043e\u0431\u0449\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e \u043d\u0430\u0448\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u043a\u0438, \u0438\u0433\u0440\u0430\u043b\u0438 \u0432 \u0431\u0438\u043d\u0433\u043e, \u0440\u0435\u0448\u0430\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u043a\u0438. \u042d\u0442\u043e \u043f\u043e\u0441\u0442 \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/razbor-zadach-s-konferentsii-hydra-balansirovka-nagruzki-i-in-memory-hranilishha\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0430\u0437\u0431\u043e\u0440 \u0437\u0430\u0434\u0430\u0447 \u0441 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Hydra \u2014 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 in-memory \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434 \u0441\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f Hydra. \u0420\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 JUG.ru Group \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043b\u0438 \u0441\u043f\u0438\u043a\u0435\u0440\u043e\u0432 \u043c\u0435\u0447\u0442\u044b (\u041b\u0435\u0441\u043b\u0438 \u041b\u044d\u043c\u043f\u043e\u0440\u0442! \u041a\u043b\u0438\u0444\u0444 \u041a\u043b\u0438\u043a! \u041c\u0430\u0440\u0442\u0438\u043d \u041a\u043b\u0435\u043f\u043f\u043c\u0430\u043d\u043d!) \u0438 \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043b\u0438 \u0434\u0432\u0430 \u0434\u043d\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c. \u041a\u043e\u043d\u0442\u0443\u0440 \u0431\u044b\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438. \u041c\u044b \u043e\u0431\u0449\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e \u043d\u0430\u0448\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u043a\u0438, \u0438\u0433\u0440\u0430\u043b\u0438 \u0432 \u0431\u0438\u043d\u0433\u043e, \u0440\u0435\u0448\u0430\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u043a\u0438. \u042d\u0442\u043e \u043f\u043e\u0441\u0442 \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/razbor-zadach-s-konferentsii-hydra-balansirovka-nagruzki-i-in-memory-hranilishha\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:10:16+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:10:16+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Hydra konverentsi \u00fclesannete lahendused \u2014 koormuse tasakaalustamine ja in-memory salvestused | ProHoster","description":"M\u00f5ned p\u00e4evad tagasi toimus Hydra konverents. JUG.ru Group kutsus unistuste esinejad (Leslie Lamport! Cliff Click! Martin Kleppmann!) ja p\u00fchendas kaks p\u00e4eva jaotatud s\u00fcsteemidele ja arvutustele. Kontur oli \u00fcks kolmest konverentsi partnerist. Me suhtlesime boksis, r\u00e4\u00e4kisime oma jaotatud salvestustest, m\u00e4ngisime bingo't ja lahendasime \u00fclesandeid. See postitus toob v\u00e4lja \u00fclesannete lahendused boksis.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/razbor-zadach-s-konferentsii-hydra-balansirovka-nagruzki-i-in-memory-hranilishha","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0430\u0437\u0431\u043e\u0440 \u0437\u0430\u0434\u0430\u0447 \u0441 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Hydra \u2014 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 in-memory \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 | ProHoster","og:description":"\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434 \u0441\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f Hydra. \u0420\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 JUG.ru Group \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u043b\u0438 \u0441\u043f\u0438\u043a\u0435\u0440\u043e\u0432 \u043c\u0435\u0447\u0442\u044b (\u041b\u0435\u0441\u043b\u0438 \u041b\u044d\u043c\u043f\u043e\u0440\u0442! \u041a\u043b\u0438\u0444\u0444 \u041a\u043b\u0438\u043a! \u041c\u0430\u0440\u0442\u0438\u043d \u041a\u043b\u0435\u043f\u043f\u043c\u0430\u043d\u043d!) \u0438 \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043b\u0438 \u0434\u0432\u0430 \u0434\u043d\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c. \u041a\u043e\u043d\u0442\u0443\u0440 \u0431\u044b\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438. \u041c\u044b \u043e\u0431\u0449\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e \u043d\u0430\u0448\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u043a\u0438, \u0438\u0433\u0440\u0430\u043b\u0438 \u0432 \u0431\u0438\u043d\u0433\u043e, \u0440\u0435\u0448\u0430\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u043a\u0438. \u042d\u0442\u043e \u043f\u043e\u0441\u0442 \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/razbor-zadach-s-konferentsii-hydra-balansirovka-nagruzki-i-in-memory-hranilishha","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:10:16+00:00","article:modified_time":"2019-10-31T19:10:16+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36205","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 02:25:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:50:57","updated":"2026-01-22 02:25:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/36205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=36205"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/36205\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/27083"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=36205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=36205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=36205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}