{"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\/it\/blog\/administrirovanie\/razbor-zadach-s-konferentsii-hydra-balansirovka-nagruzki-i-in-memory-hranilishha","title":{"rendered":"Analisi dei problemi dalla conferenza Hydra \u2014 bilanciamento del carico e memorie in-memory","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Qualche giorno fa si \u00e8 svolta <noindex><a rel=\"nofollow\" href=\"https:\/\/hydraconf.com\">la conferenza Hydra<\/a><\/noindex>. I ragazzi di JUG.ru Group hanno invitato relatori da sogno (Leslie Lamport! Cliff Click! Martin Kleppmann!) e hanno dedicato due giorni ai sistemi distribuiti e al calcolo. Contur \u00e8 stata uno dei tre partner della conferenza. Abbiamo interagito al nostro stand, parlato delle nostre memorie distribuite, giocato a bingo e risolto dei problemi.<\/p>\n<p><\/p>\n<p>Questo \u00e8 un post che analizza i problemi presentati allo stand di Contur, scritto dall'autore del testo. Chi era presente a Hydra ha ora l'opportunit\u00e0 di ricordare piacevoli esperienze, mentre chi non c'era ha la possibilit\u00e0 di esercitare la mente. <em>big O<\/em>-notazione. <\/p>\n<p><\/p>\n<p>Ci sono stati anche partecipanti che hanno smontato una lavagna per fare slides e annotare la propria soluzione. Non sto scherzando \u2014 hanno consegnato per la revisione un tale fascicolo di carta:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Analisi dei problemi dalla conferenza Hydra \u2014 bilanciamento del carico e memorie in-memory\" src=\"\/wp-content\/uploads\/2019\/07\/4b74e8bc33e390d1f4c4523f9941ed0a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In totale c'erano tre problemi:<\/p>\n<p><\/p>\n<ul>\n<li>sulla scelta delle repliche in base ai pesi per il bilanciamento del carico<\/li>\n<li>sulla ordinazione dei risultati di una query su un database in-memory<\/li>\n<li>sulla trasmissione dello stato in un sistema distribuito con topologia ad anello<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"zadacha-1-clusterclient\">Problema 1. ClusterClient<\/h1>\n<p><\/p>\n<p>E' stato richiesto di proporre un algoritmo efficace per la scelta di K da N repliche pesate in un sistema distribuito:<\/p>\n<p><\/p>\n<blockquote><p>Il tuo team ha il compito di sviluppare una libreria client per un cluster massivamente distribuito di N nodi. La libreria dovrebbe tenere traccia di vari metadati associati ai nodi (ad esempio, le loro latenze, i tassi di risposta 4xx\/5xx, ecc.) e assegnare pesi in virgola mobile W1..WN a ciascuno di essi. Per supportare la strategia di esecuzione concorrente, la libreria dovrebbe essere in grado di selezionare K di N nodi in modo casuale, con la probabilit\u00e0 di essere selezionati proporzionale al peso di un nodo.<\/p>\n<p>Proponi un algoritmo per selezionare i nodi in modo efficiente. Stima la sua complessit\u00e0 computazionale utilizzando la notazione big O.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Why is everything in English?<\/b><\/p>\n<p>Because in this form it was contested by the conference participants and because English was the official language of Hydra. The problems looked like this:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Analisi dei problemi dalla conferenza Hydra \u2014 bilanciamento del carico e memorie in-memory\" src=\"\/wp-content\/uploads\/2019\/07\/4bdf7031c82eea4340a5cdef9ad8df0f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Prendi carta e penna, pensa, non avere fretta di aprire subito gli spoiler \ud83d\ude42<\/p>\n<p>\n<b class=\"spoiler_title\">Analisi della soluzione (video)<\/b><\/p>\n<p>Inizio alle 5:53, durata totale 4 minuti:<\/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=\"Riproduci video\" 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>Ecco come hanno presentato la loro soluzione quei ragazzi con il flipchart:<\/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=\"Riproduci video\" 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\">Analisi della soluzione (testo)<\/b><\/p>\n<p>Una soluzione semplice \u00e8 la seguente: sommare i pesi di tutte le repliche, generare un numero casuale da 0 a somma di tutti i pesi, quindi selezionare la i-esima replica tale che la somma dei pesi delle repliche da 0 a (i-1) sia minore del numero casuale, mentre la somma dei pesi delle repliche da 0 a i-esima sia maggiore. In questo modo si ottiene una replica. Per selezionare la successiva, si deve ripetere l'intera procedura, escludendo la replica gi\u00e0 scelta. Con questo algoritmo, la complessit\u00e0 della scelta di una replica \u00e8 O(N), la complessit\u00e0 della scelta di K repliche \u00e8 O(N\u00b7K) ~ O(N\u00b2).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Analisi dei problemi dalla conferenza Hydra \u2014 bilanciamento del carico e memorie in-memory\" src=\"\/wp-content\/uploads\/2019\/07\/0d869f10421f9cf36e501faefc76f209.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La complessit\u00e0 quadratica \u00e8 un problema, ma pu\u00f2 essere migliorata. Per questo costruiamo <noindex><a rel=\"nofollow\" href=\"http:\/\/brestprog.by\/topics\/segmenttree\/\">un albero degli intervalli<\/a><\/noindex> per le somme dei pesi. Si ottiene un albero di profondit\u00e0 lg N, le cui foglie contengono i pesi delle repliche, mentre negli altri nodi ci sono somme parziali, fino alla somma di tutti i pesi nella radice dell'albero. Successivamente generiamo un numero casuale da 0 alla somma di tutti i pesi, troviamo la i-esima replica, la rimuoviamo dall'albero e ripetiamo la procedura per cercare le repliche rimanenti. Con questo algoritmo, la complessit\u00e0 di costruzione dell'albero \u00e8 O(N), la complessit\u00e0 per trovare la i-esima replica e rimuoverla dall'albero \u00e8 O(lg N), la complessit\u00e0 della selezione di K repliche \u00e8 O(N + K lg N) ~ O(N lg N).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Analisi dei problemi dalla conferenza Hydra \u2014 bilanciamento del carico e memorie in-memory\" src=\"\/wp-content\/uploads\/2019\/07\/458c897c3b70c3870a3510f76ec2992f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La complessit\u00e0 lineare-logaritmica \u00e8 preferibile a quella quadratica, specialmente per grandi K.<\/p>\n<p><\/p>\n<p>Questo algoritmo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vostok\/clusterclient.core\/blob\/master\/Vostok.ClusterClient.Core\/Ordering\/Weighed\/WeighedReplicaOrdering.cs\">\u00e8 implementato nel codice<\/a><\/noindex> della libreria ClusterClient del progetto \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/tech.kontur.ru\/vostok\">Vostok<\/a><\/noindex>\u00bb. (L\u00ec l'albero \u00e8 costruito in O(N lg N), ma ci\u00f2 non influisce sulla complessit\u00e0 finale dell'algoritmo.)<\/p>\n<p><\/p>\n<h1 id=\"zadacha-2-zebra\">Compito 2. Zebra<\/h1>\n<p><\/p>\n<p>Era necessario proporre un algoritmo per la corretta ordinazione dei documenti in memoria su un campo arbitrario non indicizzato:<\/p>\n<p><\/p>\n<blockquote><p>Il tuo team ha il compito di sviluppare un database di documenti in memoria suddiviso in partizioni. Un carico di lavoro comune sarebbe selezionare i primi N documenti ordinati per un campo numerico arbitrario (non indicizzato) da una collezione di dimensione M (di solito N &lt; 100 &lt;&lt; M). Un carico di lavoro leggermente meno comune sarebbe selezionare i primi N dopo aver saltato i primi S documenti (S ~ N).<\/p>\n<p>Proponi un algoritmo per eseguire tali query in modo efficiente. Stima la sua complessit\u00e0 computazionale utilizzando la notazione big O nei casi medi e peggiori.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Analisi della soluzione (video)<\/b><\/p>\n<p>Inizio a 34:50, durando in totale 6 minuti:<\/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=\"Riproduci video\" 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\">Analisi della soluzione (testo)<\/b><\/p>\n<p>La soluzione \u00e8 evidente: ordinare tutti i documenti (ad esempio, usando <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>), poi prendere N+S documenti. In tal caso, la complessit\u00e0 di ordinamento in media \u00e8 di O(M lg M), nel peggiore dei casi \u00e8 O(M2).<\/p>\n<p><\/p>\n<p>\u00c8 ovvio che ordinare tutti i M documenti per poi prendere solo una piccola parte di essi \u00e8 inefficiente. Per evitare di ordinare tutti i documenti, si adatta l'algoritmo <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Quickselect\">quickselect<\/a><\/noindex>, che selezioner\u00e0 i documenti N+S necessari (che potranno essere ordinati secondo qualsiasi algoritmo). In questo caso, la complessit\u00e0 si ridurr\u00e0 in media a O(M), mentre il caso peggiore rimarr\u00e0 lo stesso.<\/p>\n<p><\/p>\n<p>Tuttavia, si pu\u00f2 fare anche meglio \u2014 utilizzando l'algoritmo <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>. In questo caso, i primi N+S documenti vengono inseriti in un min- o max-heap (a seconda della direzione dell'ordinamento), e poi ogni documento successivo viene confrontato con la radice dell'albero, dove si trova il documento attualmente minimo o massimo, e, se necessario, viene aggiunto all'albero. In questo caso, la complessit\u00e0 nel caso peggiore, quando sar\u00e0 necessario ricostruire costantemente l'albero, \u00e8 O(M lg M), mentre la complessit\u00e0 in media \u00e8 O(M), proprio come usando il quickselect.<\/p>\n<p><\/p>\n<p>Tuttavia, lo heap streaming si dimostra pi\u00f9 efficiente poich\u00e9, nella pratica, \u00e8 possibile scartare la maggior parte dei documenti senza ricostruire la heap, dopo un'unica comparazione con il suo elemento radice. Questo tipo di ordinamento \u00e8 implementato nel database in-memory Zebra, sviluppato e usato in Kontur.<\/p>\n<p><\/p>\n<h1 id=\"zadacha-3-state-swaps\">Compito 3. Scambi di stato<\/h1>\n<p><\/p>\n<p>Era necessario proporre l'algoritmo pi\u00f9 efficiente per lo spostamento degli stati:<\/p>\n<p><\/p>\n<blockquote><p>Il tuo team ha il compito di sviluppare un meccanismo di scambio di stati per un cluster distribuito di N nodi. Lo stato del nodo i deve essere trasferito al nodo (i+1), mentre lo stato del nodo N deve essere trasferito al primo nodo. L'unica operazione supportata \u00e8 lo scambio di stati, quando due nodi scambiano i loro stati in modo atomico. \u00c8 noto che uno scambio di stati richiede M millisecondi. Ogni nodo pu\u00f2 partecipare a un singolo scambio di stati in un dato momento.<\/p>\n<p>Quanto tempo ci vuole per trasferire gli stati di tutti i nodi in un cluster?<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Analisi della soluzione (testo)<\/b><\/p>\n<p>Soluzione superficiale: scambiare gli stati del primo e del secondo elemento, poi del primo e del terzo, poi del primo e del quarto e cos\u00ec via. Dopo ogni scambio, lo stato di un elemento si trover\u00e0 nella posizione corretta. Sar\u00e0 necessario effettuare O(N) permutazioni e impiegare O(N\u00b7M) tempo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Analisi dei problemi dalla conferenza Hydra \u2014 bilanciamento del carico e memorie in-memory\" src=\"\/wp-content\/uploads\/2019\/07\/c0bbdf680f565d790bd64ebcd90bf985.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Il tempo lineare \u00e8 lungo, quindi si possono scambiare gli stati degli elementi a coppie: il primo con il secondo, il terzo con il quarto e cos\u00ec via. Dopo ogni scambio, lo stato di ciascun secondo elemento si trover\u00e0 nella posizione corretta. Sar\u00e0 necessario effettuare O(lg N) permutazioni e impiegare O(M lg N) tempo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Analisi dei problemi dalla conferenza Hydra \u2014 bilanciamento del carico e memorie in-memory\" src=\"\/wp-content\/uploads\/2019\/07\/7d55d4f8b63bf63763e93b5780e02c48.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tuttavia, \u00e8 possibile rendere lo spostamento ancora pi\u00f9 efficiente \u2014 non in tempo lineare, ma in tempo costante. Per fare questo, nel primo passo bisogna scambiare lo stato del primo elemento con l'ultimo, del secondo con il penultimo e cos\u00ec via. Lo stato dell'ultimo elemento si trover\u00e0 nella posizione corretta. Ora bisogna scambiare lo stato del secondo elemento con l'ultimo, del terzo con il penultimo e cos\u00ec via. Dopo questo turno di scambi, lo stato di tutti gli elementi si trover\u00e0 nelle posizioni desiderate. In totale verranno effettuate O(2M) ~ O(1) permutazioni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Analisi dei problemi dalla conferenza Hydra \u2014 bilanciamento del carico e memorie in-memory\" src=\"\/wp-content\/uploads\/2019\/07\/ad5fe5325985af3b280d2dc75c6a1077.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Questa soluzione non sorprender\u00e0 affatto un matematico, che ricorda ancora che una rotazione \u00e8 una composizione di due simmetrie assiali. Tra l'altro, \u00e8 facilmente generalizzabile per uno spostamento non di una, ma di K &lt; N posizioni. (Scrivete nei commenti come esattamente.)<\/p>\n<p><\/p>\n<p>Ti sono piaciuti gli esercizi? Conosci altre soluzioni? Condividi nei commenti.<\/p>\n<p><\/p>\n<p>Ecco alcuni link utili alla fine:<\/p>\n<p><\/p>\n<ul>\n<li>scopri di pi\u00f9 su <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.kontur.ru\/infra\">sviluppo infrastrutturale<\/a><\/noindex> in Kontur<\/li>\n<li>guarda le registrazioni delle <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/playlist?list=PLc82OEDeni8TxAybSoENHU-hJ4mRbVQG2\">riunioni interne con relazioni<\/a><\/noindex> sui sistemi distribuiti<\/li>\n<li>guarda il ciclo di videolezioni \"<noindex><a rel=\"nofollow\" href=\"https:\/\/tech.kontur.ru\/algorithms-for-everyone\">Algoritmi insoliti per persone comuni<\/a><\/noindex>\u00bb<\/li>\n<li>iscriviti al nostro <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/KonturTech\">canale Telegram<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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\udd47Analisi delle sfide dalla conferenza Hydra \u2014 bilanciamento del carico e archiviazione in memoria | ProHoster","description":"Qualche giorno fa si \u00e8 tenuta la conferenza Hydra. I ragazzi di JUG.ru Group hanno invitato relatori da sogno (Leslie Lamport! Cliff Click! Martin Kleppmann!) e hanno dedicato due giorni ai sistemi distribuiti e al calcolo. Kontur \u00e8 stato uno dei tre partner della conferenza. Abbiamo interagito allo stand, parlato delle nostre soluzioni di storage distribuito, giocato a bingo e risolto problemi. Questo \u00e8 un post che analizza le sfide presentate allo stand.","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/36205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=36205"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/36205\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/27083"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=36205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=36205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=36205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}