áá ááĽá! áĽá Badoo áá áá áá
á á áἠáááłáľ ááľáĽ áá¤á˝á áľáá áĽáľááľ á áľááá: ááťáť á°áĽáłá˘á á°áťá˝áá, á¨áá¨áááľ á°á¨á á¨ááŻá - áᏠáŤá ááá á˝áá á PHP ááľáĽ á˛ááá˝ áĽá á¨á á ááľá áŤáá¸á áľááŞááśá˝á ááťá áá˝áá. áá Spiral Scout á¨á áá áĽáá˛ááľ á áľá˝ááłáᥠRoadRunner ᨠPHP-FPM á á°ááŤá á áĽáŤááá˝ ááŤá¨á áá á°á¨ áľááľáłá á áŤá¸áłáá áá á á°á¨á᪠á¨á áááá áľáá áá°áŁá (ááá áĽááłá áá á áŤááľ á¨áĽáľááľ áá°áąá á¨ááŤááłáľá á á˘ááá)ᢠá á áá áá á áá ááŁáŞáŤ áĽá¨áá¨áá ááᣠááá áá áĽáľáŤáá á¨ááááŤá ááá áá¤áľ á¨áááᢠáĽááąá áá á á á¨á áá á áľá°áłá˝ áááľá¨á ᣠᨠSpiral Scout á¨RoadRunner ááľáłáááŤá áľááá áĽáá°ááłááá˘
á¨á áááš á ááŤá¨áĽ ááĽá á áἠáá-á˝ááŽáťá˝áá á ááááłá áľ áá áĽá á°áá áĽááá áá ᨠPHP áĽá Go áľáĽáľáĽ áĽáá áááá ᣠá¨áááąá ááááá˝ áĽá áá˝á á ááááľ áĽá á ááąá áááá áĽáá°ááááá˘
áŁáááľ á áĽá áááłáľ ááľáĽ á¨áááአááľáĽ ááŠáŁááŤáá˝ áááá¨áťáá˝á ááĽá¨áá
áá˛áŤáá áááľ ááťááᣠáĽáľá¨ 40x á¨á ááťá¸á ááťáťáŤ áŤáá¸áá áľááá áá°áá áŞáŤáá˝ áĽááľáááᣠGo áĽáá°ááá°áá á°áá°áá áłáᢠá áĽáą á ááŤáááľ á¨áááąáá ááááá˝ áĽá áá˝ á ááŁáá á ááťáťá á PHP ááľáĽ á¨á°áá ááŁá áááśá˝á ááŤáá á˝ááá.
á¨á áĽá áá¤á˝á áĽáá¨áľ áĽááá°á á¨áááľ á˝ááŽá˝á ááááłáľ áĽáá´áľ áĽáá°áá¨áł áĽá á ááłááľ á˝ááŽá˝á áááľáááľ áá° ááłáŞáŤááľ áĽáá´áľ áĽáá°á°ááá áĽááááááłáá á˘
á¨áĽááľá áááłá áá¤á˝á áááľ á áŤáŁá˘
ᨠPHP áá˝ áá´áá ááá°áľ Goá áĽáá´áľ áá áá áĽáá°áá˝á á¨ááááŤá˝á á ááľáŁ á¨áĽááľáá ááŁáŞ á¨PHP áááľ á áŤáŁá˘á áĽááá˘
á á áĽááááš á ááŁááá˝ áá°áá áŞáŤáá ᨠnginx á¨áľá á áááá áĽá á¨PHP-FPM á ááááá á áá áá áá á¨ááŤááąáľá˘ á¨ááľáá á¨áááááłááą áááá˝á áŤááááá áĽá á¨á°áá°á áĽáŤááá˝á áá° áá¤á˝á-á¤ááá¤á áŤááŤáᣠáá¤á˝á-á¤ááá¤á áŤáą áá¤á˝á áŽáľá áá°áŤáᢠá áŁá áłáá á¨áááá Apache áĽá mod_php áĽáá¨áľ áĽá¨á°á áá ááá áá˝ááᢠááá áá áľáá˝ áá¨áľ áŁá ááአá˘á°áŤá, ááááš á°ááłáłá áá¸á.
PHP-FPM áĽáá´áľ á¨áá°áá áŞáŤ áŽáľ áĽáá°ááá˝á áĽáááá¨áľá˘ áĽáŤá á˛ááŁáŁ áá¤á˝á-á¤ááá¤á áá¤á˝á á¨áá áá°áľá ááááŤá áĽá á¨áĽáŤááá áááá áĽáá° á¨áááą á áŤá (_GETᣠ_POSTᣠ_SERVERᣠááá°) áŤáľá°ááááá˘
á PHP áľááŞááľ á áááá áá áľ áľá´áą áááἠá áá˝áá ᣠáľááá á á˛áľ á¨áá¤áľ ááἠáááááľ á ááľ ááááľ áĽáť áá-á¨áá°áąá áá á°á¨ áľááľáł á áá˝áłáľ áĽá áĽáá°áá á ááľáááá˘
áá á¨ááľáá¸á፠áá´á áĽá áĽá áá˝ á ááľ. áľá áá á°á¨ áľááľáł áááł áĽá áá¨áá á ááááĽááľá, ááá áá°áśá˝ áá ááá á¨á°ááá áá¸á, áĽá á¨ááŤá¨áá¸á á ááą "á¨áá°", á áŤáľ-á°á áĽáá°áá ááá áŤá áĽá á¨á°ááŠáľá áá°áśá˝ á áááłáá. ááá áá áá á ááŤá¨áĽ á áááŹá˝áá ááááá á ááá¨áá áľ áá á¨ááłáŠ ááłáśá˝á á ááľá˘
á¨áá°á á áá¤á˝á á áŤáŁá˘ ááłáśá˝ áĽá áľáááśá˝
ááŽáá˝áá áá¤á˝á ááᢠá¨áá áłá˛áŤ á á˛áľ ááŽáááľ á¨áľ áĽáá°áááá áŤááá - á áááá áááŤá˘ áĽááááľ ááá á¤á°ááťáááľáᣠORMsáᣠáľáááá˝á áĽá á áĽááśá˝á áŤáŤáľáłáᢠáĽá á áĽááἠááá á¨á°á áá ááĽá áľ á á ááľ ááá ááľáĽ (Symfony/HttpFoundation ááá PSR-7) ááľáĽ ááᣠáá˝ááᢠááááá˝ á áŞá áá¸á!
áá ááá ááá á¨áŤáą áá á áá. á ááááá á¨áľáá áľ á°á¨á áááá ááľáĽ ááá á¨á°á áá áĽáŤáá áááľáŹáľ ááá á¨ááἠááł áááľá¨áľ á˘áŤááľ á á°ááá á¨ááá አáááá˝á ááŤáᣠáĽá áááá˝á ááá á áĽá á ááŤáł á ááááŽá˝á áá°áá°á ááááĽááłáᢠáá á áŁá ááĽáá ááá áĽáŤááłááąá á°ááŁá á¨á¨á¨áą á áá áááá ááá áĽáá°áá áááá á áĽá áĽáá°áá áááá áŤáľáááááłá-á¨áááŠáľ áŽáľ áá á¨ááą áááá ᣠá áĽáą áĽááłáł áá áĽáŤáá á áŤáľáŹáąáᢠá áá ááá ááá˝á áááááá ááŽááŤáá áááአáĽá ááą áá á፠áááŁáľá áłáŤáá˝áá˘
áá¤á˝á áááá˛áśá˝ áĽáá
á°áá á¨ááŤá á´áááŽá˝á ᣠáááᎠáááá˝á ᣠá¨á°ááťáš á¤á°-áá˝áááľá ᣠáá¸ááŤáá˝á ᣠááá° á áá áá áá
áá á˝áá ááááłáľ ááááłáľ á˛ááá ááá°áá ᢠáá á áá¨á¨áť ᣠá ááá áááá áá°áá áŞáŤ áĽáá°áá ááľááá áĽá áĽáá°áá áĽá áĽáá°áá áááá á ááĽááľá˘ (á¨á áľá°ááá ááľáłááťáĄ- áá
á˝áá á¨áááŁáą áá á á¨áá áááľá áŤááá
áá¤á˝á ᨠGo áá á¨á ááľ á áá áĽáŤááá˝á ááłá áá˝áá?
á¨áĽááľ á°áááá˝ á áá á¨ááአ(áĽáľá¨ á°á áłáľ ááá áááľ) áŤá á¨PHP áľááŞááśá˝á ááá ááťáááĄ- áááłá ááŽá á°ááŁáŤáľáŁ CSV parsersᣠqueue breakersᢠááá á á°ááłáłá áááł áá°áŤá ââââá ááľá á°ááŁá á°ááľá¨á áŤááĄáłá, áŤá¨áááá áĽá ááŁáŠá áá áĽá. ááá áĽá á áááŹá˝áá áááŤá áĽá á°á¨á᪠áĽááááá˝ áľáááŤáľááá áŽáą áá áá á áá á°á¨ áľááľáł ááľáĽ áááŤá ᣠááľ ááá°á¨ááśá˝á áááĽáŁáá˘
ááá áá á¨á á ááľá áŤáá¸á áľááŞááśá˝á áááááľ ááá á áá°áá. ááááá áľá á°áľ áá°áąá áá á áá áááľááá, á¨áá á°á¨ áľááľáł ááłážá˝á ááááá á áŁá áŤá áłáŤá, áĽá F5 áá¨á á¨á áá á áá á ááťáá.
áá¤á˝á 7 á˛ááá áááłá ââá°áťá˝ááᥠá áľá°ááá á¨ááťáť á á°áŁáłá˘ áłá¨áŁ áľáá°áśá˝á áááľá°áááľ ááá áááᣠáĽá á¨á¨ááá ááŤáááŤáá˝ á áá ááá°áľ á¨áááťá áá¸áᢠáĽáááľ áá, áááá˛áśá˝ á ááá á ááľáłááľ áá ááá áĽá á áŽáľ ááľáĽ áŤá á¨áľá´áľ ááłáŽá˝á ááá á ááŁá¸á (áĽááá á áááŽá˝ á˝á áááľ á¨áá˝á ááá á á?). á áááᣠáá¤á˝á 7 á á áá°áĽá áŤááą á áľááŤá áááŽá˝ á ááľá˘
á¨á¨á á áá á¨áá¤á˝á áľááŞááśá˝ áá á¨ááľáŤáľá áá´á ááá°áľ ᣠáĽáá° HTTP áĽáŤááá˝á áááá á áŤá ááá á°ááŁáŤáľ áá ááľáááľ áĽá á áĽáŤááłááą áĽáŤá áááá ááá á¨áŁáś á¨ááŤá á áľáááááľá ááľáááľ ááťáá?
áá áá á˝áá ááááłáľ á ááááŞáŤ á¨á¤á˝á˛á˛á áĽáŤááá˝á á¨ááá á á¨á áááá á áááŹá˝á áá°áá á áĽá á á¨ááá áłáááľááľ á ááľ á á ááľ áá° áá¤á˝á á°áŤá°á ááá á ááĽáá˘
á¨áľá á ááááá á áášá áá¤á˝á (PHP-PM) ááá á C á áĽáŤ (áľáá) ááá áĽáá°ááá˝á áĽááá áá áᢠáĽá áĽáŤááłááą áá´ á¨áŤáą áĽá áá˝ á˘áá¨áá, áááąá á ááŤáŽá˝ áĽáá á ááľááá - á¨á áá ááá áĽáááááá. á¨áľá á áááá á¨á áá áĽáááááá - á PHP ááľáĽ "á¨á ááŤáŤ á áá" áá á°áŤááá á¨áá¨á°áą á˝ááŽá˝ ááŤáľáá á¨áá˝á áááľá áĽááááá áĽáá á áĽáá áá á ᣠáá á á á°ááłáłá áá áá°áá°á áá°áá áŞáŤáá˝ á ááá ááľá°áŤá¨á áĽá ááŤáá áá˝ááᢠáááľá á¨áá°áá áŞáŤ á áááá áĽááááááá˘
á áá áá ááľ áá¨áłá áá˝áá? áááá á áááŹá˝áá˝á áá° áá á áááľáŽá˝ áľáááŤá áá á ááá áĽáá°áá˝á á ááááᤠááľáá-ááľá¨á áá; á¨áŤáąáᣠá áŁá á¨ááŤááᣠáľáአá¨ááľáŹá áá´á (á°ááłáłá) áĽá á¨á¤á˝á˛á˛á áá áááľáŤáľ á¤á°ááá ááľ áá áááᢠáĽá á áá¨á¨áťá á áşáá˝ á¨ááá አáááľ ááá á¤á°-ááťáááľ áĽá áá á°áśá˝ ááĽá ááááá˘
áááľ á¨ááŽááŤááá ááááá˝á á¨ááŁáá á˝ááŽá˝
á ááááŞáŤ á°á¨á, áááľ ááá á¨á፠á áá áá°áá áŞáŤáá˝ áĽáá´áľ áĽááľ á ááľ áĽáá°áááá ááá°á á áľááá áá á.
áááłá á áá áá
áĽá á¨á°áá¨, áá áἠá¨á°ááá° á ááŤá¨áĽ ááá áá áá°áá: áśáŹáśá˝ / á§áá§áá˝ á áŠá áá°áśá˝ ááŤá¨á ááľá°ááĽá áááááŁáľ. áá á ááŤá¨áĽ áŁáááľ á áĽáá° áááłáľ ááľáĽ á áľá°ááá áá á¨á°áá á˛áá á áľááá° áááá á°á¨á á áĽáŠ áááł á¨á°áťáťá áá.
áááááᣠá áá°áśá˝ ááŤá¨á ááἠáááááἠáĽá á¨ááľá°ááá፠áľá
á°áśá˝á áááľá°áááľ ááá á¨áááľáŽá˝ ááŽáśáŽáá áá ááᢠá áŁá ááá á áá áááŠ, á¨áá
á áááľ ááŽáśáŽá á°ááłáłá áá
á á°á áááá áľ áá¤á˝á á áŠá
á ááľ ááŽáśáŽá á á áŤááá ááľáá áá á - áĽá á¨áá°áá á˝ááłá á¨áá¨ááá˘
á°ááŁáŤáľá á á ááŤáł áá¤á˝á á°áŤá°áá˝ áá°áŤá¨áľá˘
á¨ááľá°ááĽá áá´á á¨á°á ááá á áá áľáŤáá˝á áá° áá¤á˝á áá°áśá˝ áááľá°ááá á áŁá áááŁá ááááľ áá°áĽ áááá. á ááľ á°ááŁá á˛áᣠá áááŹá˝á á áááá áĽáąá áááľáá¸á áá á áŤá°á ááá¨áĽ á áá áľá˘ á ááľ á°áŤá°á/áá°áľ á áľá á°áľ á¨áᣠááá "á¨áá°" áĽááľááá°ááá áĽá á¨áá°áŤ á á˛áľ áĽáááĽáŤááᢠáĽá á°áŤá°áá / áá°áą á á°áłáŤ áááł á¨á°á ááá, á°ááŁáŽá˝á ááá¨ááá áá°áááá á¨á°áŤá°áá˝ áľáĽáľáĽ áĽáááá°ááá.
á¨áá á°áŤá°áá˝á áááł ááá¨áá¸áľ, áĽáá áááá
á áá¤áąáᣠá áááľáŽá˝ ááá á¨ááááĄáľá áááááá áĽáŤááá˝ ááľá°áááľ á¨áá˝á á¨áá°áŤ áá¤á˝á á áááá á ááá°ááá˘
áá°áá áŞáŤá˝á áĽáá° áľá á áááá ááľáŤáľ áĽáá˛áááᣠáááááá áᢠHTTP áĽáŤááá˝á áááá¨á á áľá°ááá á¨PHP ááľáááľ ááá¨áĽ áá á¨áĽáᢠá áĽá áááł, áĽá áĽáť
PSR-7 á¨áááááἠáá á°áĽá áľáááłá°áĽ (á ááłááśá˝ á á´áááŤá á áá°áá ááá)ᣠááá˘áá˝ áĽáŤááá á ááá á°á¨á áĽáá° áááá ááá á áŤá á¨ááááá¨áą áá°áá áŞáŤáá˝á ááťá á ááŁá¸áᢠáá á¨á¨á á áá ᨠPHP áá°áśá˝ á˝áá°-ááłáĽ áá á áĽáŠ áááł ááŁáŁááᢠáĽáľáŤáá áľá áŤáá°á áá°á á¨áá¨á¨áť á ááťá¸áá˝á áá á áááľááá˘
RoadRunnerá á ááľá°ááá
áá - á¨áá°á á ááťá¸á PHP áá°áá áŞáŤ á áááá
á¨ááááŞáŤá á¨áá¨áŤ áľáŤá˝á á¨á¤áá á ááᣠáá áᣠáĽáąá á á¨ááá á áááłáá áááł á¨ááááł (á¨á°ááá°á á áŁá áĽá áá)ᢠááá áĽááłá nginx á á áĽááááš áááłáá˝ á á á˘ááá, ááá á áá áááľ áá¨áá áľáááąá á ááĽááľ áááŁá á áľáááťáá 502 áľá á°áśá˝á á áá°á áááľ á ááĽááá.
áá áá áááľá ááá°áŤáľ á 2018 ááááŞáŤ áá á¨ááááŞáŤáá PHP/Go áá°áá áŞáŤ á°áá¨á á á°ááá°ááᢠáĽá áá˛áŤáá á áľá°áá áá¤áľ á áá! á¨502 áľá á°áąá áá á áá ááĽááľ áĽáť áłááá á¨á ááááŽášá ááĽá á áááľ áśáľá°á ááááľ á˝áááᤠáĽá áááἠá ááá ἠáá˘áá ááŽá˝ áĽá á¨áááľ á áľá°áłáłáŞáá˝ á¨áŤáľ ááłáľ áŞááá˘
á áááą á ááá˝ áá áááľáá˝áá á áťá˝ááááᣠá MIT áááľ á GitHub áá á áłáľáá á°ááá á áááááá˘
RoadRunner áĽáá´áľ á¨áĽááľáá á¨áĽáľááľ ááá ááťáťá áá˝ááá˘
áľáá áŤ
á áĽáŽ á á°á°áŤá RPC ááľáá áááŁáá á¨á¤ááľá´áá˝á áá á
ááŤáá˝á áłáá˝á á¨áááááá ᨠGo á¤á°-áá˝áááľ áPHP ááááľ áá˝ááᢠá¨ááá á ááᣠá RoadRunner á á˛áľ á¤á˝á˛á˛á áŤááá á ááááŽá˝á áá°ááŤáľ áá˝ááᢠááłááá˝ á PHP ááľáĽ á°ááŁáŁáŞáá˝á áááľá áŤáŤáľáłá
á PHP áĽá Go áá á á¨á°áŚá˝ áĽáá á¨áááľááá áá¨áááľ á áťá˝áááᣠá á ááłááľ áá¨áŤáá˝ á¨áá°áá áŞáŤ á ááťá¸áá áĽáľá¨ 40 áá á¨áá¨ááᣠá¨á°áťáťá á¨áá¨á፠ááłáŞáŤáá˝áᣠá¨á˛ááá áááá áá áááááá áĽá á HTTPSᣠHTTP/2 áľáá á¨áá¨ááᢠá°á°áŞáá˝ áĽá PSR-17.
áá°áá°ááŤ
á ááłááľ á°áá˝ á ááá áĽáá° áááá°á áĽá á¨ááá á á ááá ááááľáá¨áľ áááá áááá áĽáť áĽáŠ áĽáá°áá á ááŁá ᾠᨠPHP á áľá°áłá°áĽ ááľáĽ á°ááááᢠáĽááá á°áá˝ áá¤á˝á áá°áĽ á áá áá áá˝ááᥠá áááŹá˝á á á á áááł á˛á¨ááᣠá¨á áá âá áłáâ ááá ááá¨áĽ áĽá ááĽá á ááłáľ á¨á°á áŤáááá á¨áŽáľ áá°á¨áľ áĽáá°áá ááá á ááŚáľá˘
ááá áá áááľ ááľá áľ áĽááááá: áĽáá°áá á áľáĽ. á PHP ááá áá°áŚá˝á áŤáááá¸á á áá° áĽáť áĽáá°áá áĽáááááᢠáááááśá˝á á°áľáá á¨áááá áááááľ á ááá¨á á¨á ááą ááá áá° áá á áá¸ááá áá á áááľáá ááłáá áá˝áá ááá ááááá˝á áĽáá° ááłáŞáŤ áá°áĽ áááá áá˝ááᢠáĽáá° áá¤á˝á áŤá á¨ááłá°áĄáľ á¨ááá ááľááśá˝ ááľáŹáą ááááŤáľ ááá áá˝ááᢠáĽá áĽáá° Go áŤá ááááá˝ áá áŤáá áąáľáŁ áááááá ááá ááá áá á¨á°áá°áĄ á¨á áá áááá áááśá˝á áááĽáŤáá˘
á¨á áĽá áá¤á˝á áľáĽáľáĽ áá á¨á°áŤáᣠáĽáááłá¸ááá áááľ áĽáá˝áááᢠá ááąá áááá ááľáááľ áááľá¨á á áá°áĽáá - á á°ááŤáá ᣠá¨áá áľáἠááá á¨á áá áá áááááľ ááááśá˝á áĽááááááá˘
UPD: á¨RoadRunner ááŁáŞá áĽá á¨áááá ááŁáĽá á°áŁáŁáŞ á°áŤá˛ áĽááłá á°á
á áᥠ-
ááá: hab.com