SlideShare a Scribd company logo
1 of 197
Download to read offline
HighLoad 
äëÿ íà÷èíàþùèõ
HighLoad äëÿ íà÷èíàþùèõ 
Dmitry E. Oboukhov 
31 îêòÿáðÿ 2014
HighLoad, ÷òî ýòî? 
I Êîíôåðåíöèÿ?
HighLoad, ÷òî ýòî? 
I Êîíôåðåíöèÿ? 
I Âûñîêàÿ íàãðóçêà?
HighLoad, ÷òî ýòî? 
I Êîíôåðåíöèÿ? 
I Âûñîêàÿ íàãðóçêà? 
I Ìèô?!
Âûñîêàÿ íàãðóçêà ÷òî ýòî?
Âûñîêàÿ íàãðóçêà ÷òî ýòî? 
I 53:328  109 çàïðîñîâ â ñåêóíäó?
Âûñîêàÿ íàãðóçêà ÷òî ýòî? 
I 53:328  109 çàïðîñîâ â ñåêóíäó? - ñðåäíèé CPU
Âûñîêàÿ íàãðóçêà ÷òî ýòî? 
I 53:328  109 çàïðîñîâ â ñåêóíäó? - ñðåäíèé CPU 
I Áîëåå ðåàëèñòè÷íî!
Âûñîêàÿ íàãðóçêà ÷òî ýòî? 
I 53:328  109 çàïðîñîâ â ñåêóíäó? - ñðåäíèé CPU 
I Áîëåå ðåàëèñòè÷íî! 
I 1 çàïðîñ â ñåêóíäó?
Âûñîêàÿ íàãðóçêà ÷òî ýòî? 
I 53:328  109 çàïðîñîâ â ñåêóíäó? - ñðåäíèé CPU 
I Áîëåå ðåàëèñòè÷íî! 
I 1 çàïðîñ â ñåêóíäó? - ëþáîé âåá ñåðâåð?...
Âûñîêàÿ íàãðóçêà ÷òî ýòî? 
I 53:328  109 çàïðîñîâ â ñåêóíäó? - ñðåäíèé CPU 
I Áîëåå ðåàëèñòè÷íî! 
I 1 çàïðîñ â ñåêóíäó? - ëþáîé âåá ñåðâåð?... 
ïåðåêîäèðóþùèé âèäåîðîëèêè? :)
Âûñîêàÿ íàãðóçêà ýòî:
Âûñîêàÿ íàãðóçêà ýòî: 
Íàãðóçêà, ñ êîòîðîé íå ñïðàâëÿåòñÿ 
æåëåçî
Êîãäà ýòî áûâàåò?
Êîãäà ýòî áûâàåò? 
Äîñòèãíóòû òåõíè÷åñêèå îãðàíè÷åíèÿ
Êîãäà ýòî áûâàåò? 
Äîñòèãíóòû òåõíè÷åñêèå îãðàíè÷åíèÿ 
I Ñåòü
Êîãäà ýòî áûâàåò? 
Äîñòèãíóòû òåõíè÷åñêèå îãðàíè÷åíèÿ 
I Ñåòü - çà ðàìêàìè äàííîãî äîêëàäà
Êîãäà ýòî áûâàåò? 
Äîñòèãíóòû òåõíè÷åñêèå îãðàíè÷åíèÿ 
I Ñåòü - çà ðàìêàìè äàííîãî äîêëàäà 
I Ïàìÿòü
Êîãäà ýòî áûâàåò? 
Äîñòèãíóòû òåõíè÷åñêèå îãðàíè÷åíèÿ 
I Ñåòü - çà ðàìêàìè äàííîãî äîêëàäà 
I Ïàìÿòü 
I CPU
Êîãäà ýòî áûâàåò? 
Äîñòèãíóòû òåõíè÷åñêèå îãðàíè÷åíèÿ 
I Ñåòü - çà ðàìêàìè äàííîãî äîêëàäà 
I Ïàìÿòü 
I CPU 
I Õðàíèëèùå äàííûõ
Ïðè÷èíû
Ïðè÷èíû 
I Íåäîèñïîëüçîâàíèå æåëåçà
Ïðè÷èíû 
I Íåäîèñïîëüçîâàíèå æåëåçà 
I Òðóäíîñòè ìàñøòàáèðîâàíèÿ
Ïðè÷èíû 
Àðõèòåêòóðíûå ïðîáëåìû
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð.
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè.
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè. 
I Ïàðñèíã çàïðîñà http.
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè. 
I Ïàðñèíã çàïðîñà http. 
I Âàëèäàöèÿ çàïðîñà, âûáîð 
êîíòðîëëåðà.
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè. 
I Ïàðñèíã çàïðîñà http. 
I Âàëèäàöèÿ çàïðîñà, âûáîð 
êîíòðîëëåðà. 
I Çàïðîñ(û) ê õðàíèëèùó äàííûõ.
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè. 
I Ïàðñèíã çàïðîñà http. 
I Âàëèäàöèÿ çàïðîñà, âûáîð 
êîíòðîëëåðà. 
I Çàïðîñ(û) ê õðàíèëèùó äàííûõ. 
I Ôîðìèðîâàíèå îòâåòà (template).
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè. 
I Ïàðñèíã çàïðîñà http. 
I Âàëèäàöèÿ çàïðîñà, âûáîð 
êîíòðîëëåðà. 
I Çàïðîñ(û) ê õðàíèëèùó äàííûõ. 
I Ôîðìèðîâàíèå îòâåòà (template). 
I Îòïðàâêà îòâåòà êëèåíòó.
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè. 
I Ïàðñèíã çàïðîñà http. 
I Âàëèäàöèÿ çàïðîñà, âûáîð 
êîíòðîëëåðà. 
I Çàïðîñ(û) ê õðàíèëèùó äàííûõ. 
I Ôîðìèðîâàíèå îòâåòà (template). 
I Îòïðàâêà îòâåòà êëèåíòó. 
Òðàäèöèîííàÿ ðåàëèçàöèÿ
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè. 
I Ïàðñèíã çàïðîñà http. 
I Âàëèäàöèÿ çàïðîñà, âûáîð 
êîíòðîëëåðà. 
I Çàïðîñ(û) ê õðàíèëèùó äàííûõ. 
I Ôîðìèðîâàíèå îòâåòà (template). 
I Îòïðàâêà îòâåòà êëèåíòó. 
Òðàäèöèîííàÿ ðåàëèçàöèÿ 
I îäèí ïðîöåññ íà îäèí öèêë
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðàññìîòðèì òèïè÷íûé âåáñåðâåð. íà Perl, Python, Ruby... 
Çàäà÷è îäíîãî öèêëà 
I ×òåíèå çàïðîñà èç ñåòè. 
I Ïàðñèíã çàïðîñà http. 
I Âàëèäàöèÿ çàïðîñà, âûáîð 
êîíòðîëëåðà. 
I Çàïðîñ(û) ê õðàíèëèùó äàííûõ. 
I Ôîðìèðîâàíèå îòâåòà (template). 
I Îòïðàâêà îòâåòà êëèåíòó. 
Òðàäèöèîííàÿ ðåàëèçàöèÿ 
I îäèí ïðîöåññ íà îäèí öèêë 
I îäèí òðåä íà îäèí öèêë
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷àëèñü ðàçãîâîðû î HighLoad?
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷àëèñü ðàçãîâîðû î HighLoad? 
I Óâåëè÷åíèå ÷èñëà ïðîöåññîâ/òðåäîâ.
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷àëèñü ðàçãîâîðû î HighLoad? 
I Óâåëè÷åíèå ÷èñëà ïðîöåññîâ/òðåäîâ. 
I Óâåëè÷åíèå ÷èñëà ñåðâåðîâ.
Íåäîèñïîëüçîâàíèå æåëåçà 
Âåðíåìñÿ ê ðàññìàòðèâàåìîìó ñåðâåðó
Íåäîèñïîëüçîâàíèå æåëåçà 
Âåðíåìñÿ ê ðàññìàòðèâàåìîìó ñåðâåðó 
I Ïðîáëåìû íàñòóïèëè ïðè 100 çàïðîñàõ â ñåêóíäó.
Íåäîèñïîëüçîâàíèå æåëåçà 
Âåðíåìñÿ ê ðàññìàòðèâàåìîìó ñåðâåðó 
I Ïðîáëåìû íàñòóïèëè ïðè 100 çàïðîñàõ â ñåêóíäó. 
I Óâåëè÷èëè ÷èñëî ïðîöåññîâ â ðàáîòå.
Íåäîèñïîëüçîâàíèå æåëåçà 
Âåðíåìñÿ ê ðàññìàòðèâàåìîìó ñåðâåðó 
I Ïðîáëåìû íàñòóïèëè ïðè 100 çàïðîñàõ â ñåêóíäó. 
I Óâåëè÷èëè ÷èñëî ïðîöåññîâ â ðàáîòå. 
Ïîìîãëî.
Íåäîèñïîëüçîâàíèå æåëåçà 
Âåðíåìñÿ ê ðàññìàòðèâàåìîìó ñåðâåðó 
I Ïðîáëåìû íàñòóïèëè ïðè 100 çàïðîñàõ â ñåêóíäó. 
I Óâåëè÷èëè ÷èñëî ïðîöåññîâ â ðàáîòå. 
Ïîìîãëî. 
I Íîâûå ïðîáëåìû ïðè 150 çàïðîñîâ â ñåêóíäó.
Íåäîèñïîëüçîâàíèå æåëåçà 
Âåðíåìñÿ ê ðàññìàòðèâàåìîìó ñåðâåðó 
I Ïðîáëåìû íàñòóïèëè ïðè 100 çàïðîñàõ â ñåêóíäó. 
I Óâåëè÷èëè ÷èñëî ïðîöåññîâ â ðàáîòå. 
Ïîìîãëî. 
I Íîâûå ïðîáëåìû ïðè 150 çàïðîñîâ â ñåêóíäó. 
I Äàëüíåéøåå óâåëè÷åíèå ÷èñëà ïðîöåññîâ ïîìîãàåò ñëàáî.
Íåäîèñïîëüçîâàíèå æåëåçà 
×òî äåëàòü?
Íåäîèñïîëüçîâàíèå æåëåçà 
×òî äåëàòü? 
I Ìåíÿòü àðõèòåêòóðó?
Íåäîèñïîëüçîâàíèå æåëåçà 
×òî äåëàòü? 
I Ìåíÿòü àðõèòåêòóðó? 
- Ìû íàä ýòèì 3 ãîäà ðàáîòàëè!
Íåäîèñïîëüçîâàíèå æåëåçà 
×òî äåëàòü? 
I Ìåíÿòü àðõèòåêòóðó? 
- Ìû íàä ýòèì 3 ãîäà ðàáîòàëè! 
I Äîáàâëÿòü âòîðîé ñåðâåð?
Íåäîèñïîëüçîâàíèå æåëåçà 
×òî äåëàòü? 
I Ìåíÿòü àðõèòåêòóðó? 
- Ìû íàä ýòèì 3 ãîäà ðàáîòàëè! 
I Äîáàâëÿòü âòîðîé ñåðâåð? 
- Ýòî òîæå íå ïðîñòî! 
(áèçíåñëîãèêà) 
Ñïîêîéíî!
Íåäîèñïîëüçîâàíèå æåëåçà 
×òî äåëàòü? 
I Ìåíÿòü àðõèòåêòóðó? 
- Ìû íàä ýòèì 3 ãîäà ðàáîòàëè! 
I Äîáàâëÿòü âòîðîé ñåðâåð? 
- Ýòî òîæå íå ïðîñòî! 
(áèçíåñëîãèêà) 
Ñïîêîéíî! 
I Ïðîâåñòè àíàëèç àðõèòåêòóðû.
Íåäîèñïîëüçîâàíèå æåëåçà 
×òî äåëàòü? 
I Ìåíÿòü àðõèòåêòóðó? 
- Ìû íàä ýòèì 3 ãîäà ðàáîòàëè! 
I Äîáàâëÿòü âòîðîé ñåðâåð? 
- Ýòî òîæå íå ïðîñòî! 
(áèçíåñëîãèêà) 
Ñïîêîéíî! 
I Ïðîâåñòè àíàëèç àðõèòåêòóðû. 
I Ïðîâåñòè èçìåðåíèÿ.
Íåäîèñïîëüçîâàíèå æåëåçà 
×òî äåëàòü? 
I Ìåíÿòü àðõèòåêòóðó? 
- Ìû íàä ýòèì 3 ãîäà ðàáîòàëè! 
I Äîáàâëÿòü âòîðîé ñåðâåð? 
- Ýòî òîæå íå ïðîñòî! 
(áèçíåñëîãèêà) 
Ñïîêîéíî! 
I Ïðîâåñòè àíàëèç àðõèòåêòóðû. 
I Ïðîâåñòè èçìåðåíèÿ. 
I Íàéòè ñëàáûå ìåñòà.
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðåíèÿ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðåíèÿ 
×òåíèå çàïðîñà èç ñåòè. 15Ê RPS
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðåíèÿ 
×òåíèå çàïðîñà èç ñåòè. 15Ê RPS 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ, âûáîð êîíòðîëëåðà. 150Ê RPS/CPU
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðåíèÿ 
×òåíèå çàïðîñà èç ñåòè. 15Ê RPS 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ, âûáîð êîíòðîëëåðà. 150Ê RPS/CPU 
Çàïðîñû ê õðàíèëèùó. 60Ê RPS
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðåíèÿ 
×òåíèå çàïðîñà èç ñåòè. 15Ê RPS 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ, âûáîð êîíòðîëëåðà. 150Ê RPS/CPU 
Çàïðîñû ê õðàíèëèùó. 60Ê RPS 
Ôîðìèðîâàíèå îòâåòà (Ñîåäèíåíèå äàííûõ ñ template) 100Ê RPS/CPU
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðåíèÿ 
×òåíèå çàïðîñà èç ñåòè. 15Ê RPS 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ, âûáîð êîíòðîëëåðà. 150Ê RPS/CPU 
Çàïðîñû ê õðàíèëèùó. 60Ê RPS 
Ôîðìèðîâàíèå îòâåòà (Ñîåäèíåíèå äàííûõ ñ template) 100Ê RPS/CPU 
Îòïðàâêà îòâåòà êëèåíòó. 15Ê RPS
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
1 
1 
+ 1 
+ 1 
+ 1 
+ 1 
15 103150 10360 103100 10315 103 
= 6000RPS
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
1 
1 
+ 1 
+ 1 
+ 1 
+ 1 
15 103150 10360 103100 10315 103 
= 6000RPS 
Íî, ïîçâîëüòå!
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
1 
1 
+ 1 
+ 1 
+ 1 
+ 1 
15 103150 10360 103100 10315 103 
= 6000RPS 
Íî, ïîçâîëüòå! 
I Ó íàñ ïðîáëåìû íà 150 RPS!
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
1 
1 
+ 1 
+ 1 
+ 1 
+ 1 
15 103150 10360 103100 10315 103 
= 6000RPS 
Íî, ïîçâîëüòå! 
I Ó íàñ ïðîáëåìû íà 150 RPS! 
I Òóò ÷òî-òî íå òàê!
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ 
I Õðàíèëèùå âûõîäèò íà ñâîè RPS ïðè äîñòàòî÷íî áîëüøîì ÷èñëå 
ñîåäèíåíèé ê íåìó.
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ 
I Õðàíèëèùå âûõîäèò íà ñâîè RPS ïðè äîñòàòî÷íî áîëüøîì ÷èñëå 
ñîåäèíåíèé ê íåìó. 
I Ëèáî õðàíèëèùå íàäî ðàñïîëàãàòü ëîêàëüíî.
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ 
I Õðàíèëèùå âûõîäèò íà ñâîè RPS ïðè äîñòàòî÷íî áîëüøîì ÷èñëå 
ñîåäèíåíèé ê íåìó. 
I Ëèáî õðàíèëèùå íàäî ðàñïîëàãàòü ëîêàëüíî. 
íåïðèåìëåìî.
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ 
I Õðàíèëèùå âûõîäèò íà ñâîè RPS ïðè äîñòàòî÷íî áîëüøîì ÷èñëå 
ñîåäèíåíèé ê íåìó. 
I Ëèáî õðàíèëèùå íàäî ðàñïîëàãàòü ëîêàëüíî. 
íåïðèåìëåìî. 
I Òî æå ñàìîå è ñ âçàèìîäåéñòâèåì ñ êëèåíòîì.
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ 
I Õðàíèëèùå âûõîäèò íà ñâîè RPS ïðè äîñòàòî÷íî áîëüøîì ÷èñëå 
ñîåäèíåíèé ê íåìó. 
I Ëèáî õðàíèëèùå íàäî ðàñïîëàãàòü ëîêàëüíî. 
íåïðèåìëåìî. 
I Òî æå ñàìîå è ñ âçàèìîäåéñòâèåì ñ êëèåíòîì. 
×òî äåëàòü?
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ 
I Õðàíèëèùå âûõîäèò íà ñâîè RPS ïðè äîñòàòî÷íî áîëüøîì ÷èñëå 
ñîåäèíåíèé ê íåìó. 
I Ëèáî õðàíèëèùå íàäî ðàñïîëàãàòü ëîêàëüíî. 
íåïðèåìëåìî. 
I Òî æå ñàìîå è ñ âçàèìîäåéñòâèåì ñ êëèåíòîì. 
×òî äåëàòü? 
I Ïîïðîáóåì åùå óâåëè÷èòü ÷èñëî ïðîöåññîâ?
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ 
I Õðàíèëèùå âûõîäèò íà ñâîè RPS ïðè äîñòàòî÷íî áîëüøîì ÷èñëå 
ñîåäèíåíèé ê íåìó. 
I Ëèáî õðàíèëèùå íàäî ðàñïîëàãàòü ëîêàëüíî. 
íåïðèåìëåìî. 
I Òî æå ñàìîå è ñ âçàèìîäåéñòâèåì ñ êëèåíòîì. 
×òî äåëàòü? 
I Ïîïðîáóåì åùå óâåëè÷èòü ÷èñëî ïðîöåññîâ? 
I Ïðîáëåìû ñòàëè áîëüøå!
Íåäîèñïîëüçîâàíèå æåëåçà 
Íà÷èíàåì ðàçáèðàòüñÿ 
I Õðàíèëèùå âûõîäèò íà ñâîè RPS ïðè äîñòàòî÷íî áîëüøîì ÷èñëå 
ñîåäèíåíèé ê íåìó. 
I Ëèáî õðàíèëèùå íàäî ðàñïîëàãàòü ëîêàëüíî. 
íåïðèåìëåìî. 
I Òî æå ñàìîå è ñ âçàèìîäåéñòâèåì ñ êëèåíòîì. 
×òî äåëàòü? 
I Ïîïðîáóåì åùå óâåëè÷èòü ÷èñëî ïðîöåññîâ? 
I Ïðîáëåìû ñòàëè áîëüøå! 
I Ïî÷åìó?!
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðåçþìå ñèòóàöèè, åùå ðàç
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðåçþìå ñèòóàöèè, åùå ðàç 
I Èìååòñÿ 100500 ñòðîê êîäà, íàä êîòîðûì ðàáîòàëè íåñêîëüêî ëåò.
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðåçþìå ñèòóàöèè, åùå ðàç 
I Èìååòñÿ 100500 ñòðîê êîäà, íàä êîòîðûì ðàáîòàëè íåñêîëüêî ëåò. 
I Ýòîò êîä AS IS ïî ðåçóëüòàòàì èçìåðåíèé ìîæåò âûäàâàòü ãîðàçäî 
áîëüøå RPS ÷åì â ðåàëüíîñòè.
Íåäîèñïîëüçîâàíèå æåëåçà 
Ðåçþìå ñèòóàöèè, åùå ðàç 
I Èìååòñÿ 100500 ñòðîê êîäà, íàä êîòîðûì ðàáîòàëè íåñêîëüêî ëåò. 
I Ýòîò êîä AS IS ïî ðåçóëüòàòàì èçìåðåíèé ìîæåò âûäàâàòü ãîðàçäî 
áîëüøå RPS ÷åì â ðåàëüíîñòè. 
I Ïðîáëåìû íà÷èíàþòñÿ íà óðîâíå RPS íà ïîðÿäîê ìåíüøèõ, íåæåëè 
ðàñ÷åòíûå.
Íåäîèñïîëüçîâàíèå æåëåçà 
Åùå ðàç ðàññìîòðèì öèêë îáðàáîòêè
Íåäîèñïîëüçîâàíèå æåëåçà 
Åùå ðàç ðàññìîòðèì öèêë îáðàáîòêè 
I Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ.
Íåäîèñïîëüçîâàíèå æåëåçà 
Åùå ðàç ðàññìîòðèì öèêë îáðàáîòêè 
I Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ.
Íåäîèñïîëüçîâàíèå æåëåçà 
Åùå ðàç ðàññìîòðèì öèêë îáðàáîòêè 
I Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ.
Íåäîèñïîëüçîâàíèå æåëåçà 
Åùå ðàç ðàññìîòðèì öèêë îáðàáîòêè 
I Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ.
Íåäîèñïîëüçîâàíèå æåëåçà 
Åùå ðàç ðàññìîòðèì öèêë îáðàáîòêè 
I Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 
I Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì.
Íåäîèñïîëüçîâàíèå æåëåçà 
Åùå ðàç ðàññìîòðèì öèêë îáðàáîòêè 
I Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 
I Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì. 
I Îæèäàíèå îòïðàâêè äàííûõ êëèåíòó.
Íåäîèñïîëüçîâàíèå æåëåçà 
Åùå ðàç ðàññìîòðèì öèêë îáðàáîòêè 
I Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 
I Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì. 
I Îæèäàíèå îòïðàâêè äàííûõ êëèåíòó. 
I Ñëåäóþùèé êëèåíò!
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðÿåì
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðÿåì 
Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 70 ìêñ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðÿåì 
Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 70 ìêñ 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 6 ìêñ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðÿåì 
Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 70 ìêñ 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 6 ìêñ 
Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 1 ìêñ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðÿåì 
Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 70 ìêñ 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 6 ìêñ 
Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 1 ìêñ 
Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 16 ìêñ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðÿåì 
Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 70 ìêñ 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 6 ìêñ 
Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 1 ìêñ 
Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 16 ìêñ 
Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì. 10 ìêñ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èçìåðÿåì 
Îæèäàíèå çàïðîñà (äàííûõ) îò ïîëüçîâàòåëÿ. 70 ìêñ 
Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 6 ìêñ 
Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 1 ìêñ 
Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 16 ìêñ 
Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì. 10 ìêñ 
Îæèäàíèå îòïðàâêè äàííûõ êëèåíòó. 70 ìêñ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä âûïîëíÿëñÿ: 6 + 1 + 10 =
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä âûïîëíÿëñÿ: 6 + 1 + 10 = 17 ìêñ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä âûïîëíÿëñÿ: 6 + 1 + 10 = 17 ìêñ 
I ×åãî-ëèáî îæèäàëè: 70 + 16 + 70 =
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä âûïîëíÿëñÿ: 6 + 1 + 10 = 17 ìêñ 
I ×åãî-ëèáî îæèäàëè: 70 + 16 + 70 = 156 ìêñ
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä âûïîëíÿëñÿ: 6 + 1 + 10 = 17 ìêñ 
I ×åãî-ëèáî îæèäàëè: 70 + 16 + 70 = 156 ìêñ 
I Êîä âûïîëíÿåòñÿ òîëüêî 10% âðåìåíè!
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä âûïîëíÿëñÿ: 6 + 1 + 10 = 17 ìêñ 
I ×åãî-ëèáî îæèäàëè: 70 + 16 + 70 = 156 ìêñ 
I Êîä âûïîëíÿåòñÿ òîëüêî 10% âðåìåíè! 
I È ïðè ýòîì òîðìîçèò!
Íåäîèñïîëüçîâàíèå æåëåçà 
#include unistd.h 
int main(int argc, char **argv) { 
int i; 
for (;;) { 
usleep(70); usleep(7); 
usleep(16); usleep(10); 
usleep(70); 
} 
}
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU 
- ïî ìîèì èçìåðåíèÿì - ãäå-òî 15% çàãðóçêè íà CPU
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU 
- ïî ìîèì èçìåðåíèÿì - ãäå-òî 15% çàãðóçêè íà CPU 
I Çàïóñòèâ äåñÿòîê òàêèõ “âîðêåðîâ”, ïîëó÷àåì ïðèìåðíî òàêóþ æå 
íàãðóçêó êàê íà ïðîáëåìíîì ñåðâåðå.
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU 
- ïî ìîèì èçìåðåíèÿì - ãäå-òî 15% çàãðóçêè íà CPU 
I Çàïóñòèâ äåñÿòîê òàêèõ “âîðêåðîâ”, ïîëó÷àåì ïðèìåðíî òàêóþ æå 
íàãðóçêó êàê íà ïðîáëåìíîì ñåðâåðå. 
I Ïîíÿòíî ÷òî ïðèìåð ñèíòåòè÷åñêèé (åñòü âîïðîñû ê ðåàëèçàöèè usleep).
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU 
- ïî ìîèì èçìåðåíèÿì - ãäå-òî 15% çàãðóçêè íà CPU 
I Çàïóñòèâ äåñÿòîê òàêèõ “âîðêåðîâ”, ïîëó÷àåì ïðèìåðíî òàêóþ æå 
íàãðóçêó êàê íà ïðîáëåìíîì ñåðâåðå. 
I Ïîíÿòíî ÷òî ïðèìåð ñèíòåòè÷åñêèé (åñòü âîïðîñû ê ðåàëèçàöèè usleep). 
Âåðíåìñÿ ê íàøåìó ñåðâåðó
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU 
- ïî ìîèì èçìåðåíèÿì - ãäå-òî 15% çàãðóçêè íà CPU 
I Çàïóñòèâ äåñÿòîê òàêèõ “âîðêåðîâ”, ïîëó÷àåì ïðèìåðíî òàêóþ æå 
íàãðóçêó êàê íà ïðîáëåìíîì ñåðâåðå. 
I Ïîíÿòíî ÷òî ïðèìåð ñèíòåòè÷åñêèé (åñòü âîïðîñû ê ðåàëèçàöèè usleep). 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Êàæäàÿ îòäåëüíàÿ ÷àñòü èìååò õîðîøóþ ïðîèçâîäèòåëüíîñòü
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU 
- ïî ìîèì èçìåðåíèÿì - ãäå-òî 15% çàãðóçêè íà CPU 
I Çàïóñòèâ äåñÿòîê òàêèõ “âîðêåðîâ”, ïîëó÷àåì ïðèìåðíî òàêóþ æå 
íàãðóçêó êàê íà ïðîáëåìíîì ñåðâåðå. 
I Ïîíÿòíî ÷òî ïðèìåð ñèíòåòè÷åñêèé (åñòü âîïðîñû ê ðåàëèçàöèè usleep). 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Êàæäàÿ îòäåëüíàÿ ÷àñòü èìååò õîðîøóþ ïðîèçâîäèòåëüíîñòü 
äîñòàòî÷íóþ äëÿ ðàçâèòèÿ ïðîåêòà åùå íà íåñêîëüêî ëåò âïåðåä.
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU 
- ïî ìîèì èçìåðåíèÿì - ãäå-òî 15% çàãðóçêè íà CPU 
I Çàïóñòèâ äåñÿòîê òàêèõ “âîðêåðîâ”, ïîëó÷àåì ïðèìåðíî òàêóþ æå 
íàãðóçêó êàê íà ïðîáëåìíîì ñåðâåðå. 
I Ïîíÿòíî ÷òî ïðèìåð ñèíòåòè÷åñêèé (åñòü âîïðîñû ê ðåàëèçàöèè usleep). 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Êàæäàÿ îòäåëüíàÿ ÷àñòü èìååò õîðîøóþ ïðîèçâîäèòåëüíîñòü 
äîñòàòî÷íóþ äëÿ ðàçâèòèÿ ïðîåêòà åùå íà íåñêîëüêî ëåò âïåðåä. 
I Áîëüøóþ ÷àñòü âðåìåíè (90%) íàø êîä ïðîâîäèò â îæèäàíèè.
Íåäîèñïîëüçîâàíèå æåëåçà 
Èòîãî 
I Êîä, äåëàþùèé òîëüêî sleep â öèêëå íåïëîõî ãðóçèò CPU 
- ïî ìîèì èçìåðåíèÿì - ãäå-òî 15% çàãðóçêè íà CPU 
I Çàïóñòèâ äåñÿòîê òàêèõ “âîðêåðîâ”, ïîëó÷àåì ïðèìåðíî òàêóþ æå 
íàãðóçêó êàê íà ïðîáëåìíîì ñåðâåðå. 
I Ïîíÿòíî ÷òî ïðèìåð ñèíòåòè÷åñêèé (åñòü âîïðîñû ê ðåàëèçàöèè usleep). 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Êàæäàÿ îòäåëüíàÿ ÷àñòü èìååò õîðîøóþ ïðîèçâîäèòåëüíîñòü 
äîñòàòî÷íóþ äëÿ ðàçâèòèÿ ïðîåêòà åùå íà íåñêîëüêî ëåò âïåðåä. 
I Áîëüøóþ ÷àñòü âðåìåíè (90%) íàø êîä ïðîâîäèò â îæèäàíèè. 
I ×òî äåëàòü?
Íåäîèñïîëüçîâàíèå æåëåçà 
Ïðîñòî ðåîðãàíèçîâàòü êîä
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Êîìïüþòåð  ýòî êîíå÷íûé àâòîìàò. Òðåäû äëÿ òåõ ëþäåé, 
êîòîðûå íå óìåþò ïðîãðàììèðîâàòü êîíå÷íûå àâòîìàòû. 
Àëàí Êîêñ
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èçáàâèìñÿ îò òðåäîâ!
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èçáàâèìñÿ îò òðåäîâ! 
- è ïðîöåññîâ.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ìàøèíà ñîáûòèé
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ìàøèíà ñîáûòèé 
I Âñÿ ðàáîòà äåëàåòñÿ â îáðàáîò÷èêå ñîáûòèÿ.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ìàøèíà ñîáûòèé 
I Âñÿ ðàáîòà äåëàåòñÿ â îáðàáîò÷èêå ñîáûòèÿ. 
- â îáùåì ñëó÷àå - callback.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ìàøèíà ñîáûòèé 
I Âñÿ ðàáîòà äåëàåòñÿ â îáðàáîò÷èêå ñîáûòèÿ. 
- â îáùåì ñëó÷àå - callback. 
I Êîãäà ïðîãðàììå íå÷åãî äåëàòü (íàïðèìåð îíà æäåò ñîáûòèÿ), òî 
óïðàâëåíèå âîçâðàùàåòñÿ ìàøèíå ñîáûòèé.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ìàøèíà ñîáûòèé 
I Âñÿ ðàáîòà äåëàåòñÿ â îáðàáîò÷èêå ñîáûòèÿ. 
- â îáùåì ñëó÷àå - callback. 
I Êîãäà ïðîãðàììå íå÷åãî äåëàòü (íàïðèìåð îíà æäåò ñîáûòèÿ), òî 
óïðàâëåíèå âîçâðàùàåòñÿ ìàøèíå ñîáûòèé. 
â îáùåì ñëó÷àå - return èç callback.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ìàøèíà ñîáûòèé 
I Âñÿ ðàáîòà äåëàåòñÿ â îáðàáîò÷èêå ñîáûòèÿ. 
- â îáùåì ñëó÷àå - callback. 
I Êîãäà ïðîãðàììå íå÷åãî äåëàòü (íàïðèìåð îíà æäåò ñîáûòèÿ), òî 
óïðàâëåíèå âîçâðàùàåòñÿ ìàøèíå ñîáûòèé. 
â îáùåì ñëó÷àå - return èç callback. 
I Îáðàáîò÷èê ñîáûòèÿ ìîæåò ãåíåðèðîâàòü äðóãèå ñîáûòèÿ è 
óñòàíàâëèâàòü äðóãèå îáðàáîò÷èêè.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
- íå èçìåíèòñÿ
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
- íå èçìåíèòñÿ 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
- íå èçìåíèòñÿ 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë îòâåò èç ÁÄ
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
- íå èçìåíèòñÿ 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë îòâåò èç ÁÄ 
I Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
- íå èçìåíèòñÿ 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë îòâåò èç ÁÄ 
I Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì. 
- íå èçìåíèòñÿ
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
- íå èçìåíèòñÿ 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë îòâåò èç ÁÄ 
I Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì. 
- íå èçìåíèòñÿ 
I Îæèäàíèå îòïðàâêè äàííûõ êëèåíòó.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïåðåñòðîèì íàø ñåðâåð 
I Îæèäàíèå çàïðîñà îò ïîëüçîâàòåëÿ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë çàïðîñ îò ïîëüçîâàòåëÿ 
I Ïàðñèíã çàïðîñà, âàëèäàöèÿ. 
- íå èçìåíèòñÿ 
I Ôîðìèðîâàíèå çàïðîñà (çàïðîñîâ) â ÁÄ. 
- íå èçìåíèòñÿ 
I Îæèäàíèå îòâåòà (îòâåòîâ) èç ÁÄ. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ ïðèøåë îòâåò èç ÁÄ 
I Ñîåäèíåíèå äàííûõ èç ÁÄ ñ øàáëîíîì. 
- íå èçìåíèòñÿ 
I Îæèäàíèå îòïðàâêè äàííûõ êëèåíòó. 
- çàìåíèòñÿ îáðàáîò÷èêîì ñîáûòèÿ äàííûå ïîëüçîâàòåëþ îòïðàâëåíû
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èòîãî
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èòîãî 
I Ïðîèçâîäèòåëüíîñòü îäíîãî ñåðâåðà âûðîñëà â 10 ðàç
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èòîãî 
I Ïðîèçâîäèòåëüíîñòü îäíîãî ñåðâåðà âûðîñëà â 10 ðàç 
I Îäíîãî CPU/êîííåêòà ê ÁÄ äîñòàòî÷íî äëÿ åùå íåñêîëüêèõ ëåò ðîñòà 
íàãðóçêè.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èòîãî 
I Ïðîèçâîäèòåëüíîñòü îäíîãî ñåðâåðà âûðîñëà â 10 ðàç 
I Îäíîãî CPU/êîííåêòà ê ÁÄ äîñòàòî÷íî äëÿ åùå íåñêîëüêèõ ëåò ðîñòà 
íàãðóçêè. 
I Íî ñëèøêîì ìíîãî ïåðåäåëîê!
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
×òî çàòðîíóòî èçìåíåíèÿìè
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
×òî çàòðîíóòî èçìåíåíèÿìè 
I Èíòåðôåéñ ñ âåáñåðâåðîì (ïîëó÷åíèå ïàðàìåòðîâ çàïðîñà èòï)
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
×òî çàòðîíóòî èçìåíåíèÿìè 
I Èíòåðôåéñ ñ âåáñåðâåðîì (ïîëó÷åíèå ïàðàìåòðîâ çàïðîñà èòï) 
- íåêðèòè÷íî.  êðàéíåì ñëó÷àå îáõîäèòñÿ íàïèñàíèåì âðàïïåðîâ.  
áîëüøèíñòâå ñëó÷àåâ âîîáùå íåçàìåòíî.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
×òî çàòðîíóòî èçìåíåíèÿìè 
I Èíòåðôåéñ ñ âåáñåðâåðîì (ïîëó÷åíèå ïàðàìåòðîâ çàïðîñà èòï) 
- íåêðèòè÷íî.  êðàéíåì ñëó÷àå îáõîäèòñÿ íàïèñàíèåì âðàïïåðîâ.  
áîëüøèíñòâå ñëó÷àåâ âîîáùå íåçàìåòíî. 
I Èíòåðôåéñ ñ ÁÄ.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
×òî çàòðîíóòî èçìåíåíèÿìè 
I Èíòåðôåéñ ñ âåáñåðâåðîì (ïîëó÷åíèå ïàðàìåòðîâ çàïðîñà èòï) 
- íåêðèòè÷íî.  êðàéíåì ñëó÷àå îáõîäèòñÿ íàïèñàíèåì âðàïïåðîâ.  
áîëüøèíñòâå ñëó÷àåâ âîîáùå íåçàìåòíî. 
I Èíòåðôåéñ ñ ÁÄ. 
- êðèòè÷íî. Ìíîãî êîäà áèçíåñëîãèêè ïîåõàëî â callbacks. Ñëîæíóþ 
ëîãèêó ïðàêòè÷åñêè íåâîçìîæíî ðåàëèçîâàòü. Òðåáóåòñÿ ïåðåïèñûâàíèå 
90% ïðîåêòà.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïëàíèðîâùèê 
Ïîñêîëüêó ïëàíèðîâùèê OS - î÷åíü òÿæåëûé, íåîáõîäèì ïëàíèðîâùèê 
userspace.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïëàíèðîâùèê 
Ïîñêîëüêó ïëàíèðîâùèê OS - î÷åíü òÿæåëûé, íåîáõîäèì ïëàíèðîâùèê 
userspace. 
I Íåâûòåñíÿþùàÿ ìíîãîçàäà÷íîñòü
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïëàíèðîâùèê 
Ïîñêîëüêó ïëàíèðîâùèê OS - î÷åíü òÿæåëûé, íåîáõîäèì ïëàíèðîâùèê 
userspace. 
I Íåâûòåñíÿþùàÿ ìíîãîçàäà÷íîñòü 
I Ïðîñòîå ïîðîæäåíèå “ïðîöåññîâ”
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïëàíèðîâùèê 
Ïîñêîëüêó ïëàíèðîâùèê OS - î÷åíü òÿæåëûé, íåîáõîäèì ïëàíèðîâùèê 
userspace. 
I Íåâûòåñíÿþùàÿ ìíîãîçàäà÷íîñòü 
I Ïðîñòîå ïîðîæäåíèå “ïðîöåññîâ” 
I Ïðîñòîå óïðàâëåíèå
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïëàíèðîâùèê 
Ïîñêîëüêó ïëàíèðîâùèê OS - î÷åíü òÿæåëûé, íåîáõîäèì ïëàíèðîâùèê 
userspace. 
I Íåâûòåñíÿþùàÿ ìíîãîçàäà÷íîñòü 
I Ïðîñòîå ïîðîæäåíèå “ïðîöåññîâ” 
I Ïðîñòîå óïðàâëåíèå 
Òðè îñíîâíûõ ìåòîäà
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïëàíèðîâùèê 
Ïîñêîëüêó ïëàíèðîâùèê OS - î÷åíü òÿæåëûé, íåîáõîäèì ïëàíèðîâùèê 
userspace. 
I Íåâûòåñíÿþùàÿ ìíîãîçàäà÷íîñòü 
I Ïðîñòîå ïîðîæäåíèå “ïðîöåññîâ” 
I Ïðîñòîå óïðàâëåíèå 
Òðè îñíîâíûõ ìåòîäà 
I Ñîçäàòü ïðîöåññ (create, async)
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïëàíèðîâùèê 
Ïîñêîëüêó ïëàíèðîâùèê OS - î÷åíü òÿæåëûé, íåîáõîäèì ïëàíèðîâùèê 
userspace. 
I Íåâûòåñíÿþùàÿ ìíîãîçàäà÷íîñòü 
I Ïðîñòîå ïîðîæäåíèå “ïðîöåññîâ” 
I Ïðîñòîå óïðàâëåíèå 
Òðè îñíîâíûõ ìåòîäà 
I Ñîçäàòü ïðîöåññ (create, async) 
I Ïåðåäàòü óïðàâëåíèå ïëàíèðîâùèêó (yield, cede)
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Ïëàíèðîâùèê 
Ïîñêîëüêó ïëàíèðîâùèê OS - î÷åíü òÿæåëûé, íåîáõîäèì ïëàíèðîâùèê 
userspace. 
I Íåâûòåñíÿþùàÿ ìíîãîçàäà÷íîñòü 
I Ïðîñòîå ïîðîæäåíèå “ïðîöåññîâ” 
I Ïðîñòîå óïðàâëåíèå 
Òðè îñíîâíûõ ìåòîäà 
I Ñîçäàòü ïðîöåññ (create, async) 
I Ïåðåäàòü óïðàâëåíèå ïëàíèðîâùèêó (yield, cede) 
I Ðàçáóäèòü âûáðàííûé ïðîöåññ (wakeup, ready)
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èíòåãðèðóåì ñ ìàøèíîé ñîáûòèé 
Ñòðóêòóðà êîäà òåïåðü âûãëÿäèò òàê:
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èíòåãðèðóåì ñ ìàøèíîé ñîáûòèé 
Ñòðóêòóðà êîäà òåïåðü âûãëÿäèò òàê: 
I Ðåãèñòðàöèÿ ñîáûòèÿ â ìàøèíå ñîáûòèé
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èíòåãðèðóåì ñ ìàøèíîé ñîáûòèé 
Ñòðóêòóðà êîäà òåïåðü âûãëÿäèò òàê: 
I Ðåãèñòðàöèÿ ñîáûòèÿ â ìàøèíå ñîáûòèé 
I Ïåðåäà÷à óïðàâëåíèÿ ïëàíèðîâùèêó
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èíòåãðèðóåì ñ ìàøèíîé ñîáûòèé 
Ñòðóêòóðà êîäà òåïåðü âûãëÿäèò òàê: 
I Ðåãèñòðàöèÿ ñîáûòèÿ â ìàøèíå ñîáûòèé 
I Ïåðåäà÷à óïðàâëåíèÿ ïëàíèðîâùèêó 
I Ñîáûòèå áóäèò òåêóùèé ïðîöåññ (ôàéáåð)
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èíòåãðèðóåì ñ ìàøèíîé ñîáûòèé 
Ñòðóêòóðà êîäà òåïåðü âûãëÿäèò òàê: 
I Ðåãèñòðàöèÿ ñîáûòèÿ â ìàøèíå ñîáûòèé 
I Ïåðåäà÷à óïðàâëåíèÿ ïëàíèðîâùèêó 
I Ñîáûòèå áóäèò òåêóùèé ïðîöåññ (ôàéáåð) 
I Ïðîãðàììà ïðîäîëæàåò ðàáîòó ñ äàííûìè îò ñîáûòèÿ
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Èíòåãðèðóåì ñ ìàøèíîé ñîáûòèé 
Ñòðóêòóðà êîäà òåïåðü âûãëÿäèò òàê: 
I Ðåãèñòðàöèÿ ñîáûòèÿ â ìàøèíå ñîáûòèé 
I Ïåðåäà÷à óïðàâëåíèÿ ïëàíèðîâùèêó 
I Ñîáûòèå áóäèò òåêóùèé ïðîöåññ (ôàéáåð) 
I Ïðîãðàììà ïðîäîëæàåò ðàáîòó ñ äàííûìè îò ñîáûòèÿ 
Èòîãî 
Âåðíóëèñü ê (ïî÷òè) òðàäèöèîííîìó âèäó ïðîãðàììû.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé 
I Äîáàâëÿåì áèáëèîòåêó fibers
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé 
I Äîáàâëÿåì áèáëèîòåêó fibers 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ âåáñåðâåðîì
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé 
I Äîáàâëÿåì áèáëèîòåêó fibers 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ âåáñåðâåðîì 
- íåêðèòè÷íî, ðåøàåòñÿ âðàïïåðîì.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé 
I Äîáàâëÿåì áèáëèîòåêó fibers 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ âåáñåðâåðîì 
- íåêðèòè÷íî, ðåøàåòñÿ âðàïïåðîì. 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ ÁÄ
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé 
I Äîáàâëÿåì áèáëèîòåêó fibers 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ âåáñåðâåðîì 
- íåêðèòè÷íî, ðåøàåòñÿ âðàïïåðîì. 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ ÁÄ 
- îòíîñèòåëüíî òðóäîåìêî, íî ðåøàåòñÿ âðàïïåðîì.
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé 
I Äîáàâëÿåì áèáëèîòåêó fibers 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ âåáñåðâåðîì 
- íåêðèòè÷íî, ðåøàåòñÿ âðàïïåðîì. 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ ÁÄ 
- îòíîñèòåëüíî òðóäîåìêî, íî ðåøàåòñÿ âðàïïåðîì. 
I Ïåðåïèñûâàåì äðóãèå ñåòåâûå îáðàùåíèÿ (åñëè åñòü)
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé 
I Äîáàâëÿåì áèáëèîòåêó fibers 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ âåáñåðâåðîì 
- íåêðèòè÷íî, ðåøàåòñÿ âðàïïåðîì. 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ ÁÄ 
- îòíîñèòåëüíî òðóäîåìêî, íî ðåøàåòñÿ âðàïïåðîì. 
I Ïåðåïèñûâàåì äðóãèå ñåòåâûå îáðàùåíèÿ (åñëè åñòü) 
- âðàïïåðû
Ñîáûòèéíî-îðèåíòèðîâàííîå ïðîãðàììèðîâàíèå 
Âåðíåìñÿ ê íàøåìó ñåðâåðó 
I Äîáàâëÿåì ìàøèíó ñîáûòèé 
I Äîáàâëÿåì áèáëèîòåêó fibers 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ âåáñåðâåðîì 
- íåêðèòè÷íî, ðåøàåòñÿ âðàïïåðîì. 
I Ïåðåïèñûâàåì èíòåðôåéñ ñ ÁÄ 
- îòíîñèòåëüíî òðóäîåìêî, íî ðåøàåòñÿ âðàïïåðîì. 
I Ïåðåïèñûâàåì äðóãèå ñåòåâûå îáðàùåíèÿ (åñëè åñòü) 
- âðàïïåðû 
I Èòîãî: ïåðåïèñûâàåì îêîëî 5% êîäà.
Áèáëèîòåêè è ÿçûêè
Áèáëèîòåêè è ÿçûêè 
I Perl
Áèáëèîòåêè è ÿçûêè 
I Perl 
Coro + AnyEvent
Áèáëèîòåêè è ÿçûêè 
I Perl 
Coro + AnyEvent 
I Python
Áèáëèîòåêè è ÿçûêè 
I Perl 
Coro + AnyEvent 
I Python 
fibers + twisted
Áèáëèîòåêè è ÿçûêè 
I Perl 
Coro + AnyEvent 
I Python 
fibers + twisted 
I PHP5
Áèáëèîòåêè è ÿçûêè 
I Perl 
Coro + AnyEvent 
I Python 
fibers + twisted 
I PHP5 
ïîÿâèëñÿ îïåðàòîð yield, fiber
×òî äàëüøå?
×òî äàëüøå? 
I Èñïîëüçóåì fiber’û/event-ìàøèíû â òîì ÿçûêå ê êîòîðîìó ïðèâûêëè
×òî äàëüøå? 
I Èñïîëüçóåì fiber’û/event-ìàøèíû â òîì ÿçûêå ê êîòîðîìó ïðèâûêëè 
I Ðàññìàòðèâàåì ñóùåñòâóþùèå âàðèàíòû
×òî äàëüøå? 
I Èñïîëüçóåì fiber’û/event-ìàøèíû â òîì ÿçûêå ê êîòîðîìó ïðèâûêëè 
I Ðàññìàòðèâàåì ñóùåñòâóþùèå âàðèàíòû 
I Node.JS
×òî äàëüøå? 
I Èñïîëüçóåì fiber’û/event-ìàøèíû â òîì ÿçûêå ê êîòîðîìó ïðèâûêëè 
I Ðàññìàòðèâàåì ñóùåñòâóþùèå âàðèàíòû 
I Node.JS 
- îòêàçàëèñü îò ïàðàäèãìû fibers
×òî äàëüøå? 
I Èñïîëüçóåì fiber’û/event-ìàøèíû â òîì ÿçûêå ê êîòîðîìó ïðèâûêëè 
I Ðàññìàòðèâàåì ñóùåñòâóþùèå âàðèàíòû 
I Node.JS 
- îòêàçàëèñü îò ïàðàäèãìû fibers 
I Tarantool...
Tarantool
Tarantool 
I Ïîëíîöåííûé app-ñåðâåð
Tarantool 
I Ïîëíîöåííûé app-ñåðâåð 
I ÁÄ íà áîðòó
Tarantool 
I Ïîëíîöåííûé app-ñåðâåð 
I ÁÄ íà áîðòó 
- in-memory
Tarantool 
I Ïîëíîöåííûé app-ñåðâåð 
I ÁÄ íà áîðòó 
- in-memory 
- disk
Tarantool 
I Ïîëíîöåííûé app-ñåðâåð 
I ÁÄ íà áîðòó 
- in-memory 
- disk 
I Ñîêåòû, äèñê, http-ñåðâåð, î÷åðåäè
Íåäîñòàòêè
Íåäîñòàòêè 
I Äëÿ áîëüøèõ ïðîåêòîâ îäíîãî CPU âñå-òàêè ìàëîâàòî
Íåäîñòàòêè 
I Äëÿ áîëüøèõ ïðîåêòîâ îäíîãî CPU âñå-òàêè ìàëîâàòî 
I Ðåàëèçàöèè fiber’îâ äëÿ òðàäèöèîííûõ ßÏ ïëîõî ìàñøòàáèðóþòñÿ ïî 
CPU/õîñòàì.
Ïåðñïåêòèâà
Ïåðñïåêòèâà 
I Erlang
Ïåðñïåêòèâà 
I Erlang 
- õîðîøåå ìàñøòàáèðîâàíèå ïî CPU è õîñòàì
Ïåðñïåêòèâà 
I Erlang 
- õîðîøåå ìàñøòàáèðîâàíèå ïî CPU è õîñòàì 
- î÷åíü êà÷åñòâåííîå ðåøåíèå
Ïåðñïåêòèâà 
I Erlang 
- õîðîøåå ìàñøòàáèðîâàíèå ïî CPU è õîñòàì 
- î÷åíü êà÷åñòâåííîå ðåøåíèå 
- âûñîêèé ïîðîã âõîæäåíèÿ
Ïåðñïåêòèâà 
I Erlang 
- õîðîøåå ìàñøòàáèðîâàíèå ïî CPU è õîñòàì 
- î÷åíü êà÷åñòâåííîå ðåøåíèå 
- âûñîêèé ïîðîã âõîæäåíèÿ 
I Go
Ïåðñïåêòèâà 
I Erlang 
- õîðîøåå ìàñøòàáèðîâàíèå ïî CPU è õîñòàì 
- î÷åíü êà÷åñòâåííîå ðåøåíèå 
- âûñîêèé ïîðîã âõîæäåíèÿ 
I Go 
- áîëåå íèçêèé ïîðîã âõîæäåíèÿ
Highload для начинающих, Дмитрий Обухов (Mail.ru)

More Related Content

What's hot

газета Нива № 83 от 15.12.2016
газета Нива № 83 от 15.12.2016газета Нива № 83 от 15.12.2016
газета Нива № 83 от 15.12.2016SevenOrchids
 
βιολογία β
βιολογία ββιολογία β
βιολογία βmarinosk
 
http://vnx.su/ skoda octavia a5 swing car radio руководство по эксплуатации
http://vnx.su/ skoda octavia a5 swing car radio руководство по эксплуатацииhttp://vnx.su/ skoda octavia a5 swing car radio руководство по эксплуатации
http://vnx.su/ skoda octavia a5 swing car radio руководство по эксплуатацииskodaruk
 
موتي ميڙيا مون فقير اصغر سيتائي
موتي ميڙيا مون   فقير اصغر سيتائيموتي ميڙيا مون   فقير اصغر سيتائي
موتي ميڙيا مون فقير اصغر سيتائيKhiyal Khatri
 
My faith ايمانى القس الياس مقار
My faith ايمانى  القس الياس مقارMy faith ايمانى  القس الياس مقار
My faith ايمانى القس الياس مقارIbrahimia Church Ftriends
 
Марийский мир - Марий Сандалык, №4, 2014г.
Марийский мир - Марий Сандалык, №4, 2014г.Марийский мир - Марий Сандалык, №4, 2014г.
Марийский мир - Марий Сандалык, №4, 2014г.Эльвира Куклина
 
Kape Te Sotmen, E Nesermja Nuk Eshte E Jotja
Kape Te Sotmen, E Nesermja Nuk Eshte E JotjaKape Te Sotmen, E Nesermja Nuk Eshte E Jotja
Kape Te Sotmen, E Nesermja Nuk Eshte E JotjaLazi Salihi
 
Anderson, poul william ziua reintoarcerii lor
Anderson, poul william   ziua reintoarcerii lorAnderson, poul william   ziua reintoarcerii lor
Anderson, poul william ziua reintoarcerii lorliviuciubara
 
http://vnx.su/ skoda octavia a5 blues car radio Руководство по эксплуатации
http://vnx.su/ skoda octavia a5  blues car radio Руководство по эксплуатацииhttp://vnx.su/ skoda octavia a5  blues car radio Руководство по эксплуатации
http://vnx.su/ skoda octavia a5 blues car radio Руководство по эксплуатацииskodaruk
 
Гидротаран Марухина_Введение
Гидротаран Марухина_ВведениеГидротаран Марухина_Введение
Гидротаран Марухина_ВведениеVõ Hồng Quý
 
Жерӓ №34
Жерӓ №34Жерӓ №34
Жерӓ №34kidsher
 
Марий сандалык - Марийский мир №25
Марий сандалык - Марийский мир №25Марий сандалык - Марийский мир №25
Марий сандалык - Марийский мир №25Эльвира Куклина
 
ຕຳລາຄະນິດສາດຊັ້ນ ມ5
ຕຳລາຄະນິດສາດຊັ້ນ ມ5ຕຳລາຄະນິດສາດຊັ້ນ ມ5
ຕຳລາຄະນິດສາດຊັ້ນ ມ5Buangeune Singsoumang
 

What's hot (20)

Lab13 memory2
Lab13 memory2Lab13 memory2
Lab13 memory2
 
газета Нива № 83 от 15.12.2016
газета Нива № 83 от 15.12.2016газета Нива № 83 от 15.12.2016
газета Нива № 83 от 15.12.2016
 
βιολογία β
βιολογία ββιολογία β
βιολογία β
 
http://vnx.su/ skoda octavia a5 swing car radio руководство по эксплуатации
http://vnx.su/ skoda octavia a5 swing car radio руководство по эксплуатацииhttp://vnx.su/ skoda octavia a5 swing car radio руководство по эксплуатации
http://vnx.su/ skoda octavia a5 swing car radio руководство по эксплуатации
 
Amin uzuulelt new
Amin uzuulelt newAmin uzuulelt new
Amin uzuulelt new
 
موتي ميڙيا مون فقير اصغر سيتائي
موتي ميڙيا مون   فقير اصغر سيتائيموتي ميڙيا مون   فقير اصغر سيتائي
موتي ميڙيا مون فقير اصغر سيتائي
 
My faith ايمانى القس الياس مقار
My faith ايمانى  القس الياس مقارMy faith ايمانى  القس الياس مقار
My faith ايمانى القس الياس مقار
 
Марийский мир - Марий Сандалык, №4, 2014г.
Марийский мир - Марий Сандалык, №4, 2014г.Марийский мир - Марий Сандалык, №4, 2014г.
Марийский мир - Марий Сандалык, №4, 2014г.
 
шп №01+1
шп №01+1 шп №01+1
шп №01+1
 
Kape Te Sotmen, E Nesermja Nuk Eshte E Jotja
Kape Te Sotmen, E Nesermja Nuk Eshte E JotjaKape Te Sotmen, E Nesermja Nuk Eshte E Jotja
Kape Te Sotmen, E Nesermja Nuk Eshte E Jotja
 
Ms24
Ms24Ms24
Ms24
 
Ms23 obl
Ms23 oblMs23 obl
Ms23 obl
 
Anderson, poul william ziua reintoarcerii lor
Anderson, poul william   ziua reintoarcerii lorAnderson, poul william   ziua reintoarcerii lor
Anderson, poul william ziua reintoarcerii lor
 
Ms24 obl
Ms24 oblMs24 obl
Ms24 obl
 
http://vnx.su/ skoda octavia a5 blues car radio Руководство по эксплуатации
http://vnx.su/ skoda octavia a5  blues car radio Руководство по эксплуатацииhttp://vnx.su/ skoda octavia a5  blues car radio Руководство по эксплуатации
http://vnx.su/ skoda octavia a5 blues car radio Руководство по эксплуатации
 
Гидротаран Марухина_Введение
Гидротаран Марухина_ВведениеГидротаран Марухина_Введение
Гидротаран Марухина_Введение
 
Ms22 obl
Ms22 oblMs22 obl
Ms22 obl
 
Жерӓ №34
Жерӓ №34Жерӓ №34
Жерӓ №34
 
Марий сандалык - Марийский мир №25
Марий сандалык - Марийский мир №25Марий сандалык - Марийский мир №25
Марий сандалык - Марийский мир №25
 
ຕຳລາຄະນິດສາດຊັ້ນ ມ5
ຕຳລາຄະນິດສາດຊັ້ນ ມ5ຕຳລາຄະນິດສາດຊັ້ນ ມ5
ຕຳລາຄະນິດສາດຊັ້ນ ມ5
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Highload для начинающих, Дмитрий Обухов (Mail.ru)