ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื”ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ื™ืฆื™ืจืช VKontakte ื ืžืฆืืช ื‘ื•ื•ื™ืงื™ืคื“ื™ื”; ื”ื™ื ืกื•ืคืจื” ืขืœ ื™ื“ื™ ืคืื‘ืœ ืขืฆืžื•. ื ืจืื” ืฉื›ื•ืœื ื›ื‘ืจ ืžื›ื™ืจื™ื ืื•ืชื”. ืขืœ ื”ืคื ื™ื, ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ื”ืžื‘ื ื” ืฉืœ ื”ืืชืจ ื‘-HighLoad++ Pavel ืืžืจ ืœื™ ืขื•ื“ ื‘-2010. ืฉืจืชื™ื ืจื‘ื™ื ื“ืœืคื• ืžืื– ื•ืœื›ืŸ ื ืขื“ื›ืŸ ืืช ื”ืžื™ื“ืข: ื ื ืชื— ืื•ืชื•, ื ื•ืฆื™ื ืืช ื”ื—ืœืง ื”ืคื ื™ืžื™, ื ืฉืงื•ืœ ืื•ืชื• ื•ื ืกืชื›ืœ ืขืœ ืžื›ืฉื™ืจ ื”-VK ืžื ืงื•ื“ืช ืžื‘ื˜ ื˜ื›ื ื™ืช.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืืœื›ืกื™ื™ ืืงื•ืœื•ื‘ื™ืฅ' (ืื˜ืจืงื˜ื•ืก) ืžืคืชื— ืื—ื•ืจื™ ื‘ืฆื•ื•ืช VKontakte. ืชืžืœื•ืœ ื“ื•ื— ื–ื” ื”ื•ื ืชืฉื•ื‘ื” ืงื•ืœืงื˜ื™ื‘ื™ืช ืœืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืชืคืขื•ืœ ื”ืคืœื˜ืคื•ืจืžื”, ื”ืชืฉืชื™ืช, ื”ืฉืจืชื™ื ื•ื”ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ื ื™ื”ื, ืืš ืœื ืขืœ ืคื™ืชื•ื—, ื›ืœื•ืžืจ ืขืœ ื‘ืจื–ืœ. ื‘ื ืคืจื“, ืขืœ ืžืกื“ื™ ื ืชื•ื ื™ื ื•ืžื” ื™ืฉ ืœ-VK ื‘ืžืงื•ื, ืขืœ ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื•ืžืขืงื‘ ืื—ืจ ื”ืคืจื•ื™ืงื˜ ื›ื•ืœื•. ืคืจื˜ื™ื ืžืชื—ืช ืœื—ืชื•ืš.



ื›ื‘ืจ ื™ื•ืชืจ ืžืืจื‘ืข ืฉื ื™ื ืฉืื ื™ ืขื•ืกืง ื‘ื›ืœ ืžื™ื ื™ ืžืฉื™ืžื•ืช ื”ืงืฉื•ืจื•ืช ืœ-backend.

  • ื”ืขืœืื”, ืื—ืกื•ืŸ, ืขื™ื‘ื•ื“, ื”ืคืฆืช ืžื“ื™ื”: ื•ื™ื“ืื•, ืกื˜ืจื™ืžื™ื ื’ ื‘ืฉื™ื“ื•ืจ ื—ื™, ืื•ื“ื™ื•, ืชืžื•ื ื•ืช, ืžืกืžื›ื™ื.
  • ืชืฉืชื™ืช, ืคืœื˜ืคื•ืจืžื”, ื ื™ื˜ื•ืจ ืžืคืชื—ื™ื, ื™ื•ืžื ื™ื, ืžื˜ืžื•ื ื™ื ืื–ื•ืจื™ื™ื, CDN, ืคืจื•ื˜ื•ืงื•ืœ RPC ืงื ื™ื™ื ื™.
  • ืื™ื ื˜ื’ืจืฆื™ื” ืขื ืฉื™ืจื•ืชื™ื ื—ื™ืฆื•ื ื™ื™ื: ื”ื•ื“ืขื•ืช ื“ื—ื™ืคื”, ื ื™ืชื•ื— ืงื™ืฉื•ืจื™ื ื—ื™ืฆื•ื ื™ื™ื, ื”ื–ื ืช RSS.
  • ืขื–ืจื” ืœืขืžื™ืชื™ื ื‘ืฉืืœื•ืช ืฉื•ื ื•ืช, ืฉื”ืชืฉื•ื‘ื•ืช ืขืœื™ื”ืŸ ื“ื•ืจืฉื•ืช ืฆืœื™ืœื” ืœืชื•ืš ืงื•ื“ ืœื ื™ื“ื•ืข.

ื‘ืžื”ืœืš ืชืงื•ืคื” ื–ื•, ื”ื™ื” ืœื™ ื™ื“ ื‘ืžืจื›ื™ื‘ื™ื ืจื‘ื™ื ืฉืœ ื”ืืชืจ. ืื ื™ ืจื•ืฆื” ืœื—ืœื•ืง ืืช ื”ื—ื•ื•ื™ื” ื”ื–ื•.

ืืจื›ื™ื˜ืงื˜ื•ืจื” ื›ืœืœื™ืช

ื”ื›ืœ, ื›ืจื’ื™ืœ, ืžืชื—ื™ืœ ื‘ืฉืจืช ืื• ื‘ืงื‘ื•ืฆืช ืฉืจืชื™ื ืฉืžืงื‘ืœื™ื ื‘ืงืฉื•ืช.

ืฉืจืช ืงื“ืžื™

ื”ืฉืจืช ื”ืงื“ืžื™ ืžืงื‘ืœ ื‘ืงืฉื•ืช ื‘ืืžืฆืขื•ืช HTTPS, RTMP ื•-WSS.

HTTPS - ืืœื• ื”ืŸ ื‘ืงืฉื•ืช ืœื’ืจืกืื•ืช ื”ืื™ื ื˜ืจื ื˜ ื”ืจืืฉื™ื•ืช ื•ื”ื ื™ื™ื“ ืฉืœ ื”ืืชืจ: vk.com ื•-m.vk.com, ื•ืœืงื•ื—ื•ืช ืจืฉืžื™ื™ื ื•ื‘ืœืชื™ ืจืฉืžื™ื™ื ืื—ืจื™ื ืฉืœ ื”-API ืฉืœื ื•: ืœืงื•ื—ื•ืช ื ื™ื™ื“ื™ื, ืฉืœื™ื—ื™ื. ื™ืฉ ืœื ื• ืงื‘ืœืช ืคื ื™ื RTMP-ืชื ื•ืขื” ืœืฉื™ื“ื•ืจื™ื ื—ื™ื™ื ืขื ืฉืจืชื™ื ืงื“ืžื™ื™ื ื ืคืจื“ื™ื ื• WSS- ื—ื™ื‘ื•ืจื™ื ืขื‘ื•ืจ Streaming API.

ืขื‘ื•ืจ HTTPS ื•-WSS ื‘ืฉืจืชื™ื ื–ื” ืฉื•ื•ื” nginx. ืขื‘ื•ืจ ืฉื™ื“ื•ืจื™ RTMP, ืขื‘ืจื ื• ืœืื—ืจื•ื ื” ืœืคืชืจื•ืŸ ืžืฉืœื ื• ืงื™ื™ื‘, ืื‘ืœ ื–ื” ืžืขื‘ืจ ืœืชื—ื•ื ื”ื“ื•ื—. ืœืฆื•ืจืš ืกื•ื‘ืœื ื•ืช ืชืงืœื•ืช, ืฉืจืชื™ื ืืœื• ืžืคืจืกืžื™ื ื›ืชื•ื‘ื•ืช IP ื ืคื•ืฆื•ืช ื•ืคื•ืขืœื™ื ื‘ืงื‘ื•ืฆื•ืช ื›ืš ืฉืื ื™ืฉ ื‘ืขื™ื” ื‘ืื—ื“ ื”ืฉืจืชื™ื, ื‘ืงืฉื•ืช ื”ืžืฉืชืžืฉ ืœื ื™ืื‘ื“ื•. ืขื‘ื•ืจ HTTPS ื•-WSS, ืื•ืชื ืฉืจืชื™ื ืžืฆืคื™ื ื™ื ืชืขื‘ื•ืจื” ืขืœ ืžื ืช ืœืงื—ืช ื—ืœืง ืžืขื•ืžืก ื”ืžืขื‘ื“ ืขืœ ืขืฆืžื.

ืœื ื ื“ื‘ืจ ื™ื•ืชืจ ืขืœ WSS ื•-RTMP, ืืœื ืจืง ืขืœ ื‘ืงืฉื•ืช HTTPS ืกื˜ื ื“ืจื˜ื™ื•ืช, ื”ืžืฉื•ื™ื›ื•ืช ื‘ื“ืจืš ื›ืœืœ ืœืคืจื•ื™ืงื˜ ืื™ื ื˜ืจื ื˜ื™.

ืงืฆื” ืื—ื•ืจื™

ืžืื—ื•ืจื™ ื”ื—ื–ื™ืช ื™ืฉ ื‘ื“ืจืš ื›ืœืœ ืฉืจืชื™ ืื—ื•ืจื™. ื”ื ืžืขื‘ื“ื™ื ื‘ืงืฉื•ืช ืฉื”ืฉืจืช ื”ืงื“ืžื™ ืžืงื‘ืœ ืžืœืงื•ื—ื•ืช.

ื–ื” ืฉืจืชื™ kPHP, ืฉืขืœื™ื• ืคื•ืขืœ ื“ืžื•ืŸ ื”-HTTP, ืžื›ื™ื•ื•ืŸ ืฉ-HTTPS ื›ื‘ืจ ืžืคื•ืขื ื—. kPHP ื”ื•ื ืฉืจืช ืฉืคื•ืขืœ ืขืœื™ื• ื“ื’ืžื™ prefork: ืžืชื—ื™ืœ ืชื”ืœื™ืš ืžืืกื˜ืจ, ื—ื‘ื•ืจื” ืฉืœ ืชื”ืœื™ื›ื™ ื™ืœื“, ืžืขื‘ื™ืจ ืœื”ื ืฉืงืขื™ ื”ืื–ื ื” ื•ื”ื ืžืขื‘ื“ื™ื ืืช ื”ื‘ืงืฉื•ืช ืฉืœื”ื. ื‘ืžืงืจื” ื–ื”, ืชื”ืœื™ื›ื™ื ืื™ื ื ืžื•ืคืขืœื™ื ืžื—ื“ืฉ ื‘ื™ืŸ ื›ืœ ื‘ืงืฉื” ืžื”ืžืฉืชืžืฉ, ืืœื ืคืฉื•ื˜ ืžืืคืกื™ื ืืช ืžืฆื‘ื ืœืžืฆื‘ ื”ืืคืก ื”ืžืงื•ืจื™ - ื‘ืงืฉื” ืื—ืจ ื‘ืงืฉื”, ื‘ืžืงื•ื ื”ืคืขืœื” ืžื—ื“ืฉ.

ื—ืœื•ืงืช ืขื•ืžืกื™ื

ื›ืœ ื”ืงืฆื” ื”ืื—ื•ืจื™ ืฉืœื ื• ืื™ื ื• ืžืื’ืจ ืขืฆื•ื ืฉืœ ืžื›ื•ื ื•ืช ืฉื™ื›ื•ืœื•ืช ืœืขื‘ื“ ื›ืœ ื‘ืงืฉื”. ืื ื—ื ื• ื”ื ืžื—ื•ืœืงื™ื ืœืงื‘ื•ืฆื•ืช ื ืคืจื“ื•ืช: ื›ืœืœื™, ืžื•ื‘ื™ื™ืœ, API, ื•ื™ื“ืื•, ื‘ื™ืžื•ื™... ื”ื‘ืขื™ื” ื‘ืงื‘ื•ืฆื” ื ืคืจื“ืช ืฉืœ ืžื›ื•ื ื•ืช ืœื ืชืฉืคื™ืข ืขืœ ื›ืœ ื”ืื—ืจื™ื. ื‘ืžืงืจื” ืฉืœ ื‘ืขื™ื•ืช ื‘ื•ื•ื™ื“ืื•, ื”ืžืฉืชืžืฉ ืฉืžืื–ื™ืŸ ืœืžื•ื–ื™ืงื” ืืคื™ืœื• ืœื ื™ื™ื“ืข ืขืœ ื”ื‘ืขื™ื•ืช. ืœืื™ื–ื” ืงืฆื” ืื—ื•ืจื™ ืœืฉืœื•ื— ืืช ื”ื‘ืงืฉื” ืžื—ืœื™ื˜ nginx ื‘ื—ื–ื™ืช ืœืคื™ ื”ืชืฆื•ืจื”.

ืื™ืกื•ืฃ ืžื“ื“ื™ื ื•ืื™ื–ื•ืŸ ืžื—ื“ืฉ

ื›ื“ื™ ืœื”ื‘ื™ืŸ ื›ืžื” ืžื›ื•ื ื™ื•ืช ืื ื—ื ื• ืฆืจื™ื›ื™ื ืฉื™ื”ื™ื• ืœื ื• ื‘ื›ืœ ืงื‘ื•ืฆื”, ืื ื—ื ื• ืืœ ืชืกืชืžืš ืขืœ QPS. ื”-backends ืฉื•ื ื™ื, ื™ืฉ ืœื”ื ื‘ืงืฉื•ืช ืฉื•ื ื•ืช, ืœื›ืœ ื‘ืงืฉื” ื™ืฉ ืžื•ืจื›ื‘ื•ืช ืฉื•ื ื” ืฉืœ ื—ื™ืฉื•ื‘ QPS. ื‘ื’ืœืœ ื–ื” ืื ื—ื ื• ืื ื• ืคื•ืขืœื™ื ืขื ื”ืจืขื™ื•ืŸ ืฉืœ ืขื•ืžืก ืขืœ ื”ืฉืจืช ื‘ื›ืœืœื•ืชื• - ืขืœ ื”ืžืขื‘ื“ ื•ื”ืคืจืค.

ื™ืฉ ืœื ื• ืืœืคื™ ืฉืจืชื™ื ื›ืืœื”. ื›ืœ ืฉืจืช ืคื™ื–ื™ ืžืคืขื™ืœ ืงื‘ื•ืฆืช kPHP ื›ื“ื™ ืœืžื—ื–ืจ ืืช ื›ืœ ื”ืœื™ื‘ื•ืช (ืžื›ื™ื•ื•ืŸ ืฉ-kPHP ื”ื•ื ืคืชื™ืœ ื™ื—ื™ื“).

ืฉืจืช ืชื•ื›ืŸ

CS ืื• ืฉืจืช ืชื•ื›ืŸ ื”ื•ื ืื—ืกื•ืŸ. CS ื”ื•ื ืฉืจืช ืฉืžืื—ืกืŸ ืงื‘ืฆื™ื ื•ื’ื ืžืขื‘ื“ ืงื‘ืฆื™ื ืฉื”ื•ืขืœื• ื•ื›ืœ ืžื™ื ื™ ืžืฉื™ืžื•ืช ืกื™ื ื›ืจื•ื ื™ื•ืช ื‘ืจืงืข ืฉื”ื—ื–ื™ืช ื”ืจืืฉื™ืช ืฉืœ ื”ืื™ื ื˜ืจื ื˜ ืžืงืฆื” ืœื•.

ื™ืฉ ืœื ื• ืขืฉืจื•ืช ืืœืคื™ ืฉืจืชื™ื ืคื™ื–ื™ื™ื ื”ืžืื—ืกื ื™ื ืงื‘ืฆื™ื. ืžืฉืชืžืฉื™ื ืื•ื”ื‘ื™ื ืœื”ืขืœื•ืช ืงื‘ืฆื™ื, ื•ืื ื—ื ื• ืื•ื”ื‘ื™ื ืœืื—ืกืŸ ื•ืœืฉืชืฃ ืื•ืชื. ื—ืœืง ืžื”ืฉืจืชื™ื ื”ืœืœื• ืกื’ื•ืจื™ื ืขืœ ื™ื“ื™ ืฉืจืชื™ pu/pp ืžื™ื•ื—ื“ื™ื.

pu/pp

ืื ืคืชื—ืช ืืช ืœืฉื•ื ื™ืช ื”ืจืฉืช ื‘-VK, ืจืื™ืช ืืช pu/pp.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืžื” ื–ื” pu/pp? ืื ื ืกื’ื•ืจ ืฉืจืช ืื—ื“ ืื—ืจื™ ื”ืฉื ื™, ืื– ื™ืฉ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช ืœื”ืขืœื•ืช ื•ืœื”ื•ืจื™ื“ ืงื•ื‘ืฅ ืœืฉืจืช ืฉื ืกื’ืจ: ื™ืฉื™ืจื•ืช ื“ืจืš http://cs100500.userapi.com/path ืื• ื“ืจืš ืฉืจืช ื‘ื™ื ื™ื™ื - http://pu.vk.com/c100500/path.

Pu ื”ื•ื ื”ืฉื ื”ื”ื™ืกื˜ื•ืจื™ ืœื”ืขืœืืช ืชืžื•ื ื•ืช, ื•-pp ื”ื•ื ืคืจื•ืงืกื™ ืชืžื•ื ื”. ื›ืœื•ืžืจ, ืฉืจืช ืื—ื“ ืžื™ื•ืขื“ ืœื”ืขืœืืช ืชืžื•ื ื•ืช, ื•ืื—ืจ ื”ื•ื ืœื”ืขืœืื”. ื›ืขืช ืœื ืจืง ืชืžื•ื ื•ืช ื ื˜ืขื ื•ืช, ืืœื ื”ืฉื ื ืฉืžืจ.

ื”ืฉืจืชื™ื ื”ืืœื” ืœืกื™ื™ื ื”ืคืขืœื•ืช HTTPSื›ื“ื™ ืœื”ืกื™ืจ ืืช ืขื•ืžืก ื”ืžืขื‘ื“ ืžื”ืื—ืกื•ืŸ. ื›ืžื• ื›ืŸ, ืžื›ื™ื•ื•ืŸ ืฉืงื•ื‘ืฆื™ ืžืฉืชืžืฉ ืžืขื•ื‘ื“ื™ื ื‘ืฉืจืชื™ื ืืœื•, ื›ื›ืœ ืฉืžื™ื“ืข ืจื’ื™ืฉ ืคื—ื•ืช ืžืื•ื—ืกืŸ ื‘ืžื›ื•ื ื•ืช ืืœื•, ื›ืš ื™ื™ื˜ื‘. ืœื“ื•ื’ืžื”, ืžืคืชื—ื•ืช ื”ืฆืคื ื” ืฉืœ HTTPS.

ืžื›ื™ื•ื•ืŸ ืฉื”ืžื›ื•ื ื•ืช ืกื’ื•ืจื•ืช ืขืœ ื™ื“ื™ ื”ืžื›ื•ื ื•ืช ื”ืื—ืจื•ืช ืฉืœื ื•, ืื ื• ื™ื›ื•ืœื™ื ืœื”ืจืฉื•ืช ืœืขืฆืžื ื• ืœื ืœืชืช ืœื”ื ื›ืชื•ื‘ื•ืช IP ื—ื™ืฆื•ื ื™ื•ืช "ืœื‘ื ื•ืช", ื• ืชืŸ "ืืคื•ืจ". ื›ืš ื—ืกื›ื ื• ื‘ืžืื’ืจ ื”-IP ื•ื”ื‘ื˜ื—ื ื• ืœื”ื’ืŸ ืขืœ ื”ืžื›ื•ื ื•ืช ืžื’ื™ืฉื” ื—ื™ืฆื•ื ื™ืช - ืคืฉื•ื˜ ืื™ืŸ IP ืœื”ื™ื›ื ืก ืืœื™ื•.

ื—ื•ืกืŸ ืขืœ ื›ืชื•ื‘ื•ืช IP ืžืฉื•ืชืคื•ืช. ืžื‘ื—ื™ื ืช ืกื‘ื™ืœื•ืช ืœืชืงืœื•ืช, ื”ืกื›ื™ืžื” ืคื•ืขืœืช ืื•ืชื• ื”ื“ื‘ืจ โ€“ ืœืžืกืคืจ ืฉืจืชื™ื ืคื™ื–ื™ื™ื ื™ืฉ IP ืคื™ื–ื™ ืžืฉื•ืชืฃ, ื•ื”ื—ื•ืžืจื” ืฉืœืคื ื™ื”ื ื‘ื•ื—ืจืช ืœืืŸ ืœืฉืœื•ื— ืืช ื”ื‘ืงืฉื”. ืื ื™ ืื“ื‘ืจ ืขืœ ืืคืฉืจื•ื™ื•ืช ืื—ืจื•ืช ืžืื•ื—ืจ ื™ื•ืชืจ.

ื”ื ืงื•ื“ื” ื”ืฉื ื•ื™ื” ื‘ืžื—ืœื•ืงืช ื”ื™ื ืฉื‘ืžืงืจื” ื–ื” ื”ืœืงื•ื— ืฉื•ืžืจ ืขืœ ืคื—ื•ืช ืงืฉืจื™ื. ืื ื™ืฉ ืื•ืชื• IP ืขื‘ื•ืจ ืžืกืคืจ ืžื›ื•ื ื•ืช - ืขื ืื•ืชื• ืžืืจื—: pu.vk.com ืื• pp.vk.com, ืœื“ืคื“ืคืŸ ื”ืœืงื•ื— ื™ืฉ ื”ื’ื‘ืœื” ืขืœ ืžืกืคืจ ื”ื‘ืงืฉื•ืช ื‘ื•-ื–ืžื ื™ืช ืœืžืืจื— ืื—ื“. ืื‘ืœ ื‘ืชืงื•ืคื” ืฉืœ HTTP/2 ื‘ื›ืœ ืžืงื•ื, ืื ื™ ืžืืžื™ืŸ ืฉื–ื” ื›ื‘ืจ ืœื ื›ืœ ื›ืš ืจืœื•ื•ื ื˜ื™.

ื”ื—ื™ืกืจื•ืŸ ื”ื‘ืจื•ืจ ืฉืœ ื”ืชื•ื›ื ื™ืช ื”ื•ื ืฉื”ื™ื ื—ื™ื™ื‘ืช ืœืฉืื•ื‘ ืืช ื›ืœ ื”ืชื ื•ืขื”, ืฉืขื•ื‘ืจ ืœืื—ืกื•ืŸ, ื“ืจืš ืฉืจืช ืื—ืจ. ืžื›ื™ื•ื•ืŸ ืฉืื ื• ืžื–ืจื™ืžื™ื ืชื ื•ืขื” ื“ืจืš ืžื›ื•ื ื•ืช, ืื™ื ื ื• ืขื“ื™ื™ืŸ ืœื ื™ื›ื•ืœื™ื ืœืฉืื•ื‘ ืชื ื•ืขื” ื›ื‘ื“ื”, ืœืžืฉืœ, ื•ื™ื“ืื•, ื‘ืืžืฆืขื•ืช ืื•ืชื” ืชื›ื ื™ืช. ืื ื• ืžืฉื“ืจื™ื ืื•ืชื• ื™ืฉื™ืจื•ืช - ื—ื™ื‘ื•ืจ ื™ืฉื™ืจ ื ืคืจื“ ืœืื—ืกื•ืŸ ื ืคืจื“ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ื•ื™ื“ืื•. ืื ื• ืžืขื‘ื™ืจื™ื ืชื•ื›ืŸ ืงืœ ื™ื•ืชืจ ื‘ืืžืฆืขื•ืช ืคืจื•ืงืกื™.

ืœื ืžื–ืžืŸ ืงื™ื‘ืœื ื• ื’ืจืกื” ืžืฉื•ืคืจืช ืฉืœ ืคืจื•ืงืกื™. ืขื›ืฉื™ื• ืื ื™ ืื’ื™ื“ ืœืš ืื™ืš ื”ื ืฉื•ื ื™ื ืžืืœื” ืจื’ื™ืœื™ื ื•ืžื“ื•ืข ื–ื” ื”ื›ืจื—ื™.

ืฉืžืฉ

ื‘ืกืคื˜ืžื‘ืจ 2017, ืื•ืจืงืœ, ืฉืจื›ืฉื” ื‘ืขื‘ืจ ืืช ืกืืŸ, ืคื™ื˜ืจ ืžืกืคืจ ืขืฆื•ื ืฉืœ ืขื•ื‘ื“ื™ Sun. ืืคืฉืจ ืœื•ืžืจ ืฉื‘ืจื’ืข ื–ื” ื”ื—ื‘ืจื” ื—ื“ืœื” ืžืœื”ืชืงื™ื™ื. ื›ืืฉืจ ื‘ื—ืจื• ืฉื ืœืžืขืจื›ืช ื”ื—ื“ืฉื”, ื”ืžื ื”ืœื™ื ืฉืœื ื• ื”ื—ืœื™ื˜ื• ืœื—ืœื•ืง ื›ื‘ื•ื“ ืœื–ื›ืจื” ืฉืœ ื—ื‘ืจื” ื–ื• ื•ืงืจืื• ืœืžืขืจื›ืช ื”ื—ื“ืฉื” Sun. ื‘ื™ื ื™ื ื• ืื ื• ืคืฉื•ื˜ ืงื•ืจืื™ื ืœื” "ืฉืžืฉื•ืช".

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืœ-pp ื”ื™ื• ื›ืžื” ื‘ืขื™ื•ืช. IP ืื—ื“ ืœืงื‘ื•ืฆื” - ืžื˜ืžื•ืŸ ืœื ื™ืขื™ืœ. ืžืกืคืจ ืฉืจืชื™ื ืคื™ื–ื™ื™ื ื—ื•ืœืงื™ื ื›ืชื•ื‘ืช IP ืžืฉื•ืชืคืช, ื•ืื™ืŸ ื“ืจืš ืœืฉืœื•ื˜ ืœืื™ื–ื” ืฉืจืช ื”ื‘ืงืฉื” ืชืคื ื”. ืœื›ืŸ, ืื ื‘ืื™ื ืžืฉืชืžืฉื™ื ืฉื•ื ื™ื ืขื‘ื•ืจ ืื•ืชื• ืงื•ื‘ืฅ, ืื– ืื ื™ืฉ ืžื˜ืžื•ืŸ ื‘ืฉืจืชื™ื ืืœื•, ื”ืงื•ื‘ืฅ ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื‘ืžื˜ืžื•ืŸ ืฉืœ ื›ืœ ืฉืจืช. ื–ื• ืชื•ื›ื ื™ืช ืžืื•ื“ ืœื ื™ืขื™ืœื”, ืื‘ืœ ืœื ื ื™ืชืŸ ื”ื™ื” ืœืขืฉื•ืช ื“ื‘ืจ.

ื›ืชื•ืฆืื” ืžื›ืš - ืื ื—ื ื• ืœื ื™ื›ื•ืœื™ื ืœืคื–ืจ ืชื•ื›ืŸ, ืžื›ื™ื•ื•ืŸ ืฉืื™ื ื ื• ื™ื›ื•ืœื™ื ืœื‘ื—ื•ืจ ืฉืจืช ืกืคืฆื™ืคื™ ืœืงื‘ื•ืฆื” ื–ื• - ื™ืฉ ืœื”ื IP ืžืฉื•ืชืฃ. ื’ื ืžืกื™ื‘ื•ืช ืคื ื™ืžื™ื•ืช ืฉื™ืฉ ืœื ื• ืœื ื ื™ืชืŸ ื”ื™ื” ืœื”ืชืงื™ืŸ ืฉืจืชื™ื ื›ืืœื” ื‘ืื–ื•ืจื™ื. ื”ื ืขืžื“ื• ืจืง ื‘ืกื ื˜ ืคื˜ืจื‘ื•ืจื’.

ืขื ื”ืฉืžืฉื•ืช ืฉื™ื ื™ื ื• ืืช ืฉื™ื˜ืช ื”ื‘ื—ื™ืจื”. ืขื›ืฉื™ื• ื™ืฉ ืœื ื• ื ื™ืชื•ื‘ anycast: ื ื™ืชื•ื‘ ื“ื™ื ืžื™, Anycast, ื“ืžื•ืŸ ื‘ื“ื™ืงื” ืขืฆืžื™ืช. ืœื›ืœ ืฉืจืช ื™ืฉ IP ืื™ืฉื™ ืžืฉืœื•, ืื‘ืœ ืชืช ืจืฉืช ืžืฉื•ืชืคืช. ื”ื›ืœ ืžื•ื’ื“ืจ ื‘ืฆื•ืจื” ื›ื–ื• ืฉืื ืฉืจืช ืื—ื“ ื ื›ืฉืœ, ื”ืชืขื‘ื•ืจื” ืžืชืคื–ืจืช ืขืœ ืคื ื™ ื”ืฉืจืชื™ื ื”ืื—ืจื™ื ืฉืœ ืื•ืชื” ืงื‘ื•ืฆื” ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™. ื›ืขืช ื ื™ืชืŸ ืœื‘ื—ื•ืจ ืฉืจืช ืกืคืฆื™ืคื™, ืื™ืŸ ืžื˜ืžื•ืŸ ืžื™ื•ืชืจ, ื•ื”ืืžื™ื ื•ืช ืœื ื”ื•ืฉืคืขื”.

ืชืžื™ื›ื” ื‘ืžืฉืงืœ. ื›ืขืช ืื ื• ื™ื›ื•ืœื™ื ืœื”ืจืฉื•ืช ืœืขืฆืžื ื• ืœื”ืชืงื™ืŸ ืžื›ื•ื ื•ืช ื‘ืขืœื•ืช ื”ืกืคืง ืฉื•ื ื” ืœืคื™ ื”ืฆื•ืจืš, ื•ื’ื, ื‘ืžืงืจื” ืฉืœ ื‘ืขื™ื•ืช ื–ืžื ื™ื•ืช, ืœืฉื ื•ืช ืืช ืžืฉืงืœืŸ ืฉืœ "ื”ืฉืžืฉื•ืช" ื”ืคื•ืขืœื•ืช ื›ื“ื™ ืœื”ืคื—ื™ืช ืืช ื”ืขื•ืžืก ืขืœื™ื”ืŸ, ื›ืš ืฉื”ืŸ "ื™ื ื•ื—ื•" ื•ื™ืชื—ื™ืœื• ืœืขื‘ื•ื“ ืฉื•ื‘.

ืฉื™ืชื•ืฃ ืœืคื™ ืžื–ื”ื” ืชื•ื›ืŸ. ื“ื‘ืจ ืžืฆื—ื™ืง ื‘-Sharding: ื‘ื“ืจืš ื›ืœืœ ืื ื• ื ื•ืชื ื™ื ืชื•ื›ืŸ ื›ืš ืฉืžืฉืชืžืฉื™ื ืฉื•ื ื™ื ืขื•ื‘ืจื™ื ืœืื•ืชื• ืงื•ื‘ืฅ ื“ืจืš ืื•ืชื” "ืฉืžืฉ" ื›ืš ืฉื™ื”ื™ื” ืœื”ื ืžื˜ืžื•ืŸ ืžืฉื•ืชืฃ.

ืœืื—ืจื•ื ื” ื”ืฉืงื ื• ืืช ืืคืœื™ืงืฆื™ื™ืช "ืชืœืชืŸ". ื–ื”ื• ื—ื™ื“ื•ืŸ ืžืงื•ื•ืŸ ื‘ืฉื™ื“ื•ืจ ื—ื™, ืฉื‘ื• ื”ืžืืจื— ืฉื•ืืœ ืฉืืœื•ืช ื•ื”ืžืฉืชืžืฉื™ื ืขื•ื ื™ื ื‘ื–ืžืŸ ืืžืช, ื‘ื•ื—ืจื™ื ืืคืฉืจื•ื™ื•ืช. ืœืืคืœื™ืงืฆื™ื” ื™ืฉ ืฆ'ืื˜ ืฉื‘ื• ืžืฉืชืžืฉื™ื ื™ื›ื•ืœื™ื ืœืฉื•ื—ื—. ื™ื›ื•ืœ ืœื”ืชื—ื‘ืจ ืœืฉื™ื“ื•ืจ ื‘ื• ื–ืžื ื™ืช ื™ื•ืชืจ ืž-100 ืืœืฃ ืื™ืฉ. ื›ื•ืœื ื›ื•ืชื‘ื™ื ื”ื•ื“ืขื•ืช ืฉื ืฉืœื—ื•ืช ืœื›ืœ ื”ืžืฉืชืชืคื™ื, ื•ืื•ื•ืื˜ืจ ืžื’ื™ืข ื™ื—ื“ ืขื ื”ื”ื•ื“ืขื”. ืื 100 ืืœืฃ ืื ืฉื™ื ื‘ืื™ื ื‘ืฉื‘ื™ืœ ืื•ื•ื˜ืืจ ืื—ื“ ื‘"ืฉืžืฉ", ืื– ื–ื” ื™ื›ื•ืœ ืœืคืขืžื™ื ืœื”ืชื’ืœื’ืœ ืžืื—ื•ืจื™ ืขื ืŸ.

ืขืœ ืžื ืช ืœืขืžื•ื“ ื‘ืคืจืฆื™ ื‘ืงืฉื•ืช ืœืื•ืชื• ืงื•ื‘ืฅ, ืขื‘ื•ืจ ืกื•ื’ ืžืกื•ื™ื ืฉืœ ืชื•ื›ืŸ ืื ื• ืžืคืขื™ืœื™ื ืกื›ืžื” ืžื˜ื•ืคืฉืช ืฉืžืคื™ืฆื” ืงื‘ืฆื™ื ืขืœ ืคื ื™ ื›ืœ ื”"ืฉืžืฉื•ืช" ื”ื–ืžื™ื ื•ืช ื‘ืื–ื•ืจ.

ืฉืžืฉ ืžื‘ืคื ื™ื

ืคืจื•ืงืกื™ ื”ืคื•ืš ื‘-nginx, ืฉืžื•ืจ ื‘ืžื˜ืžื•ืŸ ื‘-RAM ืื• ื‘ื“ื™ืกืงื™ื ืžื”ื™ืจื™ื ืฉืœ Optane/NVMe. ื“ื•ื’ืžื: http://sun4-2.userapi.com/c100500/path - ืงื™ืฉื•ืจ ืœ"ืฉืžืฉ", ืฉื ืžืฆืืช ื‘ืื–ื•ืจ ื”ืจื‘ื™ืขื™, ืงื‘ื•ืฆืช ื”ืฉืจืชื™ื ื”ืฉื ื™ื™ื”. ื–ื” ืกื•ื’ืจ ืืช ืงื•ื‘ืฅ ื”ื ืชื™ื‘, ืฉื ืžืฆื ืคื™ื–ื™ืช ืขืœ ืฉืจืช 100500.

ืกืœื™ืง

ืื ื• ืžื•ืกื™ืคื™ื ืขื•ื“ ืฆื•ืžืช ืื—ื“ ืœืชื›ื ื™ืช ื”ืืจื›ื™ื˜ืงื˜ื•ื ื™ืช ืฉืœื ื• - ืกื‘ื™ื‘ืช ื”ืžื˜ืžื•ืŸ.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืœื”ืœืŸ ืชืจืฉื™ื ื”ืคืจื™ืกื” ืžื˜ืžื•ื ื™ื ืื–ื•ืจื™ื™ื, ื™ืฉ ื‘ืขืจืš 20 ืžื”ื. ืืœื• ื”ื ื”ืžืงื•ืžื•ืช ืฉื‘ื”ื ื ืžืฆืื™ื ืžื˜ืžื•ื ื™ื ื•"ืฉืžืฉื•ืช", ืฉื™ื›ื•ืœื™ื ืœืื—ืกืŸ ืชื ื•ืขื” ื“ืจืš ืขืฆืžื.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื–ื”ื• ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ ืฉืœ ืชื•ื›ืŸ ืžื•ืœื˜ื™ืžื“ื™ื”; ืœื ืžืื•ื—ืกื ื™ื ื›ืืŸ ื ืชื•ื ื™ ืžืฉืชืžืฉ - ืจืง ืžื•ื–ื™ืงื”, ื•ื™ื“ืื•, ืชืžื•ื ื•ืช.

ื›ื“ื™ ืœืงื‘ื•ืข ืืช ืื–ื•ืจ ื”ืžืฉืชืžืฉ, ืื ื• ืื ื• ืื•ืกืคื™ื ืงื™ื“ื•ืžื•ืช ืจืฉืช BGP ืฉื”ื•ื›ืจื–ื• ื‘ืื–ื•ืจื™ื. ื‘ืžืงืจื” ืฉืœ fallback, ืขืœื™ื ื• ื’ื ืœื ืชื— ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ geoip ืื ืœื ื”ืฆืœื—ื ื• ืœืžืฆื•ื ืืช ื”-IP ืœืคื™ ืงื™ื“ื•ืžื•ืช. ืื ื• ืงื•ื‘ืขื™ื ืืช ื”ืื–ื•ืจ ืœืคื™ ื”-IP ืฉืœ ื”ืžืฉืชืžืฉ. ื‘ืงื•ื“ ื ื•ื›ืœ ืœื”ืกืชื›ืœ ืขืœ ืื–ื•ืจ ืื—ื“ ืื• ื™ื•ืชืจ ืฉืœ ื”ืžืฉืชืžืฉ - ืื•ืชืŸ ื ืงื•ื“ื•ืช ืฉื”ื•ื ื”ื›ื™ ืงืจื•ื‘ ืืœื™ื”ืŸ ืžื‘ื—ื™ื ื” ื’ื™ืื•ื’ืจืคื™ืช.

ืื™ืš ื–ื” ืขื•ื‘ื“?

ืื ื• ืกื•ืคืจื™ื ืืช ื”ืคื•ืคื•ืœืจื™ื•ืช ืฉืœ ืงื‘ืฆื™ื ืœืคื™ ืื–ื•ืจ. ื™ืฉ ืืช ื”ืžืกืคืจ ืฉืœ ื”ืžื˜ืžื•ืŸ ื”ืื–ื•ืจื™ ืฉื‘ื• ื”ืžืฉืชืžืฉ ื ืžืฆื, ื•ืžื–ื”ื” ื”ืงื•ื‘ืฅ - ืื ื—ื ื• ืœื•ืงื—ื™ื ืืช ื”ืฆืžื“ ื”ื–ื” ื•ืžื’ื“ื™ืœื™ื ืืช ื”ื“ื™ืจื•ื’ ืขื ื›ืœ ื”ื•ืจื“ื”.

ื‘ืžืงื‘ื™ืœ, ืฉื“ื™ื - ืฉื™ืจื•ืชื™ื ื‘ืื–ื•ืจื™ื - ืžื’ื™ืขื™ื ืžื“ื™ ืคืขื ืœ-API ื•ืื•ืžืจื™ื: "ืื ื™ ืžื˜ืžื•ืŸ ื›ื–ื” ื•ื›ื–ื”, ืชืŸ ืœื™ ืจืฉื™ืžื” ืฉืœ ื”ืงื‘ืฆื™ื ื”ื›ื™ ืคื•ืคื•ืœืจื™ื™ื ื‘ืื–ื•ืจ ืฉืœื™ ืฉืขื“ื™ื™ืŸ ืœื ืืฆืœื™. โ€ ื”-API ืžืกืคืง ื—ื‘ื•ืจื” ืฉืœ ืงื‘ืฆื™ื ืžืžื•ื™ื ื™ื ืœืคื™ ื“ื™ืจื•ื’, ื”ื“ืžื•ืŸ ืžื•ืจื™ื“ ืื•ืชื, ืœื•ืงื— ืื•ืชื ืœืื–ื•ืจื™ื ื•ืžืฉื ืืช ื”ืงื‘ืฆื™ื. ื–ื” ื”ื”ื‘ื“ืœ ื”ืžื”ื•ืชื™ ื‘ื™ืŸ pu/pp ืœ-Sun ืžืžื˜ืžื•ื ื™ื: ื”ื ื ื•ืชื ื™ื ืืช ื”ืงื•ื‘ืฅ ื“ืจืš ืขืฆืžื ืžื™ื“, ื’ื ืื ื”ืงื•ื‘ืฅ ื”ื–ื” ืœื ื ืžืฆื ื‘ืžื˜ืžื•ืŸ, ื•ื”ืžื˜ืžื•ืŸ ืงื•ื“ื ื›ืœ ืžื•ืจื™ื“ ืœืขืฆืžื• ืืช ื”ืงื•ื‘ืฅ, ื•ืื– ืžืชื—ื™ืœ ืœื”ื—ื–ื™ืจ ืื•ืชื•.

ื‘ืžืงืจื” ื”ื–ื” ืื ื—ื ื• ืžืงื‘ืœื™ื ืชื•ื›ืŸ ืงืจื•ื‘ ื™ื•ืชืจ ืœืžืฉืชืžืฉื™ื ื•ืคื™ื–ื•ืจ ืขื•ืžืก ื”ืจืฉืช. ืœื“ื•ื’ืžื”, ืจืง ืžื”ืžื˜ืžื•ืŸ ืฉืœ ืžื•ืกืงื‘ื” ืื ื• ืžืคื™ืฆื™ื ื™ื•ืชืจ ืž-1 Tbit/s ื‘ืฉืขื•ืช ื”ืฉื™ื.

ืื‘ืœ ื™ืฉ ื‘ืขื™ื•ืช - ืฉืจืชื™ ืžื˜ืžื•ืŸ ืื™ื ื ื’ื•ืžื™. ืขื‘ื•ืจ ืชื•ื›ืŸ ืกื•ืคืจ ืคื•ืคื•ืœืจื™, ืœืคืขืžื™ื ืื™ืŸ ืžืกืคื™ืง ืจืฉืช ืœืฉืจืช ื ืคืจื“. ืฉืจืชื™ ื”ืžื˜ืžื•ืŸ ืฉืœื ื• ื”ื 40-50 Gbit/s, ืื‘ืœ ื™ืฉ ืชื•ื›ืŸ ืฉืกื•ืชื ืœื’ืžืจื™ ืขืจื•ืฅ ื›ื–ื”. ืื ื• ืžืชืงื“ืžื™ื ืœืงืจืืช ื™ื™ืฉื•ื ืื—ืกื•ืŸ ืฉืœ ื™ื•ืชืจ ืžืขื•ืชืง ืื—ื“ ืฉืœ ืงื‘ืฆื™ื ืคื•ืคื•ืœืจื™ื™ื ื‘ืื–ื•ืจ. ืื ื™ ืžืงื•ื•ื” ืฉื ื•ื›ืœ ืœื™ื™ืฉื ืืช ื–ื” ืขื“ ืกื•ืฃ ื”ืฉื ื”.

ื”ืกืชื›ืœื ื• ืขืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื”ื›ืœืœื™ืช.

  • ืฉืจืชื™ื ืงื“ืžื™ื™ื ืฉืžืงื‘ืœื™ื ื‘ืงืฉื•ืช.
  • Backends ื›ื™ ืชื”ืœื™ืš ื‘ืงืฉื•ืช.
  • ืžื—ืกื ื™ื ืกื’ื•ืจื™ื ืขืœ ื™ื“ื™ ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ืคืจื•ืงืกื™.
  • ืžื˜ืžื•ื ื™ื ืื–ื•ืจื™ื™ื.

ืžื” ื—ืกืจ ื‘ืชืจืฉื™ื ื”ื–ื”? ื›ืžื•ื‘ืŸ, ืžืื’ืจื™ ื”ืžื™ื“ืข ืฉื‘ื”ื ืื ื• ืžืื—ืกื ื™ื ื ืชื•ื ื™ื.

ืžืกื“ื™ ื ืชื•ื ื™ื ืื• ืžื ื•ืขื™ื

ืื ื—ื ื• ืงื•ืจืื™ื ืœื”ื ืœื ืžืกื“ื™ ื ืชื•ื ื™ื, ืืœื ืžื ื•ืขื™ื - ืžื ื•ืขื™ื, ื›ื™ ืœืžืขืฉื” ืื™ืŸ ืœื ื• ืžืกื“ื™ ื ืชื•ื ื™ื ื‘ืžื•ื‘ืŸ ื”ืžืงื•ื‘ืœ.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื–ื”ื• ืืžืฆืขื™ ื”ื›ืจื—ื™.. ื–ื” ืงืจื” ื‘ื’ืœืœ ืฉื‘ืฉื ื™ื 2008-2009, ื›ืืฉืจ ืœ-VK ื”ื™ื™ืชื” ืฆืžื™ื—ื” ื ืคื™ืฆื” ื‘ืคื•ืคื•ืœืจื™ื•ืช, ื”ืคืจื•ื™ืงื˜ ืขื‘ื“ ื›ื•ืœื• ืขืœ MySQL ื•-Memcache ื•ื”ื™ื• ื‘ืขื™ื•ืช. MySQL ืื”ื‘ ืœืงืจื•ืก ื•ืœื”ืฉื—ื™ืช ืงื‘ืฆื™ื, ื•ืœืื—ืจ ืžื›ืŸ ื”ื•ื ืœื ื”ืชืื•ืฉืฉ, ื•-Memcache ื™ืจื“ ื‘ื”ื“ืจื’ื” ื‘ื‘ื™ืฆื•ืขื™ื ื•ื”ื™ื” ืฆืจื™ืš ืœื”ืคืขื™ืœ ืื•ืชื• ืžื—ื“ืฉ.

ืžืกืชื‘ืจ ืฉืœืคืจื•ื™ืงื˜ ื”ื”ื•ืœืš ื•ืคื•ืคื•ืœืจื™ ื”ื™ื” ืื—ืกื•ืŸ ืžืชืžืฉืš, ืืฉืจ ืžืฉื—ื™ืช ื ืชื•ื ื™ื, ื•ืžื˜ืžื•ืŸ ืฉืžืื˜. ื‘ืชื ืื™ื ื›ืืœื”, ืงืฉื” ืœืคืชื— ืคืจื•ื™ืงื˜ ืฆื•ืžื—. ื”ื•ื—ืœื˜ ืœื ืกื•ืช ืœืฉื›ืชื‘ ืืช ื”ื“ื‘ืจื™ื ื”ืงืจื™ื˜ื™ื™ื ืฉื”ืคืจื•ื™ืงื˜ ื”ืชืžืงื“ ื‘ื”ื ืขืœ ื”ืื•ืคื ื™ื™ื ืฉืœื ื•.

ื”ืคืชืจื•ืŸ ื”ืฆืœื™ื—. ื”ื™ื™ืชื” ื”ื–ื“ืžื ื•ืช ืœืขืฉื•ืช ื–ืืช, ื›ืžื• ื’ื ื”ื›ืจื— ืงื™ืฆื•ื ื™, ืžื›ื™ื•ื•ืŸ ืฉื“ืจื›ื™ื ืื—ืจื•ืช ืฉืœ ืงื ื” ืžื™ื“ื” ืœื ื”ื™ื• ืงื™ื™ืžื•ืช ื‘ืื•ืชื” ืชืงื•ืคื”. ืœื ื”ื™ื• ื—ื‘ื•ืจื” ืฉืœ ืžืกื“ื™ ื ืชื•ื ื™ื, NoSQL ืขื“ื™ื™ืŸ ืœื ื”ื™ื” ืงื™ื™ื, ื”ื™ื• ืจืง MySQL, Memcache, PostrgreSQL - ื•ื–ื”ื•.

ืคืขื•ืœื” ืื•ื ื™ื‘ืจืกืœื™ืช. ื”ืคื™ืชื•ื— ื”ื•ื‘ืœ ืขืœ ื™ื“ื™ ืฆื•ื•ืช ืžืคืชื—ื™ C ืฉืœื ื• ื•ื”ื›ืœ ื ืขืฉื” ื‘ืฆื•ืจื” ืขืงื‘ื™ืช. ืœืœื ืงืฉืจ ืœืžื ื•ืข, ืœื›ื•ืœื ื”ื™ื” ื‘ืขืจืš ืื•ืชื• ืคื•ืจืžื˜ ืงื•ื‘ืฅ ืฉื ื›ืชื‘ ืœื“ื™ืกืง, ืื•ืชื ืคืจืžื˜ืจื™ื ืฉืœ ื”ืฉืงื”, ืขื™ื‘ื“ื• ืื•ืชื•ืช ื‘ืื•ืชื• ืื•ืคืŸ, ื•ื”ืชื ื”ื’ื• ื‘ืขืจืš ืื•ืชื• ื“ื‘ืจ ื‘ืžืงืจื” ืฉืœ ืžืฆื‘ื™ ืงืฆื” ื•ื‘ืขื™ื•ืช. ืขื ืฆืžื™ื—ืช ื”ืžื ื•ืขื™ื ื ื•ื— ืœืžื ื”ืœื™ื ืœืชืคืขืœ ืืช ื”ืžืขืจื›ืช - ืื™ืŸ ื’ืŸ ื—ื™ื•ืช ืฉืฆืจื™ืš ืœืชื—ื–ืง, ื•ื”ื ืฆืจื™ื›ื™ื ืœืœืžื•ื“ ืžื—ื“ืฉ ื›ื™ืฆื“ ืœืชืคืขืœ ื›ืœ ืžืกื“ ื ืชื•ื ื™ื ื—ื“ืฉ ืฉืœ ืฆื“ ืฉืœื™ืฉื™, ืžื” ืฉืืคืฉืจ ืœื”ื’ื“ื™ืœ ื‘ืžื”ื™ืจื•ืช ื•ื‘ื ื•ื—ื•ืช ื”ืžืกืคืจ ืฉืœื”ื.

ืกื•ื’ื™ ืžื ื•ืขื™ื

ื”ืฆื•ื•ืช ื›ืชื‘ ืœื ืžืขื˜ ืžื ื•ืขื™ื. ื”ื ื” ืจืง ื—ืœืง ืžื”ื: ื—ื‘ืจ, ืจืžื–ื™ื, ืชืžื•ื ื”, ipdb, ืื•ืชื™ื•ืช, ืจืฉื™ืžื•ืช, ื™ื•ืžื ื™ื, memcached, meowdb, ื—ื“ืฉื•ืช, nostradamus, ืชืžื•ื ื”, ืจืฉื™ืžื•ืช ื”ืฉืžืขื”, pmemcached, ืืจื’ื– ื—ื•ืœ, ื—ื™ืคื•ืฉ, ืื—ืกื•ืŸ, ืœื™ื™ืงื™ื, ืžืฉื™ืžื•ืช, โ€ฆ

ืขื‘ื•ืจ ื›ืœ ืžืฉื™ืžื” ื”ื“ื•ืจืฉืช ืžื‘ื ื” ื ืชื•ื ื™ื ืกืคืฆื™ืคื™ ืื• ืžืขื‘ื“ืช ื‘ืงืฉื•ืช ืœื ื˜ื™ืคื•ืกื™ื•ืช, ืฆื•ื•ืช C ื›ื•ืชื‘ ืžื ื•ืข ื—ื“ืฉ. ืœืžื” ืœื.

ื™ืฉ ืœื ื• ืžื ื•ืข ื ืคืจื“ ื ืฉืœื— ืœืžื—ืฉื‘, ืฉื“ื•ืžื” ืœืจื’ื™ืœ, ืื‘ืœ ืขื ืฉืœืœ ื“ื‘ืจื™ื ื˜ื•ื‘ื™ื, ื•ืฉืื™ื ื• ืžืื˜. ืœื ืงืœื™ืงื”ืื•ืก, ืื‘ืœ ื–ื” ื’ื ืขื•ื‘ื“. ื–ืžื™ืŸ ื‘ื ืคืจื“ pmemcached - ื”ืื ืžืงื‘ืฅ ืžืงื‘ืฅ ืžืชืžืฉืš, ืืฉืจ ื™ื›ื•ืœ ื’ื ืœืื—ืกืŸ ื ืชื•ื ื™ื ื‘ื“ื™ืกืง, ื™ืชืจ ืขืœ ื›ืŸ, ืžืืฉืจ ืžืชืื™ื ืœ-RAM, ื›ื“ื™ ืœื ืœืื‘ื“ ื ืชื•ื ื™ื ื‘ืขืช ื”ืคืขืœื” ืžื—ื“ืฉ. ื™ืฉื ื ืžื ื•ืขื™ื ืฉื•ื ื™ื ืœืžืฉื™ืžื•ืช ื‘ื•ื“ื“ื•ืช: ืชื•ืจื™ื, ืจืฉื™ืžื•ืช, ืกื˜ื™ื - ื›ืœ ืžื” ืฉื”ืคืจื•ื™ืงื˜ ืฉืœื ื• ื“ื•ืจืฉ.

ืืฉื›ื•ืœื•ืช

ืžื ืงื•ื“ืช ืžื‘ื˜ ืฉืœ ืงื•ื“, ืื™ืŸ ืฆื•ืจืš ืœื—ืฉื•ื‘ ืขืœ ืžื ื•ืขื™ื ืื• ืžืกื“ื™ ื ืชื•ื ื™ื ื›ืขืœ ืชื”ืœื™ื›ื™ื, ื™ืฉื•ื™ื•ืช ืื• ืžื•ืคืขื™ื. ื”ืงื•ื“ ืขื•ื‘ื“ ื‘ืžื™ื•ื—ื“ ืขื ืืฉื›ื•ืœื•ืช, ืขื ืงื‘ื•ืฆื•ืช ืฉืœ ืžื ื•ืขื™ื - ืกื•ื’ ืื—ื“ ืœื›ืœ ืืฉื›ื•ืœ. ื ื ื™ื— ืฉื™ืฉ ืžืงื‘ืฅ ืฉืžื•ืจ - ื–ื” ืจืง ืงื‘ื•ืฆื” ืฉืœ ืžื›ื•ื ื•ืช.

ื”ืงื•ื“ ืœื ืฆืจื™ืš ืœื“ืขืช ืืช ื”ืžื™ืงื•ื ื”ืคื™ื–ื™, ื”ื’ื•ื“ืœ ืื• ืžืกืคืจ ื”ืฉืจืชื™ื ื‘ื›ืœืœ. ื”ื•ื ื”ื•ืœืš ืœืืฉื›ื•ืœ ื‘ืืžืฆืขื•ืช ืžื–ื”ื” ืžืกื•ื™ื.

ื›ื“ื™ ืฉื–ื” ื™ืขื‘ื•ื“, ืืชื” ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ื™ืฉื•ืช ืื—ืช ื ื•ืกืคืช ืฉื ืžืฆืืช ื‘ื™ืŸ ื”ืงื•ื“ ืœืžื ื•ืขื™ื - ืคืจื•ืงืกื™.

ืคืจื•ืงืกื™ RPC

ืคืจื•ืงืกื™ ืื•ื˜ื•ื‘ื•ืก ืžื—ื‘ืจ, ืฉืขืœื™ื• ืคื•ืขืœ ื›ืžืขื˜ ื›ืœ ื”ืืชืจ. ื‘ืžืงื‘ื™ืœ ื™ืฉ ืœื ื• ืื™ืŸ ื’ื™ืœื•ื™ ืฉื™ืจื•ืช - ื‘ืžืงื•ื ื–ืืช, ื™ืฉ ืชืฆื•ืจื” ืขื‘ื•ืจ ื”-proxy ื”ื–ื”, ืฉื™ื•ื“ืข ืืช ื”ืžื™ืงื•ื ืฉืœ ื›ืœ ื”ืืฉื›ื•ืœื•ืช ื•ื›ืœ ื”ืจืกื™ืกื™ื ืฉืœ ื”ืืฉื›ื•ืœ ื”ื–ื”. ื–ื” ืžื” ืฉืžื ื”ืœื™ื ืขื•ืฉื™ื.

ืœืžืชื›ื ืชื™ื ืœื ืื›ืคืช ื‘ื›ืœืœ ื›ืžื”, ืื™ืคื” ื•ืžื” ื–ื” ืขื•ืœื” - ื”ื ืคืฉื•ื˜ ื”ื•ืœื›ื™ื ืœืืฉื›ื•ืœ. ื–ื” ืžืืคืฉืจ ืœื ื• ื”ืจื‘ื”. ื‘ืขืช ืงื‘ืœืช ื‘ืงืฉื”, ื”-proxy ืžืคื ื” ืืช ื”ื‘ืงืฉื”, ื‘ื™ื•ื“ืขื• ืœืืŸ - ื”ื•ื ืงื•ื‘ืข ื–ืืช ื‘ืขืฆืžื•.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื‘ืžืงืจื” ื–ื”, ืคืจื•ืงืกื™ ืžื”ื•ื•ื” ื ืงื•ื“ืช ื”ื’ื ื” ืžืคื ื™ ื›ืฉืœ ื‘ืฉื™ืจื•ืช. ืื ืžื ื•ืข ื›ืœืฉื”ื• ืžืื˜ ืื• ืงื•ืจืก, ืื– ื”ืคืจื•ืงืกื™ ืžื‘ื™ืŸ ื–ืืช ื•ืžื’ื™ื‘ ื‘ื”ืชืื ืœืฆื“ ื”ืœืงื•ื—. ื–ื” ืžืืคืฉืจ ืœื”ืกื™ืจ ืืช ืคืกืง ื”ื–ืžืŸ - ื”ืงื•ื“ ืœื ืžื—ื›ื” ืฉื”ืžื ื•ืข ื™ื’ื™ื‘, ืืœื ืžื‘ื™ืŸ ืฉื”ื•ื ืœื ืขื•ื‘ื“ ื•ืฆืจื™ืš ืœื”ืชื ื”ื’ ืื™ื›ืฉื”ื• ืื—ืจืช. ื™ืฉ ืœื”ื›ื™ืŸ ืืช ื”ืงื•ื“ ืœื›ืš ืฉืžืื’ืจื™ ื”ืžื™ื“ืข ืœื ืชืžื™ื“ ืขื•ื‘ื“ื™ื.

ื™ื™ืฉื•ืžื™ื ืกืคืฆื™ืคื™ื™ื

ืœืคืขืžื™ื ืื ื—ื ื• ืขื“ื™ื™ืŸ ื‘ืืžืช ืจื•ืฆื™ื ืฉื™ื”ื™ื” ืœื ื• ืื™ื–ืฉื”ื• ืคืชืจื•ืŸ ืœื ืกื˜ื ื“ืจื˜ื™ ื›ืžื ื•ืข. ื‘ืžืงื‘ื™ืœ, ื”ื•ื—ืœื˜ ืœื ืœื”ืฉืชืžืฉ ื‘-rpc-proxy ื”ืžื•ื›ืŸ ืฉืœื ื•, ืฉื ื•ืฆืจ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ื”ืžื ื•ืขื™ื ืฉืœื ื•, ืืœื ืœื™ืฆื•ืจ ืคืจื•ืงืกื™ ื ืคืจื“ ืœืžืฉื™ืžื”.

ืขื‘ื•ืจ MySQL, ืฉืขื“ื™ื™ืŸ ื™ืฉ ืœื ื• ืคื” ื•ืฉื, ืื ื• ืžืฉืชืžืฉื™ื ื‘-db-proxy, ื•ืขื‘ื•ืจ ClickHouse - ื‘ื™ืช ื—ืชื•ืœื™ื.

ื–ื” ืขื•ื‘ื“ ื‘ื“ืจืš ื›ืœืœ ื›ื›ื”. ื™ืฉ ืฉืจืช ืžืกื•ื™ื™ื, ื”ื•ื ืžืจื™ืฅ kPHP, Go, Python - ื‘ืื•ืคืŸ ื›ืœืœื™, ื›ืœ ืงื•ื“ ืฉื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืจื•ื˜ื•ืงื•ืœ ื”-RPC ืฉืœื ื•. ื”ืงื•ื“ ืคื•ืขืœ ื‘ืื•ืคืŸ ืžืงื•ืžื™ ืขืœ ืคืจื•ืงืกื™ RPC - ื›ืœ ืฉืจืช ื‘ื• ื ืžืฆื ื”ืงื•ื“ ืžืคืขื™ืœ ืคืจื•ืงืกื™ ืžืงื•ืžื™ ืžืฉืœื•. ืœืคื™ ื‘ืงืฉื”, ืžื™ื•ืคื” ื”ื›ื•ื— ืžื‘ื™ืŸ ืœืืŸ ืœืคื ื•ืช.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืื ืžื ื•ืข ืื—ื“ ืจื•ืฆื” ืœืขื‘ื•ืจ ืœืžื ื•ืข ืื—ืจ, ื’ื ืื ื”ื•ื ืฉื›ืŸ, ื”ื•ื ืขื•ื‘ืจ ื“ืจืš ืคืจื•ืงืกื™, ื›ื™ ื™ื™ืชื›ืŸ ืฉื”ืฉื›ืŸ ื ืžืฆื ื‘ืžืจื›ื– ื ืชื•ื ื™ื ืื—ืจ. ื”ืžื ื•ืข ืœื ืฆืจื™ืš ืœื”ืกืชืžืš ืขืœ ื™ื“ื™ืขืช ืžื™ืงื•ืžื• ืฉืœ ืฉื•ื ื“ื‘ืจ ืžืœื‘ื“ ืขืฆืžื• - ื–ื” ื”ืคืชืจื•ืŸ ื”ืกื˜ื ื“ืจื˜ื™ ืฉืœื ื•. ืื‘ืœ ื›ืžื•ื‘ืŸ ืฉื™ืฉ ื™ื•ืฆืื™ื ืžื”ื›ืœืœ :)

ื“ื•ื’ืžื” ืœ-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;

ื–ื”ื• ืคืจื•ื˜ื•ืงื•ืœ ื‘ื™ื ืืจื™, ืฉื”ืื ืœื•ื’ื™ ื”ืงืจื•ื‘ ื‘ื™ื•ืชืจ ืฉืœื• ื”ื•ื protobuf. ื”ืกื›ื™ืžื” ืžืชืืจืช โ€‹โ€‹ืžืจืืฉ ืฉื“ื•ืช ืื•ืคืฆื™ื•ื ืœื™ื™ื, ืกื•ื’ื™ื ืžื•ืจื›ื‘ื™ื - ื”ืจื—ื‘ื•ืช ืฉืœ ืกืงืœืจื™ื ืžื•ื‘ื ื™ื ื•ืฉืื™ืœืชื•ืช. ื”ื›ืœ ืขื•ื‘ื“ ืœืคื™ ื”ืคืจื•ื˜ื•ืงื•ืœ ื”ื–ื”.

RPC ืขืœ TL ืขืœ TCP/UDP... UDP?

ื™ืฉ ืœื ื• ืคืจื•ื˜ื•ืงื•ืœ RPC ืœื‘ื™ืฆื•ืข ื‘ืงืฉื•ืช ืžื ื•ืข ืฉืคื•ืขืœ ืขืœ ื’ื‘ื™ ืกื›ื™ืžืช TL. ื›ืœ ื–ื” ืขื•ื‘ื“ ืขืœ ื—ื™ื‘ื•ืจ TCP/UDP. TCP ืžื•ื‘ืŸ, ืื‘ืœ ืœืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื UDP ืœืขืชื™ื ืงืจื•ื‘ื•ืช?

UDP ืขื•ื–ืจ ืœืžื ื•ืข ืืช ื”ื‘ืขื™ื” ืฉืœ ืžืกืคืจ ืขืฆื•ื ืฉืœ ื—ื™ื‘ื•ืจื™ื ื‘ื™ืŸ ืฉืจืชื™ื. ืื ืœื›ืœ ืฉืจืช ื™ืฉ ืคืจื•ืงืกื™ RPC ื•ื‘ืื•ืคืŸ ื›ืœืœื™ ื”ื•ื ื™ื›ื•ืœ ืœืขื‘ื•ืจ ืœื›ืœ ืžื ื•ืข, ืื– ื™ืฉ ืขืฉืจื•ืช ืืœืคื™ ื—ื™ื‘ื•ืจื™ TCP ืœื›ืœ ืฉืจืช. ื™ืฉ ืขื•ืžืก, ืื‘ืœ ื”ื•ื ื—ืกืจ ืชื•ืขืœืช. ื‘ืžืงืจื” ืฉืœ UDP ื‘ืขื™ื” ื–ื• ืœื ืงื™ื™ืžืช.

ืื™ืŸ ืœื—ื™ืฆืช ื™ื“ ืžื™ื•ืชืจืช ืฉืœ TCP. ื–ื•ื”ื™ ื‘ืขื™ื” ืื•ืคื™ื™ื ื™ืช: ื›ืืฉืจ ืžื ื•ืข ื—ื“ืฉ ืื• ืฉืจืช ื—ื“ืฉ ืžื•ืคืขืœ, ื ื•ืฆืจื™ื ื—ื™ื‘ื•ืจื™ TCP ืจื‘ื™ื ื‘ื‘ืช ืื—ืช. ืขื‘ื•ืจ ื‘ืงืฉื•ืช ืงื˜ื ื•ืช ืงืœื•ืช ืžืฉืงืœ, ืœืžืฉืœ, ืขื•ืžืก UDP, ื›ืœ ื”ืชืงืฉื•ืจืช ื‘ื™ืŸ ื”ืงื•ื“ ืœืžื ื•ืข ื”ื™ื ืฉืชื™ ืžื ื•ืช UDP: ืื—ื“ ื˜ืก ืœื›ื™ื•ื•ืŸ ืื—ื“, ื”ืฉื ื™ ืœื›ื™ื•ื•ืŸ ื”ืฉื ื™. ื ืกื™ืขื” ืื—ืช ื”ืœื•ืš ื•ืฉื•ื‘ - ื•ื”ืงื•ื“ ืงื™ื‘ืœ ืชืฉื•ื‘ื” ืžื”ืžื ื•ืข ืœืœื ืœื—ื™ืฆืช ื™ื“.

ื›ืŸ, ื”ื›ืœ ืคืฉื•ื˜ ืขื•ื‘ื“ ืขื ืื—ื•ื– ืงื˜ืŸ ืžืื•ื“ ืฉืœ ืื•ื‘ื“ืŸ ืžื ื•ืช. ืœืคืจื•ื˜ื•ืงื•ืœ ื™ืฉ ืชืžื™ื›ื” ื‘ืฉื™ื“ื•ืจื™ื ื—ื•ื–ืจื™ื ื•ืคืกืงื™ ื–ืžืŸ, ืื‘ืœ ืื ื ืคืกื™ื“ ื”ืจื‘ื”, ื ืงื‘ืœ ื›ืžืขื˜ TCP, ื•ื–ื” ืœื ืžื•ืขื™ืœ. ืื ื—ื ื• ืœื ื ื•ืกืขื™ื UDP ืขืœ ืคื ื™ ืื•ืงื™ื™ื ื•ืกื™ื.

ื™ืฉ ืœื ื• ืืœืคื™ ืฉืจืชื™ื ื›ืืœื”, ื•ื”ืกื›ืžื” ื–ื”ื”: ื—ื‘ื™ืœืช ืžื ื•ืขื™ื ืžื•ืชืงื ืช ื‘ื›ืœ ืฉืจืช ืคื™ื–ื™. ื”ื ืœืจื•ื‘ ืขื ื—ื•ื˜ื™ื ื‘ื•ื“ื“ื™ื ืœืจื•ืฅ ืžื”ืจ ื›ื›ืœ ื”ืืคืฉืจ ืœืœื ื—ืกื™ืžื”, ื•ื”ื ืžืจื•ืกืงื™ื ื›ืคืชืจื•ื ื•ืช ืขื ื—ื•ื˜ื™ื ื‘ื•ื“ื“ื™ื. ื™ื—ื“ ืขื ื–ืืช, ืื™ืŸ ืœื ื• ื“ื‘ืจ ืืžื™ืŸ ื™ื•ืชืจ ืžื”ืžื ื•ืขื™ื ื”ืœืœื•, ื•ืชืฉื•ืžืช ืœื‘ ืจื‘ื” ืžื•ืงื“ืฉืช ืœืื—ืกื•ืŸ ื ืชื•ื ื™ื ืžืชืžืฉืš.

ืื—ืกื•ืŸ ื ืชื•ื ื™ื ืžืชืžืฉืš

ืžื ื•ืขื™ื ื›ื•ืชื‘ื™ื ื‘ืœื•ื’ื™ื. ื‘ื™ื ืœื•ื’ ื”ื•ื ืงื•ื‘ืฅ ืฉื‘ืกื•ืคื• ืžืชื•ื•ืกืฃ ืื™ืจื•ืข ืœืฉื™ื ื•ื™ ืžืฆื‘ ืื• ื ืชื•ื ื™ื. ื‘ืคืชืจื•ื ื•ืช ืฉื•ื ื™ื ื–ื” ื ืงืจื ืื—ืจืช: ื™ื•ืžืŸ ื‘ื™ื ืืจื™, ื•ื•ืœ, AOF, ืื‘ืœ ื”ืขื™ืงืจื•ืŸ ื–ื”ื”.

ื›ื“ื™ ืœืžื ื•ืข ืžื”ืžื ื•ืข ืœืงืจื•ื ืžื—ื“ืฉ ืืช ื›ืœ ื”-binlog ื‘ืžืฉืš ืฉื ื™ื ืจื‘ื•ืช ื‘ืขืช ื”ืคืขืœื” ืžื—ื“ืฉ, ื›ื•ืชื‘ื™ื ื”ืžื ื•ืขื™ื ืชืžื•ื ื•ืช - ืžืฆื‘ ื ื•ื›ื—ื™. ืื ืฆืจื™ืš, ื”ื ืงื•ืจืื™ื ืžืžื ื• ืงื•ื“ื, ื•ืื—ืจ ื›ืš ืžืกื™ื™ืžื™ื ืœืงืจื•ื ืžื”ื‘ื™ื ืœื•ื’. ื›ืœ ื”-binlogs ื ื›ืชื‘ื™ื ื‘ืื•ืชื• ืคื•ืจืžื˜ ื‘ื™ื ืืจื™ - ืœืคื™ ืกื›ื™ืžืช TL, ื›ืš ืฉืžื ื”ืœื™ ืžืขืจื›ืช ื™ื›ื•ืœื™ื ืœื ื”ืœ ืื•ืชื ื‘ืื•ืคืŸ ืฉื•ื•ื” ื‘ืืžืฆืขื•ืช ื”ื›ืœื™ื ืฉืœื”ื. ืื™ืŸ ืฆื•ืจืš ื›ื–ื” ื‘ืฆื™ืœื•ืžื™ ืžืฆื‘. ื™ืฉ ื›ื•ืชืจืช ื›ืœืœื™ืช ืฉืžืฆื™ื™ื ืช ืฉืœ ืžื™ ืชืžื•ื ืช ื”ืžืฆื‘ ื”ื™ื int, ืงืกื ืฉืœ ื”ืžื ื•ืข ื•ืื™ื–ื” ื’ื•ืฃ ืœื ื—ืฉื•ื‘ ืœืืฃ ืื—ื“. ื–ื• ื‘ืขื™ื” ื‘ืžื ื•ืข ืฉืจืฉื ืืช ืชืžื•ื ืช ื”ืžืฆื‘.

ืืชืืจ ื‘ืžื”ื™ืจื•ืช ืืช ืขืงืจื•ืŸ ื”ืคืขื•ืœื”. ื™ืฉ ืฉืจืช ืฉืขืœื™ื• ืคื•ืขืœ ื”ืžื ื•ืข. ื”ื•ื ืคื•ืชื— ื‘ืœื•ื’ ื—ื“ืฉ ืจื™ืง ืœื›ืชื™ื‘ื” ื•ื›ื•ืชื‘ ืื™ืจื•ืข ืœืฉื™ื ื•ื™ ื‘ื•.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื‘ืฉืœื‘ ืžืกื•ื™ื, ืื• ืฉื”ื•ื ืžื—ืœื™ื˜ ืœืฆืœื ืชืžื•ื ื” ื‘ืขืฆืžื•, ืื• ืฉื”ื•ื ืžืงื‘ืœ ืื•ืช. ื”ืฉืจืช ื™ื•ืฆืจ ืงื•ื‘ืฅ ื—ื“ืฉ, ื›ื•ืชื‘ ืœืชื•ื›ื• ืืช ื›ืœ ืžืฆื‘ื•, ืžื•ืกื™ืฃ ืืช ื’ื•ื“ืœ ื”ื‘ื™ื ืœื•ื’ ื”ื ื•ื›ื—ื™ - offset - ืœืกื•ืฃ ื”ืงื•ื‘ืฅ, ื•ืžืžืฉื™ืš ืœื›ืชื•ื‘. ืœื ื ื•ืฆืจ ื‘ื™ื ืœื•ื’ ื—ื“ืฉ.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื‘ืฉืœื‘ ืžืกื•ื™ื, ื›ืฉื”ืžื ื•ืข ื™ืชื ื™ืข ืžื—ื“ืฉ, ื™ื”ื™ื• ื’ื binlog ื•ื’ื ืชืžื•ื ืช ืžืฆื‘ ืขืœ ื”ื“ื™ืกืง. ื”ืžื ื•ืข ืงื•ืจื ืืช ื›ืœ ืชืžื•ื ืช ื”ืžืฆื‘ ื•ืžืขืœื” ืืช ืžืฆื‘ื• ื‘ื ืงื•ื“ื” ืžืกื•ื™ืžืช.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืงื•ืจื ืืช ื”ืžื™ืงื•ื ืฉื”ื™ื” ื‘ื–ืžืŸ ื™ืฆื™ืจืช ืชืžื•ื ืช ื”ืžืฆื‘ ื•ืืช ื’ื•ื“ืœ ื”-binlog.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืงื•ืจื ืืช ืกื•ืฃ ื”-binlog ื›ื“ื™ ืœืงื‘ืœ ืืช ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ื•ืžืžืฉื™ืš ืœื›ืชื•ื‘ ืื™ืจื•ืขื™ื ื ื•ืกืคื™ื. ื–ื•ื”ื™ ืชื›ื ื™ืช ืคืฉื•ื˜ื”; ื›ืœ ื”ืžื ื•ืขื™ื ืฉืœื ื• ืคื•ืขืœื™ื ืœืคื™ื”.

ืฉื›ืคื•ืœ ื ืชื•ื ื™ื

ื›ืชื•ืฆืื” ืžื›ืš, ืฉื›ืคื•ืœ ื ืชื•ื ื™ื ืืฆืœื ื• ืžื‘ื•ืกืก ื”ืฆื”ืจื•ืช - ืื ื—ื ื• ื›ื•ืชื‘ื™ื ื‘-binlog ืœื ื›ืœ ืฉื™ื ื•ื™ ื‘ืขืžื•ื“, ืืœื ื›ืœื•ืžืจ ืฉื™ื ื•ื™ ื‘ืงืฉื•ืช. ื“ื•ืžื” ืžืื•ื“ ืœืžื” ืฉืžื’ื™ืข ื‘ืจืฉืช, ืจืง ืžืขื˜ ืฉื•ื ื”.

ืื•ืชื” ืกื›ื™ืžื” ืžืฉืžืฉืช ืœื ืจืง ืœืฉื›ืคื•ืœ, ืืœื ื’ื ืœื™ืฆื™ืจืช ื’ื™ื‘ื•ื™ื™ื. ื™ืฉ ืœื ื• ืžื ื•ืข - ืžืืกื˜ืจ ื›ืชื™ื‘ื” ืฉื›ื•ืชื‘ ืœื‘ื™ื ืœื•ื’. ื‘ื›ืœ ืžืงื•ื ืื—ืจ ืฉื‘ื• ื”ืžื ื”ืœื™ื ืžื’ื“ื™ืจื™ื ืืช ื–ื”, ื”ื‘ื™ื ืœื•ื’ ื”ื–ื” ืžื•ืขืชืง, ื•ื–ื”ื• - ื™ืฉ ืœื ื• ื’ื™ื‘ื•ื™.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื‘ืžื™ื“ืช ืฆื•ืจืš ืงื•ืจื ื”ืขืชืงื›ื“ื™ ืœื”ืคื—ื™ืช ืืช ืขื•ืžืก ื”ืงืจื™ืื” ืฉืœ ื”ืžืขื‘ื“, ืคืฉื•ื˜ ืžื•ืคืขืœ ืžื ื•ืข ื”ืงืจื™ืื”, ืฉืงื•ืจื ืืช ืกื•ืฃ ื”-binlog ื•ืžื‘ืฆืข ืืช ื”ืคืงื•ื“ื•ืช ื”ืœืœื• ื‘ืื•ืคืŸ ืžืงื•ืžื™.

ื”ืคื™ื’ื•ืจ ื›ืืŸ ืงื˜ืŸ ืžืื•ื“, ื•ืืคืฉืจ ืœื’ืœื•ืช ืขื“ ื›ืžื” ื”ืขืชืง ืžืคื’ืจ ืื—ืจื™ ื”ืžืืกื˜ืจ.

ื—ืœื•ืงืช ื ืชื•ื ื™ื ื‘ืคืจื•ืงืกื™ RPC

ืื™ืš ืขื•ื‘ื“ ื”ืจื™ืกื”? ืื™ืš ื”-proxy ืžื‘ื™ืŸ ืœืื™ื–ื” ืจืกื™ืกื™ ืืฉื›ื•ืœ ืœืฉืœื•ื—? ื”ืงื•ื“ ืœื ืื•ืžืจ: "ืฉืœื— ืขื‘ื•ืจ 15 ืจืกื™ืกื™ื!" - ืœื, ื–ื” ื ืขืฉื” ืขืœ ื™ื“ื™ ื”-proxy.

ื”ืกื›ื™ืžื” ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ ื”ื™ื firstint - ื”ืžืกืคืจ ื”ืจืืฉื•ืŸ ื‘ื‘ืงืฉื”.

get(photo100_500) => 100 % N.

ื–ื•ื”ื™ ื“ื•ื’ืžื” ืœืคืจื•ื˜ื•ืงื•ืœ ื˜ืงืกื˜ ืคืฉื•ื˜ ืžืื•ื—ืกืŸ ื‘ื–ื™ื›ืจื•ืŸ, ืื‘ืœ, ื›ืžื•ื‘ืŸ, ืฉืื™ืœืชื•ืช ื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ืžื•ืจื›ื‘ื•ืช ื•ืžื•ื‘ื ื•ืช. ื”ื“ื•ื’ืžื” ืœื•ืงื—ืช ืืช ื”ืžืกืคืจ ื”ืจืืฉื•ืŸ ื‘ืฉืื™ืœืชื” ื•ืืช ื”ืฉืืจ ื›ืืฉืจ ืžื—ืœืงื™ื ื‘ื’ื•ื“ืœ ื”ืืฉื›ื•ืœ.

ื–ื” ืฉื™ืžื•ืฉื™ ื›ืืฉืจ ืื ื• ืจื•ืฆื™ื ืœืงื‘ืœ ืžื™ืงื•ื ื ืชื•ื ื™ื ืฉืœ ื™ืฉื•ืช ืื—ืช. ื ื ื™ื— ืฉ-100 ื”ื•ื ืžื–ื”ื” ืžืฉืชืžืฉ ืื• ืงื‘ื•ืฆื”, ื•ืื ื• ืจื•ืฆื™ื ืฉื›ืœ ื”ื ืชื•ื ื™ื ืฉืœ ื™ืฉื•ืช ืื—ืช ื™ื”ื™ื• ื‘ืจืกื™ืก ืื—ื“ ืขื‘ื•ืจ ืฉืื™ืœืชื•ืช ืžื•ืจื›ื‘ื•ืช.

ืื ืœื ืื›ืคืช ืœื ื• ืื™ืš ื”ื‘ืงืฉื•ืช ืžืคื•ื–ืจื•ืช ื‘ืจื—ื‘ื™ ื”ืืฉื›ื•ืœ, ื™ืฉื ื” ืืคืฉืจื•ืช ื ื•ืกืคืช - ื’ื™ื‘ื•ื‘ ืืช ื›ืœ ื”ืจืกื™ืก.

hash(photo100_500) => 3539886280 % N

ืื ื—ื ื• ืžืงื‘ืœื™ื ื’ื ืืช ื”-hash, ืืช ืฉืืจ ื”ื—ืœื•ืงื” ื•ืืช ืžืกืคืจ ื”ืจืกื™ืก.

ืฉืชื™ ื”ืืคืฉืจื•ื™ื•ืช ื”ืœืœื• ืขื•ื‘ื“ื•ืช ืจืง ืื ืื ื—ื ื• ืžื•ื›ื ื™ื ืœื›ืš ืฉื›ืืฉืจ ื ื’ื“ื™ืœ ืืช ื’ื•ื“ืœ ื”ืืฉื›ื•ืœ, ื ืคืฆืœ ืื•ืชื• ืื• ื ื’ื“ื™ืœ ืื•ืชื• ื‘ื›ืžื” ืคืขืžื™ื. ืœื“ื•ื’ืžื”, ื”ื™ื• ืœื ื• 16 ืจืกื™ืกื™ื, ืื™ืŸ ืœื ื• ืžืกืคื™ืง, ืื ื—ื ื• ืจื•ืฆื™ื ื™ื•ืชืจ - ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืฉื™ื’ 32 ื‘ื‘ื˜ื—ื” ืœืœื ื”ืฉื‘ืชื”. ืื ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ื’ื“ื™ืœ ื•ืœื ื›ืคื•ืœื•ืช, ืชื”ื™ื” ื”ืฉื‘ืชื”, ื›ื™ ืœื ื ื•ื›ืœ ืœืคืฆืœ ืืช ื”ื›ืœ ื‘ืžื“ื•ื™ืง ื‘ืœื™ ื”ืคืกื“ื™ื. ืืคืฉืจื•ื™ื•ืช ืืœื” ืฉื™ืžื•ืฉื™ื•ืช, ืืš ืœื ืชืžื™ื“.

ืื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื•ืกื™ืฃ ืื• ืœื”ืกื™ืจ ืžืกืคืจ ืฉืจื™ืจื•ืชื™ ืฉืœ ืฉืจืชื™ื, ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื’ื™ื‘ื•ื‘ ืขืงื‘ื™ ืขืœ ื”ื˜ื‘ืขืช ื-ืœื”-ืงื˜ืžื”. ืื‘ืœ ื™ื—ื“ ืขื ื–ืืช, ืื ื—ื ื• ืžืื‘ื“ื™ื ืœื—ืœื•ื˜ื™ืŸ ืืช ืžืงื•ืžื™ื•ืช ื”ื ืชื•ื ื™ื; ืขืœื™ื ื• ืœืžื–ื’ ืืช ื”ื‘ืงืฉื” ืœืืฉื›ื•ืœ ื›ืš ืฉื›ืœ ื—ืœืง ื™ื—ื–ื™ืจ ืืช ื”ืชื’ื•ื‘ื” ื”ืงื˜ื ื” ืฉืœื•, ื•ืื– ืœืžื–ื’ ืืช ื”ืชื’ื•ื‘ื•ืช ืœ-proxy.

ื™ืฉ ื‘ืงืฉื•ืช ืกื•ืคืจ ืกืคืฆื™ืคื™ื•ืช. ื–ื” ื ืจืื” ื›ืš: ืคืจื•ืงืกื™ RPC ืžืงื‘ืœ ืืช ื”ื‘ืงืฉื”, ืงื•ื‘ืข ืœืื™ื–ื” ืืฉื›ื•ืœ ืœืœื›ืช ื•ืงื•ื‘ืข ืืช ื”ืจืกื™ืก. ืื– ื™ืฉ ืื• ืžืืกื˜ืจื™ื ืœื›ืชื™ื‘ื”, ืื•, ืื ืœืืฉื›ื•ืœ ื™ืฉ ืชืžื™ื›ืช ื”ืขืชืง, ื”ื•ื ืฉื•ืœื— ืœืขื•ืชืง ืœืคื™ ื“ืจื™ืฉื”. ื”ืคืจื•ืงืกื™ ืขื•ืฉื” ืืช ื›ืœ ื–ื”.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื™ื•ืžื ื™ื

ืื ื• ื›ื•ืชื‘ื™ื ื™ื•ืžื ื™ื ื‘ื›ืžื” ื“ืจื›ื™ื. ื”ื‘ืจื•ืจ ื•ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ ื”ื•ื ืœื›ืชื•ื‘ ื™ื•ืžื ื™ื ืœ-memcache.

ring-buffer: prefix.idx = line

ื™ืฉ ืงื™ื“ื•ืžืช ืžืคืชื— - ืฉื ื”ื™ื•ืžืŸ, ืฉื•ืจื”, ื•ื™ืฉ ืืช ื”ื’ื•ื“ืœ ืฉืœ ื”ื™ื•ืžืŸ ื”ื–ื” - ืžืกืคืจ ื”ืฉื•ืจื•ืช. ื ื™ืงื— ืžืกืคืจ ืืงืจืื™ ืž-0 ืœืžืกืคืจ ื”ืฉื•ืจื•ืช ืžื™ื ื•ืก 1. ื”ืžืคืชื— ื‘-memcache ื”ื•ื ืงื™ื“ื•ืžืช ื”ืžืฉื•ืจืฉืจืช ืœืžืกืคืจ ื”ืืงืจืื™ ื”ื–ื”. ืื ื• ืฉื•ืžืจื™ื ืืช ืฉื•ืจืช ื”ื™ื•ืžืŸ ื•ืืช ื”ืฉืขื” ื”ื ื•ื›ื—ื™ืช ืœืขืจืš.

ื›ืืฉืจ ื™ืฉ ืฆื•ืจืš ืœืงืจื•ื ื™ื•ืžื ื™ื, ืื ื• ืžื‘ืฆืขื™ื Multi Get ื›ืœ ื”ืžืคืชื—ื•ืช, ืžืžื•ื™ื ื™ื ืœืคื™ ื–ืžืŸ, ื•ื›ืš ืžืงื‘ืœื™ื ื™ื•ืžืŸ ื™ื™ืฆื•ืจ ื‘ื–ืžืŸ ืืžืช. ื”ืกื›ื™ืžื” ืžืฉืžืฉืช ื›ืืฉืจ ืืชื” ืฆืจื™ืš ืœื ืคื•ืช ื‘ืื’ื™ื ื‘ืžืฉื”ื• ื‘ื™ื™ืฆื•ืจ ื‘ื–ืžืŸ ืืžืช, ื‘ืœื™ ืœืฉื‘ื•ืจ ืฉื•ื ื“ื‘ืจ, ื‘ืœื™ ืœืขืฆื•ืจ ืื• ืœืืคืฉืจ ืชืขื‘ื•ืจื” ืœืžื›ื•ื ื•ืช ืื—ืจื•ืช, ืื‘ืœ ื™ื•ืžืŸ ื–ื” ืœื ื ืžืฉืš ื–ืžืŸ ืจื‘.

ืœืื—ืกื•ืŸ ืืžื™ืŸ ืฉืœ ื‘ื•ืœื™ ืขืฅ ื™ืฉ ืœื ื• ืžื ื•ืข ืžื ื•ืข ื™ื•ืžื ื™ื. ื–ื• ื‘ื“ื™ื•ืง ื”ืกื™ื‘ื” ืฉื”ื•ื ื ื•ืฆืจ ื•ื ืžืฆื ื‘ืฉื™ืžื•ืฉ ื ืจื—ื‘ ื‘ืžืกืคืจ ืขืฆื•ื ืฉืœ ืืฉื›ื•ืœื•ืช. ื”ืืฉื›ื•ืœ ื”ื’ื“ื•ืœ ื‘ื™ื•ืชืจ ืฉืื ื™ ืžื›ื™ืจ ืžืื—ืกืŸ 600 TB ืฉืœ ื™ื•ืžื ื™ื ืืจื•ื–ื™ื.

ื”ืžื ื•ืข ื™ืฉืŸ ืžืื•ื“, ื™ืฉ ืืฉื›ื•ืœื•ืช ืฉื›ื‘ืจ ื‘ื ื™ 6-7 ืฉื ื™ื. ื™ืฉ ืื™ืชื• ื‘ืขื™ื•ืช ืฉืื ื—ื ื• ืžื ืกื™ื ืœืคืชื•ืจ, ืœืžืฉืœ, ื”ืชื—ืœื ื• ืœื”ืฉืชืžืฉ ื‘ืื•ืคืŸ ืคืขื™ืœ ื‘-ClickHouse ืœืื—ืกื•ืŸ ื™ื•ืžื ื™ื.

ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ืงืœื™ืงื”ืื•ืก

ืชืจืฉื™ื ื–ื” ืžืจืื” ื›ื™ืฆื“ ืื ื• ื ื›ื ืกื™ื ืœืชื•ืš ื”ืžื ื•ืขื™ื ืฉืœื ื•.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื™ืฉ ืงื•ื“ ืฉืขื•ื‘ืจ ื‘ืื•ืคืŸ ืžืงื•ืžื™ ื“ืจืš RPC ืœ-RPC-proxy, ื•ื”ื•ื ืžื‘ื™ืŸ ืœืืŸ ืœืœื›ืช ืœืžื ื•ืข. ืื ื‘ืจืฆื•ื ื ื• ืœื›ืชื•ื‘ ื™ื•ืžื ื™ื ื‘-ClickHouse, ืขืœื™ื ื• ืœืฉื ื•ืช ืฉื ื™ ื—ืœืงื™ื ื‘ืกื›ื™ืžื” ื–ื•:

  • ืœื”ื—ืœื™ืฃ ืžื ื•ืข ื›ืœืฉื”ื• ื‘ืงืœื™ืงื”ืื•ืก;
  • ืœื”ื—ืœื™ืฃ ืืช ืคืจื•ืงืกื™ RPC, ืฉืื™ื ื• ื™ื›ื•ืœ ืœื’ืฉืช ืœ-ClickHouse, ื‘ืคืชืจื•ืŸ ื›ืœืฉื”ื• ืฉื™ื›ื•ืœ, ื•ื‘ืืžืฆืขื•ืช RPC.

ื”ืžื ื•ืข ืคืฉื•ื˜ - ืื ื—ื ื• ืžื—ืœื™ืคื™ื ืื•ืชื• ื‘ืฉืจืช ืื• ื‘ืืฉื›ื•ืœ ืฉืจืชื™ื ืขื ClickHouse.

ื•ื›ื“ื™ ืœืœื›ืช ืœืงืœื™ืงื”ืื•ืก, ืขืฉื™ื ื• ื–ืืช ื‘ื™ืช ื”ื—ืชื•ืœื™ื. ืื ื ืขื‘ื•ืจ ื™ืฉื™ืจื•ืช ืž- KittenHouse ืœ- ClickHouse, ื–ื” ืœื ื™ืชืžื•ื“ื“. ืืคื™ืœื• ื‘ืœื™ ื‘ืงืฉื•ืช, ื–ื” ืžืฆื˜ื‘ืจ ืžื—ื™ื‘ื•ืจื™ HTTP ืฉืœ ืžืกืคืจ ืขืฆื•ื ืฉืœ ืžื›ื•ื ื•ืช. ื›ื“ื™ ืฉื”ืชื•ื›ื ื™ืช ืชืขื‘ื•ื“, ื‘ืฉืจืช ืขื ClickHouse ืคืจื•ืงืกื™ ื”ืคื•ืš ืžืงื•ืžื™ ืžื•ืขืœื”, ืฉื ื›ืชื‘ ื‘ืฆื•ืจื” ื›ื–ื• ืฉื”ื•ื ื™ื›ื•ืœ ืœืขืžื•ื“ ื‘ื ืคื—ื™ ื”ื—ื™ื‘ื•ืจื™ื ื”ื ื“ืจืฉื™ื. ื–ื” ื’ื ื™ื›ื•ืœ ืœืื—ืกืŸ ื ืชื•ื ื™ื ื‘ืชื•ืš ืขืฆืžื• ื‘ืฆื•ืจื” ืืžื™ื ื” ื™ื—ืกื™ืช.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืœืคืขืžื™ื ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœื™ื™ืฉื ืืช ืกื›ื™ืžืช ื”-RPC ื‘ืคืชืจื•ื ื•ืช ืœื ืกื˜ื ื“ืจื˜ื™ื™ื, ืœืžืฉืœ, ื‘-nginx. ืœื›ืŸ, ืœ- KittenHouse ื™ืฉ ืืช ื”ื™ื›ื•ืœืช ืœืงื‘ืœ ื™ื•ืžื ื™ื ื“ืจืš UDP.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืื ื”ืฉื•ืœื— ื•ื”ืžืงื‘ืœ ืฉืœ ื”ื™ื•ืžื ื™ื ืขื•ื‘ื“ื™ื ืขืœ ืื•ืชื• ืžื—ืฉื‘, ืื–ื™ ื”ื”ืกืชื‘ืจื•ืช ืœืื‘ื“ ื—ื‘ื™ืœืช UDP ื‘ืชื•ืš ื”ืžืืจื— ื”ืžืงื•ืžื™ ื”ื™ื ื ืžื•ื›ื” ืœืžื“ื™. ื›ืคืฉืจื” ื‘ื™ืŸ ื”ืฆื•ืจืš ืœื™ื™ืฉื RPC ื‘ืคืชืจื•ืŸ ืฆื“ ืฉืœื™ืฉื™ ืœื‘ื™ืŸ ืืžื™ื ื•ืช, ืื ื• ืคืฉื•ื˜ ืžืฉืชืžืฉื™ื ื‘ืฉืœื™ื—ืช UDP. ืœืชื›ื ื™ืช ื–ื• ื ื—ื–ื•ืจ ื‘ื”ืžืฉืš.

ื ื™ื˜ื•ืจ

ื™ืฉ ืœื ื• ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ื™ื•ืžื ื™ื: ืืœื• ืฉื ืืกืคื• ืขืœ ื™ื“ื™ ืžื ื”ืœื™ ืžืขืจื›ืช ื‘ืฉืจืชื™ื ืฉืœื”ื ื•ืืœื• ืฉื ื›ืชื‘ื• ืขืœ ื™ื“ื™ ืžืคืชื—ื™ื ืžืงื•ื“. ื”ื ืชื•ืืžื™ื ืœืฉื ื™ ืกื•ื’ื™ื ืฉืœ ืžื“ื“ื™ื: ืžืขืจื›ืช ื•ืžื•ืฆืจ.

ืžื“ื“ื™ ืžืขืจื›ืช

ื–ื” ืขื•ื‘ื“ ืขืœ ื›ืœ ื”ืฉืจืชื™ื ืฉืœื ื• ื ืชื•ื ื™ื ื ื˜ื•, ืืฉืจ ืื•ืกืคืช ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ื•ืฉื•ืœื—ืช ืื•ืชืŸ ืืœ ืคื—ืžืŸ ื’ืจืคื™ื˜. ืœื›ืŸ, ClickHouse ืžืฉืžืฉืช ื›ืžืขืจื›ืช ืื—ืกื•ืŸ, ื•ืœื Whisper, ืœืžืฉืœ. ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ื™ืฉื™ืจื•ืช ืž-ClickHouse, ืื• ืœื”ืฉืชืžืฉ ื’ืจืคื ื” ืขื‘ื•ืจ ืžื“ื“ื™ื, ื’ืจืคื™ื ื•ื“ื•ื—ื•ืช. ื›ืžืคืชื—ื™ื, ื™ืฉ ืœื ื• ืžืกืคื™ืง ื’ื™ืฉื” ืœ-Netdata ื•ืœ-Grafana.

ืžื“ื“ื™ ืžื•ืฆืจ

ืžื˜ืขืžื™ ื ื•ื—ื•ืช, ื›ืชื‘ื ื• ื”ืจื‘ื” ื“ื‘ืจื™ื. ืœื“ื•ื’ืžื”, ื™ืฉ ืงื‘ื•ืฆื” ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืจื’ื™ืœื•ืช ื”ืžืืคืฉืจื•ืช ืœืš ืœื›ืชื•ื‘ ืกืคื™ืจื•ืช, ืขืจื›ื™ UniqueCounts ืœืชื•ืš ืกื˜ื˜ื™ืกื˜ื™ืงื”, ื”ื ืฉืœื—ืช ืœืžืงื•ื ืื—ืจ.

statlogsCountEvent   ( โ€˜stat_nameโ€™,            $key1, $key2, โ€ฆ)
statlogsUniqueCount ( โ€˜stat_nameโ€™, $uid,    $key1, $key2, โ€ฆ)
statlogsValuetEvent  ( โ€˜stat_nameโ€™, $value, $key1, $key2, โ€ฆ)

$stats = statlogsStatData($params)

ืœืื—ืจ ืžื›ืŸ, ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืžืกื ื ื™ ืžื™ื•ืŸ ื•ืงื™ื‘ื•ืฅ ื•ืœืขืฉื•ืช ื›ืœ ืžื” ืฉื ืจืฆื” ืžืกื˜ื˜ื™ืกื˜ื™ืงื” - ืœื‘ื ื•ืช ื’ืจืคื™ื, ืœื”ื’ื“ื™ืจ ืืช ื›ืœื‘ื™ ื”ืฉืžื™ืจื”.

ืื ื—ื ื• ื›ื•ืชื‘ื™ื ืžืื•ื“ ืžื“ื“ื™ื ืจื‘ื™ื ืžืกืคืจ ื”ืื™ืจื•ืขื™ื ื”ื•ื ื‘ื™ืŸ 600 ืžื™ืœื™ืืจื“ ืœ-1 ื˜ืจื™ืœื™ื•ืŸ ืœื™ื•ื. ืขื ื–ืืช, ืื ื—ื ื• ืจื•ืฆื™ื ืœืฉืžื•ืจ ืื•ืชื ืœืคื—ื•ืช ืฉื ืชื™ื™ืืœื”ื‘ื™ืŸ ืžื’ืžื•ืช ื‘ืžื“ื“ื™ื. ืœื—ื‘ืจ ืืช ื”ื›ืœ ื‘ื™ื—ื“ ื–ื• ื‘ืขื™ื” ื’ื“ื•ืœื” ืฉืขื“ื™ื™ืŸ ืœื ืคืชืจื ื•. ืื ื™ ืื’ื™ื“ ืœืš ืื™ืš ื–ื” ืขื•ื‘ื“ ื‘ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช.

ื™ืฉ ืœื ื• ืคื•ื ืงืฆื™ื•ืช ืฉื›ื•ืชื‘ื•ืช ืืช ื”ืžื“ื“ื™ื ื”ืืœื” ืœ-memcache ืžืงื•ืžื™ื›ื“ื™ ืœืฆืžืฆื ืืช ืžืกืคืจ ื”ื›ื ื™ืกื•ืช. ืคืขื ื‘ืคืจืง ื–ืžืŸ ืงืฆืจ ื”ื•ืฉืง ื‘ืื•ืคืŸ ืžืงื•ืžื™ ืกื˜ื˜ื™ืกื˜ื™ืงื”-ื“ื™ืžื•ืŸ ืื•ืกืฃ ืืช ื›ืœ ื”ืจืฉื•ืžื•ืช. ืœืื—ืจ ืžื›ืŸ, ื”ืฉื“ ืžืžื–ื’ ืืช ื”ืžื“ื“ื™ื ืœืฉืชื™ ืฉื›ื‘ื•ืช ืฉืœ ืฉืจืชื™ื ื‘ื•ืœื™ ืขืฅ-ืืกืคื ื™ื, ืฉืื•ืกืฃ ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืžื—ื‘ื•ืจื” ืžื”ืžื›ื•ื ื•ืช ืฉืœื ื• ื›ื“ื™ ืฉื”ืฉื›ื‘ื” ืฉืžืื—ื•ืจื™ื”ืŸ ืœื ืชืžื•ืช.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ื ื•ื›ืœ ืœื›ืชื•ื‘ ื™ืฉื™ืจื•ืช ืœืื•ืกืคื™ ื™ื•ืžื ื™ื.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืื‘ืœ ื›ืชื™ื‘ื” ืžืงื•ื“ ื™ืฉื™ืจื•ืช ืœืืกืคื ื™ื, ืชื•ืš ืขืงื™ืคืช stas-daemom, ื”ื™ื ืคืชืจื•ืŸ ืœื ื ื™ืชืŸ ืœื”ืจื—ื‘ื” ืžื›ื™ื•ื•ืŸ ืฉื”ื™ื ืžื’ื‘ื™ืจื” ืืช ื”ืขื•ืžืก ืขืœ ื”ืืกืคืŸ. ื”ืคืชืจื•ืŸ ืžืชืื™ื ืจืง ืื ืžืกื™ื‘ื” ื›ืœืฉื”ื™ ืื™ื ื ื• ื™ื›ื•ืœื™ื ืœื”ืขืœื•ืช ืืช ื”-memcache stats-daemon ื‘ืžื›ื•ื ื”, ืื• ืฉื”ื•ื ืงืจืก ื•ื”ืœื›ื ื• ื™ืฉื™ืจื•ืช.

ืœืื—ืจ ืžื›ืŸ, ืื•ืกืคื™ ื™ื•ืžื ื™ื ืžืžื–ื’ื™ื ื ืชื•ื ื™ื ืกื˜ื˜ื™ืกื˜ื™ื™ื ืœืชื•ืš meowDB - ื–ื”ื• ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœื ื•, ืฉื™ื›ื•ืœ ืœืื—ืกืŸ ื’ื ืžื“ื“ื™ื.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ืื– ื ื•ื›ืœ ืœื‘ืฆืข ื‘ื—ื™ืจื•ืช ื‘ื™ื ืืจื™ื•ืช ืฉืœ "ืงืจื•ื‘ ืœ-SQL" ืžื”ืงื•ื“.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื”ื ื™ืกื•ื™

ื‘ืงื™ืฅ 2018 ื”ื™ื” ืœื ื• ื”ืืงืชื•ืŸ ืคื ื™ืžื™, ื•ืขืœื” ื”ืจืขื™ื•ืŸ ืœื ืกื•ืช ืœื”ื—ืœื™ืฃ ืืช ื”ื—ืœืง ื”ืื“ื•ื ืฉืœ ื”ื“ื™ืื’ืจืžื” ื‘ืžืฉื”ื• ืฉื™ื›ื•ืœ ืœืื—ืกืŸ ืžื“ื“ื™ื ื‘-ClickHouse. ื™ืฉ ืœื ื• ื™ื•ืžื ื™ื ืขืœ ClickHouse - ืœืžื” ืœื ืœื ืกื•ืช ืืช ื–ื”?

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื”ื™ื™ืชื” ืœื ื• ืชื•ื›ื ื™ืช ืฉื›ืชื‘ื” ื™ื•ืžื ื™ื ื“ืจืš KittenHouse.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื”ื—ืœื˜ื ื• ื”ื•ืกืฃ ืขื•ื“ "*ื‘ื™ืช" ืœืชืจืฉื™ื, ืฉื™ืงื‘ืœ ื‘ื“ื™ื•ืง ืืช ื”ืžื“ื“ื™ื ื‘ืคื•ืจืžื˜ ื›ืคื™ ืฉื”ืงื•ื“ ืฉืœื ื• ื›ื•ืชื‘ ืื•ืชื ื“ืจืš UDP. ื•ืื– *ื”ื‘ื™ืช ื”ื–ื” ื”ื•ืคืš ืื•ืชื ืœืชื•ืกืคื•ืช, ื›ืžื• ื™ื•ืžื ื™ื, ืฉ-KittenHouse ืžื‘ื™ื ื”. ื”ื•ื ื™ื›ื•ืœ ืœื”ืขื‘ื™ืจ ืืช ื”ื™ื•ืžื ื™ื ื”ืืœื” ื‘ืฆื•ืจื” ืžื•ืฉืœืžืช ืœ-ClickHouse, ืฉืืžื•ืจื” ืœื”ื™ื•ืช ืžืกื•ื’ืœืช ืœืงืจื•ื ืื•ืชื.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื”ืกื›ื™ืžื” ืขื memcache, stats-daemon ื•-logs-collectors ืžืกื“ ื”ื ืชื•ื ื™ื ืžื•ื—ืœืคืช ื‘ื–ื•.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืขื‘ื•ื“ื” ืฉืœ VKontakte

ื”ืกื›ื™ืžื” ืขื memcache, stats-daemon ื•-logs-collectors ืžืกื“ ื”ื ืชื•ื ื™ื ืžื•ื—ืœืคืช ื‘ื–ื•.

  • ื™ืฉ ื›ืืŸ ืฉืœื™ื—ืช ืงื•ื“, ืฉื ื›ืชื‘ืช ื‘ืื•ืคืŸ ืžืงื•ืžื™ ื‘-StatsHouse.
  • StatsHouse ื›ื•ืชื‘ ืžื“ื“ื™ UDP, ืฉื›ื‘ืจ ื”ื•ืžืจื• ืœืชื•ืกืคื•ืช SQL, ืœ-KittenHouse ื‘ืืฆื•ื•ื”.
  • KittenHouse ืฉื•ืœื— ืื•ืชื ืœ- ClickHouse.
  • ืื ืื ื—ื ื• ืจื•ืฆื™ื ืœืงืจื•ื ืื•ืชื, ืื– ืื ื—ื ื• ืงื•ืจืื™ื ืื•ืชื ืขื•ืงืคื™ื ืืช StatsHouse - ื™ืฉื™ืจื•ืช ืž-ClickHouse ื‘ืืžืฆืขื•ืช SQL ืจื’ื™ืœ.

ื”ืื ื–ื” ืขื“ื™ื™ืŸ ื ื™ืกื•ื™, ืื‘ืœ ืื ื—ื ื• ืื•ื”ื‘ื™ื ืื™ืš ื–ื” ื™ื•ืฆื. ืื ื ืชืงืŸ ืืช ื”ื‘ืขื™ื•ืช ื‘ืชื•ื›ื ื™ืช, ืื– ืื•ืœื™ ื ืขื‘ื•ืจ ืืœื™ื” ืœื—ืœื•ื˜ื™ืŸ. ืื™ืฉื™ืช, ืื ื™ ืžืงื•ื•ื” ืฉื›ืŸ.

ืขืจื›ืชื™ ืœื ื—ื•ืกืš ื‘ืจื–ืœ. ื™ืฉ ืฆื•ืจืš ื‘ืคื—ื•ืช ืฉืจืชื™ื, ืื™ืŸ ืฆื•ืจืš ื‘ืกื˜ื˜ื™ืกื˜ื™ืงื”-ื“ืžื•ื ื™ื ื•ื‘ืื•ืกืคื™ ื™ื•ืžื ื™ื, ืืš ClickHouse ื“ื•ืจืฉ ืฉืจืช ื’ื“ื•ืœ ื™ื•ืชืจ ืžืืœื” ืฉื‘ืชื›ื ื™ืช ื”ื ื•ื›ื—ื™ืช. ื™ืฉ ืฆื•ืจืš ื‘ืคื—ื•ืช ืฉืจืชื™ื, ืื‘ืœ ื”ื ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ื™ืงืจื™ื ื™ื•ืชืจ ื•ื—ื–ืงื™ื ื™ื•ืชืจ.

ืœืคืจื•ืก

ืจืืฉื™ืช, ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืคืจื™ืกืช PHP. ืื ื—ื ื• ืžืชืคืชื—ื™ื ื‘ ืกื™ืœื•ืŸ: ืœื”ืฉืชืžืฉ GitLab ะธ TeamCity ืœืคืจื™ืกื”. ืขื ืคื™ ืคื™ืชื•ื— ืžืชืžื–ื’ื™ื ืœืชื•ืš ืขื ืฃ ื”ืžืืกื˜ืจ, ืžื”ืžืืกื˜ืจ ืœืฆื•ืจืš ื‘ื“ื™ืงื” ื”ื ืžืชืžื–ื’ื™ื ืœื‘ืžื”, ื•ืžื”ืฉืœื‘ ืœื™ื™ืฆื•ืจ.

ืœืคื ื™ ื”ืคืจื™ืกื” ื ืœืงื—ื™ื ืขื ืฃ ื”ื™ื™ืฆื•ืจ ื”ื ื•ื›ื—ื™ ื•ื”ืงื•ื“ื, ื•ืงื•ื‘ืœื™ื ื‘ื”ื ืงื‘ืฆื™ diff - ืฉื™ื ื•ื™ื™ื: ื ื•ืฆืจ, ื ืžื—ืง, ื”ืฉืชื ื”. ืฉื™ื ื•ื™ ื–ื” ืžืชื•ืขื“ ื‘-binlog ืฉืœ ืžื ื•ืข copyfast ืžื™ื•ื—ื“, ืฉื™ื›ื•ืœ ืœืฉื›ืคืœ ื‘ืžื”ื™ืจื•ืช ืฉื™ื ื•ื™ื™ื ืœื›ืœ ืฆื™ ื”ืฉืจืชื™ื ืฉืœื ื•. ืžื” ืฉืžืฉืžืฉ ื›ืืŸ ื”ื•ื ืœื ื”ืขืชืงื” ื™ืฉื™ืจื”, ืืœื ืฉื›ืคื•ืœ ืจื›ื™ืœื•ืช, ื›ืืฉืจ ืฉืจืช ืื—ื“ ืฉื•ืœื— ืฉื™ื ื•ื™ื™ื ืœืฉื›ื ื™ื• ื”ืงืจื•ื‘ื™ื ื‘ื™ื•ืชืจ, ืืœื” ืœืฉื›ื ื™ื”ื ื•ื›ืŸ ื”ืœืื”. ื–ื” ืžืืคืฉืจ ืœืš ืœืขื“ื›ืŸ ืืช ื”ืงื•ื“ ื‘ืขืฉืจื•ืช ื•ื™ื—ื™ื“ื•ืช ืฉืœ ืฉื ื™ื•ืช ืขืœ ืคื ื™ ื›ืœ ื”ืฆื™. ื›ืืฉืจ ื”ืฉื™ื ื•ื™ ืžื’ื™ืข ืœืขืชืง ื”ืžืงื•ืžื™, ื”ื•ื ืžื—ื™ืœ ืืช ื”ืชื™ืงื•ื ื™ื ื”ืœืœื• ืขืœ ืฉืœื• ืžืขืจื›ืช ืงื‘ืฆื™ื ืžืงื•ืžื™ืช. ื”ื—ื–ืจื” ืœืื—ื•ืจ ืžืชื‘ืฆืขืช ื’ื ืขืœ ืคื™ ืื•ืชื” ืชื•ื›ื ื™ืช.

ืื ื—ื ื• ื’ื ืคื•ืจืกื™ื ื”ืจื‘ื” kPHP ื•ื™ืฉ ืœื• ื’ื ืคื™ืชื•ื— ืžืฉืœื• ืกื™ืœื•ืŸ ืœืคื™ ื”ืชืจืฉื™ื ืœืžืขืœื”. ืžืื– ืฉืจืช HTTP ื‘ื™ื ืืจื™, ืื– ืื ื—ื ื• ืœื ื™ื›ื•ืœื™ื ืœื™ื™ืฆืจ diff - ื”ื‘ื™ื ืืจื™ ื”ืฉื—ืจื•ืจ ืฉื•ืงืœ ืžืื•ืช MB. ืœื›ืŸ, ื™ืฉ ื›ืืŸ ืืคืฉืจื•ืช ื ื•ืกืคืช - ื”ื’ืจืกื” ื›ืชื•ื‘ื” binlog copyfast. ืขื ื›ืœ ื‘ื ื™ื™ื” ื”ื™ื ื’ื“ืœื”, ื•ื‘ื–ืžืŸ ื”ื—ื–ืจื” ื”ื™ื ื’ื ืขื•ืœื”. ื’ึดืจึฐืกึธื” ืžืฉื•ื›ืคืœ ืœืฉืจืชื™ื. ืงื•ื™ืคืกื˜ื™ื ืžืงื•ืžื™ื™ื ืจื•ืื™ื ืฉื ื›ื ืกื” ื’ืจืกื” ื—ื“ืฉื” ืœ-binlog, ื•ืขืœ ื™ื“ื™ ืื•ืชื• ืฉื›ืคื•ืœ ืจื›ื™ืœื•ืช ื”ื ืœื•ืงื—ื™ื ืœืขืฆืžื ืืช ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ืฉืœ ื”ื‘ื™ื ืืจื™, ืžื‘ืœื™ ืœืขื™ื™ืฃ ืืช ื”ืฉืจืช ื”ืจืืฉื™ ืฉืœื ื•, ืืœื ืœืคื–ืจ ื‘ื–ื”ื™ืจื•ืช ืืช ื”ืขื•ืžืก ื‘ืจื—ื‘ื™ ื”ืจืฉืช. ืžื” ืขื•ืงื‘ ื”ืฉืงื” ืžื—ื•ื“ืฉืช ื•ื—ื™ื ื ื™ืช ืขื‘ื•ืจ ื”ื’ืจืกื” ื”ื—ื“ืฉื”.

ืขื‘ื•ืจ ื”ืžื ื•ืขื™ื ืฉืœื ื•, ืฉื”ื ื’ื ื‘ืขืฆื ื‘ื™ื ืืจื™ื™ื, ื”ืกื›ื™ืžื” ื“ื•ืžื” ืžืื•ื“:

  • ืขื ืฃ git master;
  • ื‘ื™ื ืืจื™ ื‘ deb;
  • ื”ื’ืจืกื” ื ื›ืชื‘ืช ืœ-binlog copyfast;
  • ืžืฉื•ื›ืคืœ ืœืฉืจืชื™ื;
  • ื”ืฉืจืช ืฉื•ืœืฃ .dep ื˜ืจื™;
  • dpkg -i;
  • ื”ืฉืงื” ืžื—ื“ืฉ ื—ื™ื ื ื™ืช ืœื’ืจืกื” ื—ื“ืฉื”.

ื”ื”ื‘ื“ืœ ื”ื•ื ืฉื”ื‘ื™ื ืืจื™ ืฉืœื ื• ืืจื•ื– ื‘ืืจื›ื™ื•ื ื™ื deb, ื•ื›ืืฉืจ ืฉื•ืื‘ื™ื ืื•ืชื dpkg -i ืžื•ื ื—ื™ื ืขืœ ื”ืžืขืจื›ืช. ืžื“ื•ืข kPHP ื ืคืจืก ื›ืงื•ื‘ืฅ ื‘ื™ื ืืจื™, ื•ืžื ื•ืขื™ื ื ืคืจืกื™ื ื›-dpkg? ื–ื” ืงืจื” ื›ื›ื”. ื–ื” ืขื•ื‘ื“ - ืืœ ืชื™ื’ืข ื‘ื–ื”.

ืงื™ืฉื•ืจื™ื ืฉื™ืžื•ืฉื™ื™ื:

ืืœื›ืกื™ื™ ืืงื•ืœื•ื‘ื™ืฅ' ื”ื•ื ืื—ื“ ืžืืœื” ืฉืžืกื™ื™ืขื™ื ื‘ืžืกื’ืจืช ื•ืขื“ืช ื”ืชื›ื ื™ืช PHP ืจื•ืกื™ื” ื‘-17 ื‘ืžืื™ ื™ื”ืคื•ืš ืœืื™ืจื•ืข ื”ื’ื“ื•ืœ ื‘ื™ื•ืชืจ ืขื‘ื•ืจ ืžืคืชื—ื™ PHP ื‘ืชืงื•ืคื” ื”ืื—ืจื•ื ื”. ืชืจืื” ืื™ื–ื” ืžื—ืฉื‘ ืžื’ื ื™ื‘ ื™ืฉ ืœื ื•, ืžื” ืจืžืงื•ืœื™ื (ืฉื ื™ื™ื ืžื”ื ืžืคืชื—ื™ื ืœื™ื‘ืช PHP!) - ื ืจืื” ื›ืžื• ืžืฉื”ื• ืฉืื™ ืืคืฉืจ ืœืคืกืคืก ืื ืืชื” ื›ื•ืชื‘ PHP.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”