ᨠVKontakte á ááŁá á áłáŞá á ááŞáá˛áŤ áá áá ᣠáĽáą á¨á°ááá¨á á ááŹá áŤáą ááᢠááá á°á á áľááľá á¨ááŤáááľ áááľááᢠá HighLoad++ Pavel áá áľááá á¨áŁá˘áŤá ááľáŁá áááŽá˝áŁ á ááá´áá¸á áĽá ááá
á
á ááᲠá áŠááŞá˝ (
á¨á áŤáľ á ááłáľ á áá á¨áááŁá áá á¨á°áŤáŤá áááá á áááľ áľáŤáá˝á áĽá°áŤ áá á.
- á ááľáá ááᣠá áá¨áá¸áľáŁ á ááľáŹáľáŁ áá˛áŤ áá°áŤá¨áľáĄ áŞá˛áŽáŁ á¨ááĽáł áľáááľáŁ áŚá˛áŽáŁ ááśáá˝áŁ á°ááśá˝á˘
- áá á¨á° áááľáŁ ááľá¨áᣠá¨ááᢠááľáľáᣠáááἠááľáłááťáá˝áŁ á¨ááá áá¸ááŤáá˝áŁ á˛á˛á¤áᣠá¨áŁáá¤áľááľ RPC ááŽáśáŽáá˘
- á¨áá á áááááśá˝ áá áá á°áľáĄ á¨áá ááłáááŤáá˝áŁ á¨á᪠áááá áá°áá°áᣠRSS áááĽá˘
- á¨áľáŤ áŁáá°á¨áŚá˝á á á°ááŤáŠ áĽáŤááá˝ áááłáľáŁ áááą áá°áááłáá áŽáľ ááá áááŁáľá áá áááá˘
á áá áá, á áŁá˘áŤá áĽá áááá˝ ááľáĽ áĽá áá á. áá áá á°ááᎠááŤáá áĽáááááá˘
á á ááá á ááá´áá¸á
ááá ááá áĽáá°á°ááá°á áĽáŤááá˝á á ááá á á áááá ááá áĄáľá ááááŤáá˘
á¨ááľ á áááá
á¨ááľ á áááá á HTTPSᣠRTMP áĽá WSS á áŠá áĽáŤááá˝á ááá ááá˘
á¤á˝á˛á˛áá¤áľ - áĽááá ááŁá˘áŤá áá áĽá á¨ááŁáá áľá áľáŞáśá˝ áĽáŤááá˝ vk.com áĽá m.vk.com áĽá ááá˝ á¨áĽá á¤áá á áŚáá´áá áĽá áá°á á áŤááá á°áá áá˝ á¨ááŁáá á°áá áὠᣠáááĽáá°áá˝ áá¸áᢠá ááŁá á á ááᢠá á.á¤á.á.á.-áľáŤáá áááĽáł áľáááśá˝ á á°áᨠá¨ááľ á ááááŽá˝ áĽá WSS- ááĽá¨áľ á¤áá á áááááśá˝á˘
á HTTPS áĽá WSS á á ááááŽá˝ áá áá áŤáá ááᢠá˛áááľ. á RTMP áľáááśá˝áŁ á á áᥠáá° á¨áŤáłá˝á áááľá ááá¨ááᢠáŞáááá áá á¨áŞáááą áá°á á áá ááᢠááľá á°áľ ááťáťá áĽááá á ááááŽá˝ á¨á°áááą á¨á áá á áľáŤáťáá˝á áŤáľá°áááá áĽá á áĄáľá ááá áá áŤá áľááá á á á ááą á áááá áá á˝áá áŤá á¨á°á áá áĽáŤááá˝ á áá áá. áá¤á˝á˛á˛áá¤áľ áĽá á°áĽááá¤áľá¤áľáŁ áĽááá á ááááŽá˝ á¨á˛áአáááľá á áŤáłá¸á áá áááá°áľ áľáŤááá áŤááłáľáá˘
áľá WSS áĽá RTMP á°á¨á᪠á ááááá ááá áá áľá áá°á á HTTPS áĽáŤááá˝ áĽáť ááᣠáá á á áĽáááá áá á¨áľá ááŽáááľ áá áľáááááá˘
á°áá
á¨ááľ á áľá°ááᣠáĽááá áá á¨áá á ááááŽá˝ á áᢠá¨ááľ á áááá á¨á°áá áá˝ á¨ááá áá¸áá áĽáŤááá˝ áŤááááá˘
áá kPHP á ááááŽá˝á¤á˝á˛á˛á á´áá á¨áá°áŤá áľáŁ á¤á˝á˛á˛áá¤áľ á áľááľá áľáá°ááł ááᢠkPHP á¨áá°áŤ á áááá ááᢠprefork áá´áá˝: á¨ááľá°á áá°áľ ááááŤáᣠáĽá á¨áá áá°áśá˝áŁ á¨ááłáἠáśáŹáśá˝á áŤáľá°áááá áĽá áĽáŤááŤá¸áá áŤáľá°áááłáᢠá áá áááł áá°áśá˝ á¨á°á ááá á áĽáŤááłááą áĽáŤá ááŤá¨á áĽáá°áá á ááááŠá ᣠáá á ááá áááłá¸áá áá° ááááŞáŤá á¨áᎠáĽá´áľ áááł áĽáá°áá áŤáľááአ- á¨áĽáŤá á áá ᣠáĽáá°áá á¨áááá ááá á˘
á¨áááľ áľáááľ
ááá á°ááááťá˝á áááááá áĽáŤá ááľá°áááľ á¨áá˝á áľáá áá˝áá˝ á áá°ááᢠáĽá áĽááą áá° á°ááŤáŠ áĄáľáá˝ á°á¨áááá: á á áááᣠááŁááᣠá¤áá áᣠáŞá˛áŽáŁ áľá´á áá... á á°áᨠá¨áá˝á áĄáľá áá áŤáá á˝áá áááá á áááŤáᢠá áŞá˛áŽ áá á˝áá á ááá áá áľ áá áááá á¨ááŤáłáἠá°á áá áľá á˝ááŽáš áĽááłá á áŤáá á. áĽáŤááá áááá á¨áľáá ááᣠá áá አáá á¨áľ á¨ááľ áááľ áŁáá nginx ááá°áá.
ááľáŞá áá°áĽá°áĽ áĽá áááŁá á
á áĽáŤááłááą áĄáľá ááľáĽ áá áŤá á ááŞáá˝ ááá¨á áĽáá°ááᣠááá¨áłáľ, áĽá á QPS áá á ááłáá. á¨áá áááŁáá˝ á¨á°ááŤáŠ áá¸áᣠá¨á°ááŤáŠ áĽáŤááá˝ á áá¸áᣠáĽáŤááłááą áĽáŤá QPSá áááľááľ á¨á°áᨠááľáĽáľáĽááľ á ááᢠááá áá áĽá á á á ááá á á áááአáá á¨áááľ á˝áá°-ááłáĽ áĽáá°áŤáá - á á˛áአáĽá á perf.
á áşáá˝ á¨ááá አáĽáá°áá áŤá á ááááŽá˝ á ááᢠáĽáŤááłááą á áŤáá á áááá áááá áŽááśá˝ áĽáá°áá áĽá á áá áááá ᨠkPHP áĄáľá áŤáŤááłá (ááááŤáąá kPHP áá á áá áá)á˘
á¨áááľ á áááá
CS ááá á¨áááľ á áááá áá¨ááť ááá˘. CS áááá˝á á¨ááŤá¨áá˝ áĽá áĽáá˛áá á¨á°á°áá áááá˝á áĽá ááá á¨áľá¨-áá˝ áááŁá á¨ááá°áĽááľá áááá á áááľ á¨ááᣠá¨á°ááłá°á áľáŤáá˝á á¨ááŤáľáŹáľ á áááá ááá˘
áááá˝á á¨ááŤá¨ááš á á áľá áşáá˝ á¨ááá አá áŤáá á ááááŽá˝ á ááᢠá°á áááá˝ áááá˝á ááľáá áááłáᣠáĽá áĽááąá áá¨áá¸áľ áĽá áááŤáľ áĽáááłááᢠá¨áĽááá á ááááŽá˝ ááŤá¨á á ááłááśáš á áአpu/pp á ááááŽá˝ á°ááá°ááá˘
pu/pp
á VK ááľáĽ á¨á ááłá¨ áá¨áĽ áľáá á¨á¨ááą, pu/pp á áá°áá.
pu/pp áááľá áá? á ááąá á°áá¨á á¨ááá á áá á¨ááááá á¨ááᣠáá° á°ááá á áááá ááá áááŤá áĽá áááá¨áľ áááľ á ááŤáŽá˝ á áᢠá ááĽáł á áŠá http://cs100500.userapi.com/path
ááá á ááŤá¨áá á áááá á áŠá - http://pu.vk.com/c100500/path
.
á á¨ááś á°áá áłáŞáŤá áľá ááᣠáĽá pp á¨ááś ááŽáᲠááá˘. áááľá á ááą á áááá ááśáá˝á áááľáá á˛áá ááá á°áá áááľáá ááᢠá áá ááśáá˝ áĽáť á ááŤáá, áá áľá á°á áĽá áááˇá.
áĽááá á ááááŽá˝ á¨á¤á˝á˛á˛áá¤áľ ááá áááá˝á áŤáááĄá¨ááááŁá áŞáŤáá áááľ á¨áá¨ááťá ááľáĽ áááľáááľ. áĽáá˛áá á¨á°á áá áááá˝ á áĽááá á ááááŽá˝ áá áľááá áŠáŁ á áĽááá áá˝áá˝ áá á¨á°á¨áḠááľáĽáŤáááľ áŤáá áá¨á á ááአá¨á°áťá ááááᢠáááłáᣠHTTPS ááľá ፠áááá˝á˘
áá˝ááš á ááá˝ áá˝ááťá˝á á¨á°áá áľááá âááâ ááŤá á áááá˝á ááá°áŁá¸á á áá˝áá ᣠáĽá "ááŤáŤ" ááľá áľ. á áá ááááľ á á áá áááł áá á¨á°áááĽá áĽá áá˝áášá á¨áá ááłá¨áť ááá á á ááľáľá á°áĽá°áá - á ááá áá° áĽáą ááááŁáľ ááá á áá á¨ááá˘
á á°áአá áááá˝ áá á¨áááá á˝ááł. á¨áľá á°áľ ááťáťá á ááá ᣠáááááĽáŠ á°ááłáłá áá á¨áá°áŤá - áĽá á áŤáá á ááááŽá˝ á ááľ á¨á°ááá° á áŤáá á áá á áá¸á ᣠáĽá á¨ááłá¸á áŤáá áááľáá áĽáŤááá á¨áľ áĽáá°ááá ááááŁáᢠáľá ááá˝ á ááŤáŽá˝ á áá áĽáááŤáá.
á áááá˘á ááĽáĽ á áá ááłá áá áá á°áá áá áŤááą áááááśá˝á áááá. ááĽá áá˝áá˝ á ááľ á áááľ á áá áŤá - á¨á°ááłáłá á áľá°ááá áá: pu.vk.com ááá pp.vk.com, á¨á°áá áá á áłá˝ áá ááľ á áľá°ááá á á ááľ áá á¨áááᥠáĽáŤááá˝ áá áá°áĽ á áá. áá á ááá áŚáł á á¤á˝á˛á˛á/2 ááᣠáá á¨á áá á áá á ááŁáĽááľ á¨ááá áĽáŹ á ááááá˘
á¨áááááĽáŠ ááá˝ áŞáłáŤ á¨ááľ ááá á áá áľ áááá áľáŤáá áŤááľáą, áá° áá¨ááťá á¨ááá°á, á áá á áááá á áŠá. áľáŤááá á áá˝á ááľáĽ áľáááááľáľáŁ á°ááłáłá áĽá áľ á áá áá á¨áŁáľ áľáŤááá áááłáᣠáŞá˛áŽá áá áááłáľ á áá˝ááᢠáĽá á ááĽáł áĽááľá°ááááá - áá°áᨠáá¨ááťáá˝ á á°áá ááŞá˛áŽ á¨á°áᨠááĽá°á áááááľá˘ ááá áŤá áááľá á ááŽáᲠá áŠá áĽááľá°áááááá˘
áĽáá áłááá á¨á°áťáťá á¨á°áŞ áľáŞáľ á ááá°ááᢠá áá á¨á°áŤáá˝ áĽáá´áľ áĽáá°áááŤáŠ áĽá ááá á áľááá áĽáá°áá áĽáááááłáá.
á¸áá
á á´áá´áá á 2017 áŚáŤáá áá°á á˛á áááá á¨ááá
pp áĽááľ á˝ááŽá˝ áá áŠáľá˘ á ááľ á áá á áĄáľá - áá¤áłá áŤááá áá¸ááŤ. áĽá á áŤáá á ááááŽá˝ á ááľ á¨á፠á áá á áľáŤáť áááŤáᣠáĽá áĽáŤáá áá° á¨áľáá á áááá áĽáá°áááľ ááááŁá á ááá ááááľ á¨ááᢠáľááá
, á¨á°ááŤáŠ á°á áááá˝ áá°ááłáłá ááá á¨ááĄ, á áĽááá
á ááááŽá˝ áá áá¸á፠áŤá, ááá á áĽáŤááłááą á áááá áá¸á፠ááľáĽ áŤá áá. áá
á áŁá áá¤áłá áŤááá áĽá
áľ áá, ááá áá ááá ááľá¨á á ááťáá.
á áá á ááááŤáľ - áááľá áá¨ááá á áá˝ááá˘ááá áĄáľá á¨á°áᨠá áááá ááá¨áĽ áľáááá˝á - á¨á፠á áá á áá¸áᢠáĽáá˛áá á á ááłááľ ááľáŁá ááááŤáśá˝ á ááᢠá áááá˝ ááľáĽ áĽáá°áá áŤá á ááááŽá˝á ááŤá á áá°áťáá. á á´ááľ áá°ááľá áá áĽáť áá.
á¨ááá áá, á¨áá፠áľáááąá ááá¨áá. á áá á ááᢠanycast Routing: á°áááá ááááá, anycast, áŤáľá áá¨ááἠá´áá. áĽáŤááłááą á áááá á¨áŤáą á¨áá á áá á áá ᣠáá á ááľ á¨á°ááá° áááľ áá¨áĽá˘ ááá ááá á¨áááá¨á á ááľ á áááá áŤáá°áłáŤ áľáŤáአá áááš á¨á ááľ áĄáľá á ááááŽá˝ áá áĽáá˛á°áŤá ááᢠá áá á ááľ á¨á°áá°á á áááá ááá¨áĽ ááťáá. á°á°ááá áá¸á፠á¨ááá˘, áĽá á áľá°áááááľ á áá°ááłá.
á¨ááĽá°áľ áľáá. á áá áĽáá° á áľáááááą á¨á°ááŤá¨ ááá áŤáá¸á áá˝áá˝á ááŤá áĽáá˝ááá, áĽá áĽáá˛áá, áááŤá á˝ááŽá˝ á˛á¨á°áą, á¨áá áŠáľá "ááá" ááĽá°áľá á ááá¨á á áĽááą áá áŤááá áááľ áááááľ, "áŤáá" áĽá áĽáá°áá ááľáŤáľ ááááŤá.
á áááľ ááłáá፠áááŤáľá˘. áľá áťáá˛áá á ááľ á áľáá áááᥠáĽá áá áááśá˝á áĽáá°ááłáá á¨á°ááŤáŠ á°á áááá˝ á á°ááłáłá âáááâ áá° á ááľ ááá áĽáá˛ááą á¨á፠áá¸á፠áĽáá˛ááŤá¸áá˘
á á áᥠ"Clover" áá°áá áŞáŤá ááá¨áá. áá á ááĽáł áľáááľ ááľáĽ áŤá á¨ááľáá áá áĽáŤá ááᣠá áľá°ááá áĽáŤááá˝á áá ááá áĽá á°á áááá˝ á á á˝á áľ áááľ á˛á°áĄ á ááŤáŽá˝á ááá¨áĄá˘ áá°áá áŞáŤá á°á áááá˝ áááŤá¨áľ á¨áá˝áá áľ ááááľ á ááᢠá á°ááłáłá áá á¨áľáááą áá áááááľ áá˝ááᢠᨠ100 áşá á áá á°áá˝. ááá áááá á°áłáłááá˝ á¨ááአáááááśá˝á áá˝áá, áĽá á ááłáŤ á¨áááááą áá á áĽáŽ áááŁá. á á ááľ "ááá" ááľáĽ 100 áşá á°áá˝ áá ááľ á ááłáŤ á˘áᥠá ááłááľ áá á¨á°áá á áá ááá¨áŁáá áááá.
áá°ááłáłá ááá á¨áááą áĽáŤááá˝á áááááᣠá ááá ááľáĽ áŁá ááá âáááâ áá áááá˝á á¨ááŤá°áŤá á¨áá áĽá áľ á¨ááá¨áá°á áá°áá°á á¨áááľ á áááľ ááá˘
ááá á¨ááľáĽ
á nginx áá á¨á°ááá˘áŚá˝ ááŽáá˛áŁ áá¸á፠á RAM ááá á ááŁá áŚáá´á/NVMe á˛áľáŽá˝ ááᢠáááłá: http://sun4-2.userapi.com/c100500/path
- á á áŤá°áá ááá ááľáĽ áá°áááá ᨠ"ááá" á ááá, ááá°áá á¨á áááá áĄáľá. á á áááá 100500 áá á á áŤá á°ááś áŤááá á¨áąáŤ ááá ááááá˘
áá¸ááŤ
á áĽá-áááť áĽá áłá˝á áá á ááľ á°á¨á᪠ááľááá ááááľ áĽáá¨ááŤáá - áá¸á፠á áŤáŁá˘á˘
á¨áá
á áłá˝ á¨á áááἠááľá áá á¨ááá áá¸ááŤáá˝á¨áĽááá
ááľáĽ 20 áŤá
á á áᢠáĽááá
áá¸ááŤáá˝ áĽá "ááá" á¨ááááŁá¸á áŚáłáá˝ áá¸á, áá
á áľáŤááá á áŤáłá¸á áá¸áἠáá˝áá.
áá á¨ááá˛áá˛áŤ áááľ áá¸á፠ááᤠááá á¨á°á áá ááἠáĽáá
á áá°ááá á - áááᣠáŞá˛áŽáŁ ááśáá˝ áĽáťá˘
á¨á°á áááá ááá áááá°á áĽá á áááá˝ á¨áłáá á¨BGP á ááłá¨ áá¨áĽ á áľá á áĽáŤáá˝á áĽáá°á áľáŁááá˘. ááľááľá á á°ááá¨á°áŁ á ááá á á áľá-á áĽáŤáá˝ ááááľ áŤááťáá á¨ááŚá áá áłáłá¤á áá°áá°á á ááĽáᢠáááá á á°á ááá á áá áĽáááľáááá˘. á áŽáą ááľáĽ á ááľ ááá á¨á፠á áá á¨á°á áááá áááá˝ áá¨áľ áĽáá˝ááá - áĽáą á ááŚááŤááŤá á áá áľ áŤáá áĽáááŤá ááĽáŚá˝á˘
áá á¨áá áŤá áĽáá´áľ áá?
á¨áááá˝á á°ááłá ááľ á ááá áĽáááĽáŤáá. á°á ááá á¨áááá áľ áĽá á¨ááá áá¸á፠áĽá á¨ááá áá፠á á - áá áá áĽááľ áĽáááľáłáá áĽá á áĽáŤááłááą ááá¨áľ á°á¨ááá áĽáá¨ááŤáá á˘
á á°ááłáłá áá á ááááľ - á áááá˝ ááľáĽ áŤá á áááááśá˝ - á¨áá áá° áá áá° á¤áá á áááŁá áĽá áĽáá˛á áá á: - âáĽá áĽáá°áá áŤá áĽá áĽáá°áá áŤá áá¸á፠áá ᣠá áĽá áá áá áŤááá áŠáľá á ááá ááľáĽ á áŁá á°ááłá á¨áá áááá˝á áááá áľá á ᢠâ á¤áá á á á°á¨á á¨á°á°á¨á°áŠ áĽá áááá˝á áŤáááŁáᣠáłáá áŤáááłá¸ááᣠáá° áááá˝ áááľáłá¸áá áĽá áááášá á¨á፠áŤá°ááłá¸ááᢠáá á pu/pp áĽá Sun ááŤá¨á áŤáá áá á¨áłá ááŠááľ á¨áá¸á፠ááľáĽ ááᥠááá áĽááłá áá ááá á áá¸ááŤá ááľáĽ áŁáááá áááá áá˛áŤáá á áŤáłá¸á á áŠá áá°áŁá áĽá áá¸ááŤá ááááŞáŤ áááá áá° áŤáą á áááś á¨á፠áááś ááľá áľ ááááŤáá˘
á áá áááł ááľáĽ áĽááááá áá°á áááá˝ á¨áá¨á áááľ áĽá á¨á ááłá¨ áá¨áĽ áááľ áááááľ. áááłá, á¨ááľáŽ áá¸á፠áĽáť ᨠ1 Tbit / s á áá á á¨áá°á á°ááľ áĽáá°áŤáŤáá.
áá á˝ááŽá˝ á á- áá¸á፠á ááááŽá˝ áá á áá°áá. ááá áłáá áááľ á ááłááľ áá áá°áᨠá áááá á á á ááłá¨ áá¨áĽ á¨ááᢠá¨á áá¸á፠á°áá¨áŽá˝ á¨40-50 Gbit/s áá¸áᣠáá áĽáá°áá á áááľ áťááá áá á áá á¨áááá áááľ á áᢠá ááá ááľáĽ á¨á ááľ á áá á¨áłáá áááá˝á áá¨ááť áá° áľáá ፠áĽá¨ááľá ááᢠá áááą áá¨á¨áť á°ááŁáŤá áĽáá°ááá°ááá á°áľá á á°ááááá˘
á á ááá á ááá´áá¸áá á°ááá¨áľáá˘
- áĽáŤááá˝á á¨ááá á á¨ááľ á ááááŽá˝á˘
- á¨áá áááá áá°áľ áá°áááá˘
- á áááľ ááááľ ááŽáá˛áá˝ á¨á°áá áá¨ááťáá˝á˘
- á¨ááá áá¸ááŤáá˝.
á¨áá áĽáá áá á¨áá°áá ááá á á? áĽááἠáá, ááἠá¨ááá¨áá˝áŁá¸á á¨ááἠááłáá˝.
á¨ááἠááłáá˝ ááá áá°áŽá˝
áĽá á¨ááá áŤá¸á á¨ááἠááł á áá°áá ᣠáá áá°áŽá˝ - áá°áŽá˝ ᣠááááŤáąá á á á ááá á°ááŁáááľ áŁáá ááአá¨ááἠááłáá˝ á¨áááá˘
áá
á áľááá áááŞáŤ áá. áá
á¨ááá áľ ááááŤáľ á 2008-2009, áŞáŹ á áłááááľ ááá áĽáľááľ á˛áá¨á, ááŽáááą áá á áá á MySQL áĽá Memcache áá á°ááˇá áĽá á˝ááŽá˝ áá áŠ. MySQL áááá˝á áá áá¸áľ áĽá áá áá¸áľ áááľ áá áᣠá¨á፠á áá á áŤááááᣠáĽá Memcache ááľ á ááľ á ááááá áĽáŤá˝áááá áĽáá°áá áááá áá á¨á áľá˘
á¨áá áá° áá áłááá ááŽáááľ áááĽá á¨ááŤá áá˝ áá áá¨ááť áĽá áá¸á፠áŤáá á˛áá áá á ááĽááľ ááááłáᢠá áĽáá°áá ááááľ áááłáá˝ ááľáĽ áĽáŤá°á á¨áááľ ááŽáááľ áááááľ á áľá¸á᪠áá. ááŽáááą á áŤáłá˝á áĽáľáááśá˝ áá áŤá°áŽá¨áŁá¸áá ááłá áááŽá˝ áĽáá°áá áááťá áááá¨á á°ááľáá.
áááľáá á¨á°áłáŤ áá áá˘. áá áá áááľá¨á áĽáľá áá á, áĽáá˛áá áĽá á á áŁá á áľááá áá, ááááŤáąá ááá˝ á¨ááľáá˘áŤ ááááśá˝ á ááŤá áá á ááá áŠá. áĽá á¨ááἠááłáá˝ á ááá áŠáᣠNoSQL áĽáľáŤáá á¨ááᣠMySQLᣠMemcacheᣠPostrgreSQL áĽáť áá አ- áĽá ፠ááá˘
áááá°áá á á áŤá. áááą á¨á°ááŤá á áĽá áĄáľá á¨C ááá˘áá˝ á˛áá ááá ááá áἠá áá ááአá°á¨ááááᢠáá°áŠ ááá ááá ááᣠááá á áááľ á°ááłáłá á¨ááá ááááľ á á˛áľá áá á¨á°ááᣠá°ááłáłá á¨ááľáááŞáŤ áá¤áśá˝áŁ á á°ááłáłá ááááľ á¨ááľá°áŤá¨á ááááśá˝ áĽá á áłááť áááłáá˝ áĽá á˝ááŽá˝ ááľáĽ á áááľ á°ááłáłá áŁá ᪠áá áŤá¸áᢠá áá°áŽá˝ áĽáľáᾠᣠá áľá°áłáłáŞáá˝ áľáááąá áĽáá˛á°áŠ ááš áá¸á - ááá ááááľ ááŤá á áŤááľ á¨áá ᣠáĽáá áĽáŤááłááąá á á˛áľ á¨áśáľá°á ááá á¨ááἠááł áĽáá´áľ áĽáá°áá°áŤ áĽáá°áá ááá á ááŁá¸á ᣠáá á á ááĽááľ áĽá áááľáŤáľ á áľá˝áá ᢠá ááá˝ áááł ááĽáŤá¸áá áá¨ááŠ.
á¨áá°á ááááśá˝
áĄáľá áĽááľ áá°áŽá˝á áťáᢠáĽááśáš áĽááááᥠáá°áᣠáááᣠááľáᣠipdbᣠá°áĽáłá¤áá˝áŁ ááááŽá˝áŁ áááἠááľáłááťáá˝áŁ memcachedᣠmeowdbᣠááᣠááľáľáŤáłááľáŁ ááśáŁ á áŤáá˝ ááááŽá˝áŁ pmemcachedᣠáá áŞáŤáŁ áááᣠáá¨ááťáŁ ááá°áśá˝áŁ á°ááŁáŽá˝áŁâŚ
á¨á°áᨠá¨ááἠááá á ááááá ááĽáŤááłááą á°ááŁá ááá á¨á°áááą áĽáŤááá˝áᣠá¨C áĄáľá á á˛áľ áá°á áá˝ááᢠááá á áááá.
á¨á°áᨠáá°á á ááᢠmemcached, áĽáąá á¨áá°á áá áá á°ááłáłá áá, ááá áá á¨áĽáŠ áááŽá˝ áľáĽáľáĽ áá, áĽá á¨áááááľ. ClickHouse á áá°ááᣠáá á°áá áá°áŤáᢠááĽáťá ááááᢠpmemcached áá á¨ááŤááἠmemcachedáĽáá°áá á ááááá áľ áá áá¨áá ááááŁáľ ᣠá á°á¨ááŞá á RAM ááľáĽ á¨áááŁá á áá áá¨áá á á˛áľá áá áá¨áá¸áľ áá˝ááᢠáááá°áĽ á°ááŁáŤáľ á¨á°ááŤáŠ áá°áŽá˝ á á-áá¨ááὠᣠááááŽá˝ ᣠáľáĽáľáŚá˝ - ááŽáááłá˝á á¨áááááá áá á˘
ááááá˝
á¨áŽáľ á áááᣠáá°áŽá˝á ááá á¨ááἠááłáá˝á áĽáá° áá°áśá˝áŁ á áŤááľ ááá á ááŁááá˝ áá°áĽ á áŤáľááááᢠáŽáą á á°áá á¨áĄáľáὠᣠá¨áá°áŽá˝ áá áá°áŤá - á á ááľ áááľá°á á ááľ ááááľ. á¨á°á¨áá áááľá°á á á áĽáá á - áá á¨áá˝á áľáĽáľáĽ ááá˘
áŽáą á áŤáá á áŤáŁá˘áᣠáá áá ááá á¨á ááááŽá˝á áĽááľ ááá á áŤáľáááááᢠá¨á°áá°á áá፠á áá áá áá° áááľá°á áááłáá˘
áá áĽáá˛á ፠á áŽáą áĽá á áá°áŽá˝ ááŤá¨á á¨ááá á ááľ á°á¨á᪠á áŤá áá¨á áŤáľáááááłá - á°áŞ.
ᨠRPC á°áŞ
á°áŞ áááá á ááśáĄáľ, áá á áá á¨áá áá°á ááá áŁá˘áŤ áá°áŤá. á á°ááłáłá áá á áá ááá á¨á áááááľ áááľ á¨áá - á ááľáŠáŁ á¨áááá áľáĽáľáŚá˝ áĽá á¨áá áááľá°á áááá áľáĽááŁáŞáá˝ ááá á¨ááŤáá ááá ááŽáᲠáá á á áᢠá áľá°áłáłáŞáá˝ á¨ááŤá°áááľ áá áá ááá˘
ááŽááŤááŽá˝ áá áŤá áᣠá¨áľ áĽá áá áĽáá°ááŤáľá¨áá ááľ á¨áá¸áá - áá° áááľá°á áĽáť áááłáᢠáá áĽá áŤáľá˝ááá. áĽáŤáá á ááá áá áľ áá á°áŞá áĽáŤááá áŤááŤá, á¨áľ áĽáá°áá ááá - áĽáą áŤáą áááľáá.
á áá
áááł ááŽáᲠá¨á áááááľ áĽáá˝áľ á¨áá¨áá¨áŤ ááĽáĽ ááᢠá ááłááľ áá°áŽá˝ á¨áááá ááá á¨á°á ááš á°áŞá áá
áá á°á¨áľáś áá°áá áá áá ááá˝ áá°áŁáᢠáá
á¨áá ááĽááŤáá áĽáá˛áŤáľáááą ááá
áľáááłá - áŽáą áá°áŠ ááá˝ áĽáľáŞá°áĽ áľá¨áľ á áá áĽá
á, ááá áá áĽá¨á°áŤ áĽááłááá áĽá á áá ááááľ á¨á°áᨠáŁá
᪠ááłá¨áľ áĽááłáá áľ áááááŁá. á¨áá¨á ááśáš áá áá á¨ááá°áŠ áľááá áŽáą áááááľ á áá áľá˘
á¨á°áá°á áľáá áŤáá˝
á ááłááľ áá á ááá áĽáá° áá°á áá°á á áŤááá áááľá á ááłááľ ááááľ áĽáá˛áá¨á áĽááááááᢠá á°ááłáłá áá, á¨áĽáá ááá-á°áŤá˝ rpc-proxy, á á°áá ááá°áááťá˝á á¨á°áá á¨áá, ááá áá ááĽáŤá á¨á°áᨠááŽáᲠáááĽáŤáľ á°ááľáá.
á MySQL ᣠá ááá áĽáá áĽá áĽá፠á áá ᣠdb-proxy áĽáá áááá ᣠáĽá á ClickHouse - áŞá°á áááľ.
á á á ááá áĽáá°áá áá°áŤá. á¨á°áá°á á áááá á áᣠkPHPᣠGoᣠPython áá°áŤá - á á á áááᣠá¨áĽáá RPC ááŽáśáŽá áá áá á¨áá˝á ááááá áŽáľá˘ áŽáą á á áŤáŁá˘á á¨áá°áŤá á RPC ááŽáᲠáá áá - áĽáŤááłááą áŽáą á¨áááá áľ á áááá á¨áŤáąá á áŤáŁá˘áŤá ááŽáᲠáá°áŤáᢠá á°á á¨á ááᣠá°áŞá á¨áľ áááľ áĽááłáá áľ áá¨áłáá˘
á ááľ áá°á áá° áá áááľ á¨ááá, áá¨á¤áľ á˘ááá, á ááŽáᲠá áŠá áŤááá, ááááŤáąá áá¨á¤áą á áá á¨áá¨á ááĽá¨á ááľáĽ ááá áá˝áá. áá°áŠ á¨áŤáą áá áááááá áŚáł á ááá
áá áá°ááá á¨áá áľá - áá
á¨áĽá áá°á á áááľá áá. áá á áĽááἠáአáááłáá˝ á á :)
ááá áá°áŽá˝ á¨áá°áŠá ᾠᨠTL-scheme ááłáá˘
memcache.not_found = memcache.Value;
memcache.strvalue value:string flags:int = memcache.Value;
memcache.addOrIncr key:string flags:int delay:int value:long = memcache.Value;
tasks.task
fields_mask:#
flags:int
tag:%(Vector int)
data:string
id:fields_mask.0?long
retries:fields_mask.1?int
scheduled_time:fields_mask.2?int
deadline:fields_mask.3?int
= tasks.Task;
tasks.addTask type_name:string queue_id:%(Vector int) task:%tasks.Task = Long;
áá áááľáŽá˝ ááŽáśáŽá áá, á áŁá á áἠá¨ááá á ááá áá ááŽáśáĄá. áááááĽáŠ á¨á ááŤá ááľáŽá˝á ᣠááľáĽáľáĽ ááááśá˝á - á áĽáŽááἠáľáŤááŽá˝á áĽá áá ááá˝á áááááᢠááá ááá á áá ááŽáśáŽá áá°á¨áľ áá°áŤá.
RPC á á˛á¤á áá á TCP/UDP⌠UDP?
á á˛á¤á áĽá áľ áá á¨áá°áŠ á¨áá°á áĽáŤááá˝á áááľáá¸á ᨠRPC ááŽáśáŽá á ááᢠáá ááá á¨áá°áŤá á TCP/UDP áááááľ ááᢠTCP ááá¨áłáľ á¨ááťá áá, áá ááá UDP áĽá áá áŤáľááááá?
áŠá˛á áá¨áłá á á ááááŽá˝ ááŤá¨á á¨áá°á ááĽá áŤáá¸áá áááááśá˝ á˝áá áŤáľáááą. áĽáŤááłááą á áááá ᨠRPC ááŽáᲠáŤáá áĽá á á á ááá áá° ááááá áá°á áááľ áá˝ááᣠá¨á፠á á ááľ á áááá á á áľá áşáá˝ á¨ááá አᨠTCP áááááśá˝ á áᢠá¸áá á á, áá á¨ááą áá. á UDP áááł áá á˝áá á¨áá.
ááá á°á°ááá TCP á¨áĽá áá¨áŁá ἠá¨ááá˘. áá á¨á°ááá° á˝áá ááᥠá á˛áľ áá°á ááá á á˛áľ á áááá á˛ááá áĽá ᨠTCP áááááśá˝ á á ááľ áá ááá°á¨áłáᢠáá ááľá°á ááá ááĽá°áľ áĽáŤááá˝áŁ áááłáᣠUDP áááŤáŁ á áŽáą áĽá á áá°áŠ ááŤá¨á áŤáá áááááľ áá ááᢠááᾠᨠUDP ááŹáśá˝; á ááą á á ááľ á á áŁáŤáŁ ááá°áá á áááá áá ááŤáᢠá ááľ áá áá - áĽá áŽáľ áłáá¨á ἠá¨á¤ááá ááá˝ á áááˇá.
á á, ááá áĽáť áá°áŤá á áŁá áľáá˝ á áá á¨ááŹáľ áŞáłáŤ. ááŽáśáŽá ááľáá ááľá°ááá áĽá áá ááĽááŤáá˝ áľáá á áá, ááá áá áĽá á¨á áá, TCP á¨áá áá°á áĽááááá, áá á áá á áá°áá. UDP á áá áŤááśá˝ ááľáĽ á áááłááá˘
á áşáá˝ á¨ááá አáĽáá°áá áŤá á ááááŽá˝ á áá ᣠáĽá áĽá áą á ááľ áá á áĽáŤááłááą á áŤáá á áááá áá á¨áá°á áĽá á á°áááᢠáłááłááą á á°áťá ááĽááľ áááŽáĽ á á áĽááá áá á-áá áá¸á áĽá áĽáá° áá á-áá áááľááá˝ á¨á°ááŤá¨áĄ áá¸á. á á°ááłáłá áá, á¨áĽááá áá°áŽá˝ á¨á áá á áľá°ááá ááá á¨ááá, áĽá áááŁá á¨ááἠáá¨ááť áĽá áľáŠá¨áľ á°á°áĽáˇá.
á¨ááŤááἠá¨ááἠáá¨ááť
áá°áŽá˝ á˘ááá áá˝áá. á˘ááá á áá¨á¨áť á áááľ ááá á áá¨á áá ááἠá¨ááᣠááľá°áľ á¨áá¨ááá áľ ááá ááᢠá á°ááŤáŠ áááľááá˝ á á°áᨠááááľ ááŁáá-áááľáŽá˝ áá,
áĽáá°áá á áááłá áľ áá á¤ááá áááá á˘ááá ááĽá á ááłáľ áĽáá°áá áĽááłáŤáἠááá¨áá¨á áá°áŽáš áá˝áá á á˝á á°-ááśáá˝ - á¨á áá áááł. á áľááá á¨áá ááááŞáŤ áŤááĄáłá á¨ááŤá á¨á˘ááá ááá ἠáá¨ááłáᢠááá á˘áááá˝ á¨á°áááľ á á°ááłáłá áááľáŽá˝ ááááľ áá - á á˛á¤á áĽá áľ áá°á¨áľ á áľá°áłáłáŞáá˝ ááłáŞáŤá¸áá á°á á áá á áĽáŠáááľ áŤáľá°áłáľáŻá¸á áááľá˘ á á˝á áłá áá˝ áĽááłáá˝ áĽáá°áá á áááľ á áŤáľááááᢠá¨áá á á˝á áłá áá˝ áĽááł int, á¨áá°á á áľááľ áĽá á¨áľáá á áŤá áááá á áľááá áĽááłááá á¨ááŤááááľ á á ááá áŤáľá á á. áá á á˝á á°-ááśáá á á°áááá á áá°á áá áŤáá á˝áá áá.
á¨áĽáŤáá ááá á ááĽááľ áĽáááťáá. áá°áŠ á¨áá°áŤá áľ á áááá á áᢠáááťá á á˛áľ áŁáś á˘ááá á¨ááś áááἠááľá°áľ áá˝ááá˘
á á ááľ áá
áľ, áĽáą áŤáą ááś ááááłáľ áááľáá, ááá ááááľ ááá áá. á áááአá á˛áľ ááá áááĽáŤáᣠá á ááá áááłáá áá˝ááᣠá¨á ááá á¨á˘ááá áá á - ááŤáŤáť - á ááá áá¨á¨áť áá á¨ááŻá áĽá á¨á áá ááťáá áááĽááᢠá á˛áľ á˘ááá á áá°áá á¨áá˘
á á ááľ áá
áľ, áá°áŠ áĽáá°áá á˛ááł, á á˛áľá áá áááąá á˘ááá áĽá á
á˝á á°-ááś áááŤá. áá°áŠ áááá á
á˝á áłá áá˝ áĽááł áŤááŁá áĽá á á°áá°á áŚáł áá áŤááá áááł áŤááłá.
á
á˝á á°-ááśá á á°áá á¨á áľ áá á¨áá á¨áá á áááἠáĽá á¨á˘ááá áá á áŤááŁáá˘
á¨á ááá áááł áááááľ á¨á˘áááá áá¨á¨áť áŤááĽáŁá áĽá á°á¨á᪠ááľá°áśá˝á ááťáá áááĽááᢠáá
ááá áĽá
áľ áá, ááá áá°áŽá˝ á áĽáą áá°á¨áľ áá°áŤá.
á¨ááἠááŁááľ
á áá¤áąá, á¨ááἠááŁááľ á áĽá ááá፠áá á¨á°áá á¨á° - áĽá á á˘ááá ááľáĽ á¨ááá˝áá á¨áľáááá á¨áá˝ ááἠá áá°áá ᣠáá áááľá áĽáŤááá˝á ááááŠ. á á ááłá¨ áá¨áĄ áá á¨áááŁá áá á áŁá á°ááłáłáᣠá áľááš á¨á°áťáťáá˘
á°ááłáłá áĽá áľ áááŁááľ áĽáť áłááá áĽá á áá áááá ááľáŹáá˝á áááá á. áá°á á áá - áá° á˘ááá á¨áá˝á á¨á˝áá ááľá°áᢠá áľá°áłáłáŞáá˝ áŁáááá áľ á ááááá áá áŚáł áá á˘ááá áááá áŁáᣠáĽá ፠áá - ááľáŹ á ááá˘
á áľááá á¨áá á
á ááá áĽá¨á˛áአááŁáĽ áááľá áááááľ á¨ááŁáĽ áá°áŠ á ááá á°áááŻáᣠáá
á á¨á˘ááá áá¨á¨áťá áŤááŁá áĽá áĽááá
á áľáááá˝ á á áŤáŁá˘á áŤáľáá˝ááá˘
áĽáá áŤáá áááá¨áľ á áŁá áľáá˝ áá, áĽá á áá á¨ááłá á áľá°ááᣠáá áŤá á áĽáá°áááá ááá ááťáá.
á RPC ááŽáᲠááľáĽ á¨ááἠáááŤáľ
áťáá˛áá áĽáá´áľ áá á¨áá°áŤá? á°áŞá áá° á¨áľáá áááľá°á áťááľ áĽáá°ááá áĽáá´áľ áá¨áłá? áŽáą âá15 áťááśá˝ áá!â á áááᢠ- á á, áá á¨áá¨áááá á ááŽáá˛á áá.
á áŁá ááá áĽá áľ á¨ááááŞáŤ á°á¨á áá - á áĽáŤáá ááľáĽ á¨ááááŞáŤá ááĽá.
get(photo100_500) => 100 % N.
áá áááá áá¸á፠á¨á˝áá ááŽáśáŽá ááłá ááᣠáá á áĽáááĽáŁ áá ááá˝ ááľáĽáľáĽ áĽá á¨á°ááአááá áá˝ááᢠááłáá á áĽáŤáá ááľáĽ á¨ááááŞáŤáá ááĽá áĽá ááŞáá á áááľá°á áá á á˛áŤáá áááľáłáá˘
á¨á ááľ áá á á áŤá á¨ááἠá áŤáŁá˘ áĽáá˛áá¨á áľáááá áá á áá ááᢠ100 á¨á°á áá ááá á¨áĄáľá ááłáá፠áá áĽáá áᣠáĽá ááá á¨á ááľ á áŤá áá¨á áá°ááłá°áĄ áĽáŤááá˝ á á ááľ á¸áá°á´ áá áĽáá˛áá áĽááááááá˘
áĽáŤááá˝ á áááľá°á ááľáĽ áĽáá´áľ áĽáá°áá°ááá ááľ á¨ááá°á á á¨áá áá á ááŤá á á - áááá áľáĽááŁáŞ áá¸áľ.
hash(photo100_500) => 3539886280 % N
áĽáá˛áá áá˝, á¨á°áá¨á ááá áĽá á¨áťááľ ááĽá áĽááááá.
áĽááá áááąá á ááŤáŽá˝ á¨áá áŠáľ á¨áááľá°áá áá á áľáá¨áá áľáá¨ááá ááá áĽá áá áĽáá°ááá¨áá ááááááľ á¨á°áááá áĽáť ááᢠáááłá ᣠ16 áťááśá˝ áá áŠá ᣠá á á¨ááá ᣠá¨á áá áĽáááááá - áŤáááá¨áĽ 32 ááá°ááľ áĽáá˝áááᢠáĽá áŤááááľá ááá¨áá á¨áááá, á¨áĽá¨ááľ áá áááŤá, ááááŤáąá áááá ááá áŤáááá áŞáłáŤ á áľááá áá¨ááá áľáááá˝á áá. áĽááá á ááŤáŽá˝ á áá áá¸á, áá áááá á áá°áá.
á¨áááá° á¨á ááááŽá˝á ááĽá áá¨á ááá ááľáááľ á¨áááá áĽáá ááááᢠááá áą áá áŤáááá¨áĽ ááşáá a la Ketama. áá á á°ááłáłá áá á¨áá¨ááá á áŤáŁá˘áŤáááľ áá á áá áĽááŁáá ᣠáĽáŤááá áá° áááľá°á á ááááľ áĽáŤááłááą ááŤá á¨áŤáąá áľáá˝ ááá˝ áĽáá˛áááľ áĽá á¨á፠ááážá˝á áá° ááŽáá˛á ááááľ á ááĽáá˘
áĽá á á áŁá áአá¨áá áĽáŤááá˝ á áᢠáá á áááľááᥠᨠRPC ááŽáᲠáĽáŤááá á°ááĽá á¨áľáá áááľá°á áááľ áĽááłáá áľ áááľáá áĽá á¸áá°á´áá áááľááᢠá¨á፠áá á¨ááťá ááśá˝ á áᣠáááᣠáááľá°á á á áľáá áŤááᣠá ááááľ áá° á á áááŤáᢠá°áŞá áá áá áá áŤá°áááá˘
ááááŚá˝
áááἠááľáłááťáá˝á á á°ááŤáŠ ááááśá˝ áĽáá˝ááá. á áŁá ááá˝ áĽá ááá á¨ááá áááἠááľáłááťáá˝á áá° memcache ááťá.
ring-buffer: prefix.idx = line
ááá á áľá á áĽáŤ á á - á¨áááἠááľáłááťá áľá ᣠááľáá ᣠáĽá á¨áá áááἠáá á á á - á¨ááľááŽá˝ áĽááľá˘ á¨áááá° ááĽáá ᨠ0 áá° á¨ááľááŽá˝ ááĽá áľááááľ áĽáááľáłáá 1. á memcache ááľáĽ áŤáá ááá á¨áá á¨áááá° ááĽá áá á¨á°áŁáᨠá áľá á áĽáŤ ááᢠá¨áááἠááľáłááťáá áĽá á¨á ááá áá áá° áĽá´áą áĽááľáááŁááá˘
áááἠááľáłááťáá˝á áááá ἠá áľááá á áááá áľ áá áĽááá˝ááá Multi Get ááá áááá˝áŁ á áá á¨á°á°á¨á°áŠáŁ áĽá á áá á á¨áááľ áááἠááľáłááťá á áĽááá°á áá áŤááᢠáááááĽáŠ áĽá á áá á¨áááá á áááľ ááľáĽ á¨ááá ááá á áĽááá°á áá áá¨á á˛ááá ááᣠááá ááá áłáá°á áŠáŁ áłááá ááá áá° ááá˝ áá˝áá˝ áľáŤáá áłááá áąáŁ ááá áá áá áááἠáĽá áá á ááááá˘
ááłáá á¨áááἠááľáłááťáá˝ áá¨ááť áá°á á ááᢠá¨áááἠááľáłááťáá˝-áá°á. á áľááá á¨á°áá á¨á ááá áá áĽá áĽá á á áŁá áĽá á áá áľáĽáľáŚá˝ ááľáĽ á á°áá áĽá á áá á¨áááᢠáĽá á¨áááá áľáá áááľá°á 600 á˛á˘ á¨áłá¸á áá áŤá¨ááťáá˘
áá°áŠ á áŁá áŤá¨á áá, á¨6-7 á ááľ áĽáľá áŤáá¸á áľáĽáľáŚá˝ á á. áĽáąá ááááłáľ á¨ááááááŁá¸á á˝ááŽá˝ á á ᣠáááłá ᣠááááŚá˝á ááá¨áá¸áľ ClickHouseá á áááľ áá áá áááá á˘
á ClickHouse ááľáĽ áááἠááľáłááťáá˝á áá°áĽá°áĽ
áá áĽááá ááá፠áá° áá°áŽá˝ áĽáá´áľ áĽáá°áááᣠáŤáłáŤáá˘
á á áŤáŁá˘á á RPC áá° RPC-proxy á¨áááľ áŽáľ á á, áĽá áá° áá°áŠ á¨áľ áááľ áĽááłáá áľ áá¨áłá. á ClickHouse ááľáĽ áááἠááľáłááťáá˝á áááťá á¨áááá á áá
áĽá
áľ ááľáĽ áááľ áááá˝á áááἠá ááĽá.
- á ááłááľ áá°áá á ClickHouse áá°áŤáľ;
- ClickHouseá ááľá¨áľ á¨ááá˝ááá ᨠRPC á°áŞáŁ á áá áááľá áĽá á RPC á°áŤá˘
áá°áŠ ááá áá - á ClickHouse á á áááá ááá á¨á ááááŽá˝ áľáĽáľáĽ áĽáá°áŤááá˘
áĽá áá° ClickHouse ááááľáŁ á á°á¨ááᢠá¨áľááľ á¤áľ. á ááĽáł ᨠKittenHouse áá° ClickHouse á¨ááľá á áááááᢠááá áĽááłá áłáá á¨á ᣠá¨á¤á˝á˛á˛á áááááśá˝ áĽá á á áŁá áĽá áá˝áá˝á áá¨ááŤáᢠáá áą áĽáá˛á áŤáŁ ClickHouse áŁáá á áááá áá á¨á áŤáŁá˘ á°ááá˘áŚá˝ ááŽáᲠáááłáá¨áááááľá á¨áááááśá˝ áĽáŤáá˝ ááááá á ááŤáľá˝á ááááľ á¨á°áťá áá. áĽáá˛áá á á áááŤáááľ á áľá°ááá á áá ááአáá¨áá á áŤáą ááľáĽ ááľááἠáá˝ááá˘
á ááłááľ áá ᨠRPC áĽá
áľá áá°á á áŁááá áááľááá˝ áááłá á nginx ááľáĽ áá°áá á á ááááá. áľááá
, KittenHouse á UDP á áŠá áááἠááľáłááťáá˝á á¨ááá á á˝ááł á áá.
á¨áááἠááľáłááťá á᪠áĽá á°ááŁá á á°ááłáłá áá˝á áá á¨áá°áŠ á¨áá á á áŤáŁá˘á á áľá°ááá
ááľáĽ ᨠUDP ááŹáľ á¨ááŁáľ áĽáľá á áŁá áá
á°á ááᢠRPCá á áśáľá°á ááá áááľá áĽá á áľá°áááááľ ááľáĽ á¨áá°áá á á áľáááááľ ááŤá¨á áĽáá° áľááááľ, á ááá UDP áááá áĽáá áááá. áá°áá
áĽá
áľ á áá áĽááááłááá˘
ááľáľá
áááľ á áááľ áááἠááľáłááťáá˝ á ááᥠá á áľá°áłáłáŞáá˝ á á ááááŽáťá¸á á¨á°á°á á°áĄ áĽá á ááá˘áá˝ á¨áŽáľ á¨á°ááᢠáĽááą á¨áááľ ááááľ áááŞáŤáá˝ áá ááááłá- áľáááľ áĽá áááľ.
á¨áľáááľ áááŞáŤáá˝
á ááá á ááááŽáťá˝á áá áá°áŤá
á¨áááľ áááŞáŤáá˝
ááááťá¸áľ, áĽá áááŽá˝á á˝ááá. áááłá ᣠáá áŤáá˝á ᣠáአáá áŤáá˝á áá° áľáłá˛áľá˛ááľ áĽáá˛á˝á á¨ááŤáľá˝áá á°áŤ á°ááŁáŤáľ áľáĽáľáĽ á á ᣠáá° áá áŚáł áááŤáá˘
statlogsCountEvent ( âstat_nameâ, $key1, $key2, âŚ)
statlogsUniqueCount ( âstat_nameâ, $uid, $key1, $key2, âŚ)
statlogsValuetEvent ( âstat_nameâ, $value, $key1, $key2, âŚ)
$stats = statlogsStatData($params)
á ááá á ááŁáŞáŤáá˝á áá°áá°á áĽá áá§á°á áĽá á¨áľáłá˛áľá˛ááľ á¨ááááááá áá ááľá¨á áĽáá˝ááá - ááŤáá˝á áááᥠᣠWatchdogs á áŤáá áŠá˘
á áŁá áĽáá˝ááá áĽá áááŞáŤáá˝ á¨ááľá°áśáš áĽááľ á áá ᨠ600 á˘ááŽá áá° 1 áľáŞááŽá áá. ááá áá, áĽááąá ááá¨áľ áĽáááááá á˘áŤááľ áááľ áááłáľá áááŞáŤáá˝ ááľáĽ áŤááľá á ááááŤáá˝ ááá¨áłáľ. áááá á á ááľ áá áá°áŁá°áĽ áĽáľáŤáá áŤáá°ááłáá áľáá á˝áá ááᢠááááľ áĽááľ áááłáľ áĽáá´áľ áĽá¨á°áŤ áĽáá°áá áĽáááááłááá˘
áĽááá á áááŞáŤáá˝ á¨áá˝á á°ááŁáŤáľ á ááᢠáá° á áŤáŁá˘áŤá memcacheá¨ááá˘áŤáá˝á ááĽá áááááľ. á ááľ áá á á áá áá ááľáĽ á á áŤáŁá˘á á°ááᨠáľáłá˛áľá˛ááľ-áłáá áááá ááááŚá˝ áá°á áľáŁá. á ááá á, ááá áááŞáŤáá˝á áá° áááľ ááĽááĽáŽá˝ á áááá áŤáá áłá á¨áááἠááľáłááťáá˝ - á°áĽáłá˘áá˝, áá á á¨ááá¸á áŤáá ááĽááĽá áĽááłáááľ á¨áá˝ááťá˝á áľáĽáľáĽ ááľáĽ áľáłá˛áľá˛ááľá áŤá ááá.
á áľááá á¨áá, á ááĽáł áá° áá-á°áĽáłá˘áá˝ ááťá áĽáá˝ááá.
ááá áá á¨áŽáľ á ááĽáł áá° á°áĽáłá˘áá˝ áááᣠáľáłáľ-áłááá áááᣠá á á°áŁáłá˘á áá á¸ááá áľááá¨áá á á°áἠáá፠á¨ááá˝á áááľá ááᢠáááľáá á°áľáá á¨áááá á áá ááááŤáľ á áá˝á áá áŤááá memcache stats-daemon ááłá°á áŤááťáá áĽáť ááᣠááá á°á°áááá áĽá á ááĽáł á¨ááľáá˘
á ááá áᣠá¨áááἠááľáłááťáá˝-á°áĽáłá˘áá˝ áľáłá˛áľá˛ááľá áŤáá áłá meowDB - áá á¨áĽá á¨ááἠááł áá, áĽáąá áááŞáŤáá˝áá ááŤá¨áá˝ áá˝áá.
á¨á፠á¨áŽáą áááľáŽá˝ "á á
ááĽ-SQL" áááŤáá˝á ááľá¨á áĽáá˝ááá.
áá¨áŤ
áĽ.á¤.á . á 2018 á¨á á áá ᾠᣠááľáŁá áááłáśá áá á¨á ᣠáĽá ááłáĄ á¨á˛áŤááŤáá áá ááá á ClickHouse ááľáĽ áááŞáŤáá˝á ááŤá¨áá˝ á áá˝á ááá ááá°áŤáľ ááá¨á áá á¨á áľá˘ á ClickHouse áá á¨áááἠááľáłááťáá˝ á áá - ááá á ááááŠá?
á KittenHouse á áŠá áááἠááľáłááťáá˝á á¨áá˝á áĽá
áľ áá á¨áá˘
ááľáááᢠá áľáá áá áá "*á¤áľ" á¨ááá¨áĽá áŽáľ á UDP á áŠá áĽáá°áťáá¸á á áľááá áááŞáŤáá˝á á á
áá¸áą ááá ááᢠá¨á፠áá
*á¤áľ áĽáá° áŞá°á áááľ á¨áá¨áłá¸áá áĽáá° áááá˝ áá° ááľáá˘áŤáá˝ ááááŤá¸ááᢠáĽááá
á áááἠááľáłááťáá˝ ááá ἠááťá áŤáá áľá áá° ClickHouse á áľááá ááľá¨áľ áá˝ááá˘
áááŤáźáŁ áľáłá˛áľá˛á-áłáá áĽá áá-á°áĽáłá˘áá˝ áłáłá¤á áŤáá áĽá
áľ á áá
á°á°ááˇáá˘
áááŤáźáŁ áľáłá˛áľá˛á-áłáá áĽá áá-á°áĽáłá˘áá˝ áłáłá¤á áŤáá áĽá
áľ á áá
á°á°ááˇáá˘
- áĽáá á StatsHouse ááľáĽ á á áá ááľáĽ á¨á°áťá á¨áŽáľ á¨á°áᨠáááĽááľ á áá˘
- StatsHouse ᨠUDP áááŞáŤáá˝á áá˝ááᣠááľáááá áá° SQL ááá°áťáá˝ á¨á°áá¨á¨áŁ áá° KittenHouse á áĄáľá ááá˘
- KittenHouse áá° ClickHouse áááŤá¸ááá˘
- ááááĽáŁá¸á á¨áááá áľáłáľáááľá á ááá áĽáááŁá¸ááá - á ááĽáł ᨠClickHouse áá°á á SQLá˘
á ááá áá? áá¨áŤ, áá áĽáá´áľ áĽáá°ááá áĽáááłáá. á˝ááŽášá á áĽá áą áá áŤáľá°áŤá¨áá ááááŁáľ áá° áĽáą áá á áá áĽááááŤááᢠá áá á°áľá á á°ááááá˘
áááááĽáŠ áĽá¨áľ á áŤáľáá. áŤááą á ááááŽá˝ áŤáľááááᣠá¨á áŤáŁá˘ áľáłá˛áľá˛ááľ-áłááá˝ áĽá áá-á°áĽáłá˘áá˝ á áŤáľáááá ᣠáá ClickHouse á áá áŤáá áĽá áľ á¨á áá áľáá á áááá áááááᢠáĽááľ á ááááŽá˝ áŤáľááááᣠáá á¨á áá ááľ áĽá á¨á áá áááá ááá á ááŁá¸á.
á á°áá
á ááááŞáŤáŁ ᨠPHP áááááľá áĽáááá¨áľá˘ ááľáĽ áĽáŤá°áá ááᢠááľ: áá áá GitLab и TeamCity ááá°ááŤáľ. á¨áááľ á áááŤáá˝ áá° áá á áááŤá ááááłá, á¨ááá አááá¨áŤ áá° ááľá¨á ááááłá, áĽá á¨ááľá¨á áá° áááľ.
á¨áá°ááŤáą á ááľ, á¨á áá á¨áááľ á áááŤá áĽá ááłáá á°ááľá°áá, áĽá á˛á áááá˝ á ááľáŁá¸á áááľ ááľáĽ áááŁá - áááŚá˝: á°ááĽáŻá, á°á°ááá, á°ááá§á. áá ááἠá áአáŽá ááľáľ á˘ááá á˘ááá ááľáĽ á°áááá§áᣠáá á áááŚá˝á á á á ááá á¨á ááááŤá˝á ááá¨áŚá˝ áá á ááĽááľ áá°áá áá˝ááᢠáĽáá áĽá á áá á¨áááá á ááĽáł áá áłáľ á áá°áá, áá áᏠááŁááľ, á ááľ á áááá áááŚá˝á áá áἠáá¨á¤áśáš, ááá¨á¤áśáťá¸á, ááá° áááŚá˝á á˛áá. áá á á á ááá ááá¨áŚá˝ ááľáĽ áŽáąá á á áľá áĽá á á°á¨ááśá˝ ááľáĽ áĽáá˛áŤááá áŤáľá˝áááłáᢠááᥠáá° á áŤáŁá˘áŤá á áá á˛á°ááľ áĽááá á ááŁáá˝ á áĽáą áá áá°áá áŤáᢠá¨á áŤáŁá˘ ááá áľáááľ. áŽááŁá á á°ááłáłá áĽá áľ áá°á¨áľ áá¨áááá.
á á°á¨ááŞá kPHPá á áĽááľ áĽáá°ááŤááá áĽá á¨áŤáą á¨áá áĽáľááľá á ááᢠááľ á¨áá áŁáá ááľá áá á¨áľ. á¨áá ááᎠHTTP á áááá áááľáŽá˝, á¨á፠ááŠááľ ááá á á áá˝áá - á¨á°áááá áááľáŽá˝ ááĽá°áľ á ááśáá˝ á¨ááá አáᣠááᢠáľááá , áĽáá áá á ááŤá á á - áľáŞáą á¨á°áá áá á¨á˘ááá á á ááŁá. á áĽáŤááłááą áááŁáł áá¨ááŤá, áĽá á ááááľá áľ áá á°áá áá¨ááŤá. áĽáŞáľ áá° á ááááŽá˝ á°áŁááˇáá˘. á¨ááá ááľáĽ áŽáááľáśá˝ á á˛áľ áĽáľá áá° á˘ááá áĽáá°áᣠáŤáŠáłáᣠáĽá á á°ááłáłá á¨áááľ ááŁááľ ááłá˝áá á ááááŤá˝áá áłááłááąáŁ ááá áá áááąá á áĽááá á ááľááአáá á áá°áŤá¨áľ á á˛áąá á¨áááľáŽá˝ á á ááŤáłá¸á ááľá°ááᢠáá áá¨á°áá á ááŤáá áááł áĽáá°áá áááá áá á˛áą áľáŞáľ.
áá áá°áŽá˝ áŁáĽáá˛áá á áá á¨áą áááľáŽá˝ áááᾠᣠáĽá áą á áŁá á°ááłáłá áá-
- git áá á áááŤá;
- áááľáŽá˝ á˘á .deb;
- áľáŞáą á¨á°áťáá áá˘ááá á á ááľáľ;
- áá° á ááááŽá˝ á°áŁááˇá;
- á áááአáľáŠáľ .dep áŤááŁá;
- dpkg -i;
- á ááŤáá áááł áá° á á˛áą áľáŞáľ áĽáá°áá ááááá˘
ááŠááą á¨áĽá áááľáŽá˝ á áá á°á ááľáĽ á¨áłá¸á ááá ááᢠ.deb, áĽá á áááĄá áľ áá dpkg -i á áľáááą áá á°ááá áá. ááááľáá kPHP áĽáá° áááľáŽá˝ á¨áá°áŤáᣠáĽá áá°áŽá˝ áĽáá° dpkg á¨á°á°ááŠáľ? áĽáá°á፠ááᢠáá°áŤá - á áááŠáľ.
á áá á áááá˝:
- áááŁá á á ááśá áŞáŞáŠá˝áŞá ááá˘
"Vkontakte áľáááľ á áľá°áłáłáŞ. áĽáá´áľ?" áľá áŽáááľáľ áĽá áľá áááľ ááááŽá˝á˘ - ááᣠá áŠáŞ ááľáŹáľá˛áá
"áŞáŹ á á áľá áşáá˝ á¨ááá አá ááááŽá˝ áá¨áá áá° ááá áááľ áĽáá´áľ áĽáá°ááŤáľááŁ" . - á¨áĽá áááŁ
"ᨠVKontakte ááłáá á áá áá áĽáŤá°á áŤá ááŽáááľ á ááá´áá¸á" , ááá áá á¨áááŁáł áĽááł, áááľáá á áá°áá.
á ááᲠá áŠááŞá˝ áĽáá° á¨ááŽááŤá áŽáá´ á áŤá á¨áááľ ááŤá¨á á ááą áá
áá¤á˝á áŠá˛áŤ áá 17 á á áἠáá áPHP ááá˘áá˝ áľáá ááľá°áľ ááááᢠáá á áŞá áᲠáĽááłáá áááá¨áą ᣠááá°áááŞáá˝ (áááąá áá¤á˝á áŽáá áĽáŤáłá አáá!) - PHP á¨áťá ááŤáááĄáľ á¨ááá˝ááľ ááá áááľááá˘
ááá: hab.com