ื ื™ืฆืŸ ืžืงืจืึธื•ื˜ืขืจ ืฆื• ื•ื•ืึธื’ ืžืขืžืงืึทื˜ืฉืขื“ ื›ืึธืจื™ื–ืึทื ื˜ืึทืœื™

ื ื™ืฆืŸ ืžืงืจืึธื•ื˜ืขืจ ืฆื• ื•ื•ืึธื’ ืžืขืžืงืึทื˜ืฉืขื“ ื›ืึธืจื™ื–ืึทื ื˜ืึทืœื™

ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ื”ื•ื™ืš-ืžืึทืกืข ืคึผืจืึทื“ื–ืฉืขืงืก ืื™ืŸ ืงื™ื™ืŸ ืฉืคึผืจืึทืš ืจื™ืงื•ื•ื™ื™ืขืจื– ืึท ืกืคึผืขืฆื™ืขืœ ืฆื•ื’ืึทื ื’ ืื•ืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืกืคึผืขืฆื™ืขืœ ืžื›ืฉื™ืจื™ื, ืึธื‘ืขืจ ื•ื•ืขืŸ ืขืก ืงื•ืžื˜ ืฆื• ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ืŸ PHP, ื“ื™ ืกื™ื˜ื•ืึทืฆื™ืข ืงืขื ืขืŸ ื•ื•ืขืจืŸ ืึทื–ื•ื™ ืคืึทืจืฉื˜ืึทืจืงืŸ ืึทื– ืื™ืจ ื”ืึธื‘ืŸ ืฆื• ืึทื ื˜ื•ื•ื™ืงืœืขืŸ, ืœืžืฉืœ, ืื™ื™ื’ืขื ืข ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ. ืื™ืŸ ื“ืขื ื˜ืึธืŸ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ื‘ืึทืงืึทื ื˜ืข ื•ื•ื™ื™ื˜ื™ืง ืžื™ื˜ ื“ื™ืกื˜ืจื™ื‘ื™ื•ื˜ื™ื“ ืกืขืกื™ืข ืกื˜ืึธืจื™ื“ื–ืฉ ืื•ืŸ ื“ืึทื˜ืŸ ืงืึทื˜ืฉื™ื ื’ ืื™ืŸ ืžืขืžืงืึทื˜ืฉืขื“ ืื•ืŸ ื•ื•ื™ ืžื™ืจ ืกืึทืœื•ื•ื“ ื“ื™ ืคึผืจืึธื‘ืœืขืžืก ืื™ืŸ ืื™ื™ืŸ "ืงืขืกื˜ืงื™ื ื“" ืคึผืจื•ื™ืขืงื˜.

ื“ืขืจ ื”ืขืœื“ ืคื•ืŸ ื“ืขืจ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืื™ื– ืึท PHP ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืกื™ืžืคืึธื ื™ 2.3 ืคืจื™ื™ืžื•ื•ืขืจืง, ื•ื•ืึธืก ืื™ื– ื ื™ืฉื˜ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ื’ืขืฉืขืคื˜ ืคึผืœืึทื ื– ืฆื• ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื’ืึทื ืฅ ื ืึธืจืžืึทืœ ืกืขืกื™ืข ืกื˜ืึธืจื™ื“ื–ืฉ, ื“ืขื ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ืคื•ืœ ื ื•ืฆืŸ "ืงืึทื˜ืฉื™ื ื’ ืึทืœืฅ" ืคึผืึธืœื™ื˜ื™ืง ืื™ืŸ memcached: ืจืขืกืคึผืึธื ืกืขืก ืฆื• ืจื™ืงื•ื•ืขืก ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื•ืŸ ืึทืคึผื™ ืกืขืจื•ื•ืขืจืก, ืคืึทืจืฉื™ื“ืŸ ืคืœืึทื’ืก, ืœืึทืงืก ืคึฟืึทืจ ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ืงืึธื“ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืื•ืŸ ืคื™ืœ ืžืขืจ. ืื™ืŸ ืึทื–ืึท ืึท ืกื™ื˜ื•ืึทืฆื™ืข, ืึท ื‘ืจื™ื™ืงื“ืึทื•ืŸ ืคื•ืŸ ืžืขืžืงืึทื˜ืฉืขื“ ื•ื•ืขืจื˜ ืคืึทื˜ืึทืœ ืคึฟืึทืจ ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืงืึทืฉ ืึธื ื•ื•ืขืจ ืคื™ืจื˜ ืฆื• ืขืจื ืกื˜ ืคืืœื’ืŸ: ื“ื™ DBMS ื”ื™ื™ื‘ื˜ ืฆื• ืคึผืœืึทืฆืŸ ืื™ืŸ ื“ื™ ืกื™ืžื–, ืึทืคึผื™ ื‘ืึทื“ื™ื ื•ื ื’ืก ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ืคืึทืจื‘ืึธื˜ ืจื™ืงื•ื•ืขืก, ืืื–"ื• ื•. ืกื˜ืึทื‘ื™ืœื™ื–ื™ืจืŸ ื“ื™ ืกื™ื˜ื•ืึทืฆื™ืข ืงืขืŸ ื ืขืžืขืŸ ื˜ืขื ืก ืคื•ืŸ ืžื™ื ื•ื˜, ืื•ืŸ ืื™ืŸ ื“ืขื ืฆื™ื™ื˜, ื“ื™ ื“ื™ื ืกื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืฉืจืขืงืœืขืš ืคึผืึทืžืขืœืขืš ืึธื“ืขืจ ื’ืึธืจ ืึทื ืึทื•ื•ื™ื™ืœืึทื‘ืึทืœ.

ืžื™ืจ ื”ืื‘ืŸ ื’ืขื“ืืจืคื˜ ืฆื•ืฉื˜ืขืœืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื›ืึธืจื™ื–ืึทื ื˜ืึทืœื™ ื•ื•ืึธื’ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ืงืœื™ื™ืŸ ืžื™, ื“.ื”. ืžื™ื˜ ืžื™ื ื™ืžืึทืœ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ื™ ืžืงื•ืจ ืงืึธื“ ืื•ืŸ ืคื•ืœ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืืคื’ืขื”ื™ื˜. ืžืึทื›ืŸ ื“ื™ ืงืึทืฉ ื ื™ื˜ ื‘ืœื•ื™ื– ืงืขื’ื ืฉื˜ืขืœื™ืง ืฆื• ืคื™ื™ืœื™ืขืจื–, ืึธื‘ืขืจ ืื•ื™ืš ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืžื™ื ืึทืžื™ื™ื– ื“ืึทื˜ืŸ ืึธื ื•ื•ืขืจ ืคื•ืŸ ืขืก.

ื•ื•ืึธืก ืื™ื– ืคืึทืœืฉ ืžื™ื˜ ืžืขืžืงืึทื˜ืฉืขื“ ื–ื™ืš?

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ื™ ืžืขืงืึทื˜ืฉืขื“ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืคึฟืึทืจ PHP ืฉื˜ื™ืฆื˜ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื“ืึทื˜ืŸ ืื•ืŸ ืกืขืกื™ืข ืกื˜ืึธืจื™ื“ื–ืฉ ืื•ื™ืก ืคื•ืŸ ื“ื™ ืงืขืกื˜ืœ. ื“ืขืจ ืžืขืงืึทื ื™ื–ืึทื ืคึฟืึทืจ ืงืึธื ืกื™ืกื˜ืขื ื˜ ืฉืœื™ืกืœ ื›ืึทืฉื™ื ื’ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื™ื•ื•ืึทื ืœื™ ืฉื˜ืขืœืŸ ื“ืึทื˜ืŸ ืื•ื™ืฃ ืคื™ืœืข ืกืขืจื•ื•ืขืจืก, ื™ื™ื ืฆื™ืง ืึทื“ืจืขืกื™ื ื’ ื™ืขื“ืขืจ ืกืคึผืขืฆื™ืคื™ืฉ ืฉืœื™ืกืœ ืฆื• ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืกืขืจื•ื•ืขืจ ืคื•ืŸ ื“ืขืจ ื’ืจื•ืคึผืข, ืื•ืŸ ื“ื™ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืคืึทื™ืœืึธื•ื•ืขืจ ืžื›ืฉื™ืจื™ื ืขื ืฉื•ืจ ื”ื•ื™ืš ืึทื•ื•ื™ื™ืœืึทื‘ื™ืœืึทื˜ื™ ืคื•ืŸ ื“ื™ ืงืึทื˜ืฉื™ื ื’ ื“ื™ื ืกื˜ (ืึธื‘ืขืจ, ืœื™ื™ื“ืขืจ, ืงื™ื™ืŸ ื“ืึทื˜ืŸ).

ื˜ื™ื ื’ื– ื–ืขื ืขืŸ ืึท ื‘ื™ืกืœ ื‘ืขืกืขืจ ืžื™ื˜ ืกืขืกื™ืข ืกื˜ืึธืจื™ื“ื–ืฉ: ืื™ืจ ืงืขื ืขืŸ ืงืึทื ืคื™ื’ื™ืขืจ memcached.sess_number_of_replicas, ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื•ื•ืึธืก ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืกื˜ืึธืจื“ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืกืขืจื•ื•ืขืจืก ืื™ืŸ ืึทืžืึธืœ, ืื•ืŸ ืื™ืŸ ื“ื™ ื’ืขืฉืขืขื ื™ืฉ ืคื•ืŸ ืึท ื“ื•ืจื›ืคืึทืœ ืคื•ืŸ ืื™ื™ืŸ ืžืขืžืงืึทื˜ืฉืขื“ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื˜ืจืึทื ืกืคืขืจื“ ืคื•ืŸ ืื ื“ืขืจืข. ืึธื‘ืขืจ, ืื•ื™ื‘ ื“ืขืจ ืกืขืจื•ื•ืขืจ ืงื•ืžื˜ ืฆื•ืจื™ืง ืึธื ืœื™ื™ืŸ ืึธืŸ ื“ืึทื˜ืŸ (ื•ื•ื™ ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื›ืึทืคึผืึทื ื– ื ืึธืš ืึท ืจื™ืกื˜ืึทืจื˜), ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืฉืœื™ืกืœืขืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืจื™ื“ื™ืกื˜ืจื™ื™ื˜ื™ื“ ืื™ืŸ ื–ื™ื™ืŸ ื˜ื•ื™ื•ื•ืข. ืื™ืŸ ืคืึทืงื˜ ื“ืึธืก ื•ื•ืขื˜ ืžื™ื™ื ืขืŸ ืึธื ื•ื•ืขืจ ืคื•ืŸ ืกืขืกื™ืข ื“ืึทื˜ืŸ, ื–ื™ื ื˜ ืขืก ืื™ื– ืงื™ื™ืŸ ื•ื•ืขื’ ืฆื• "ื’ื™ื™ืŸ" ืฆื• ืืŸ ืื ื“ืขืจ ืจืขืคึผืœื™ืงืข ืื™ืŸ ืคืึทืœ ืคื•ืŸ ืึท ืคืึทืจืคื™ืจืŸ.

ื ืึธืจืžืึทืœ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืžื›ืฉื™ืจื™ื ื–ืขื ืขืŸ ืึทื™ืžืขื“ ื“ืขืจ ื”ื•ื™ืคึผื˜ ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืกืงื™ื™ืœื™ื ื’: ื–ื™ื™ ืœืึธื–ืŸ ืื™ืจ ืฆื• ืคืึทืจื’ืจืขืกืขืจืŸ ื“ื™ ืงืึทืฉ ืฆื• ื“ื–ืฉื™ื™ื’ืึทื ื˜ื™ืง ืกื™ื–ืขืก ืื•ืŸ ืฆื•ืฉื˜ืขืœืŸ ืึทืงืกืขืก ืฆื• ืขืก ืคึฟื•ืŸ ืงืึธื“ ื›ืึธื•ืกื˜ื™ื“ ืื•ื™ืฃ ืคืึทืจืฉื™ื“ืขื ืข ืกืขืจื•ื•ืขืจืก. ืึธื‘ืขืจ, ืื™ืŸ ืื•ื ื“ื–ืขืจ ืกื™ื˜ื•ืึทืฆื™ืข, ื“ื™ ื‘ืึทื ื“ ืคื•ืŸ ืกื˜ืึธืจื“ ื“ืึทื˜ืŸ ื˜ื•ื˜ ื ื™ืฉื˜ ื™ืงืกื™ื“ ืขื˜ืœืขื›ืข ื’ื™ื’ืื‘ื™ื™ื˜, ืื•ืŸ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ ืื™ื™ืŸ ืึธื“ืขืจ ืฆื•ื•ื™ื™ ื ืึธื•ื“ื– ืื™ื– ื’ืึทื ืฅ ื’ืขื ื•ื’. ืึทืงืงืึธืจื“ื™ื ื’ืœื™, ื“ื™ ื‘ืœื•ื™ื– ื ื•ืฆื™ืง ื ืึธืจืžืึทืœ ืžื›ืฉื™ืจื™ื ืงืขืŸ ื–ื™ื™ืŸ ืฆื• ืขื ืฉื•ืจ ื“ื™ ืึทื•ื•ื™ื™ืœืึทื‘ื™ืœืึทื˜ื™ ืคื•ืŸ ืžืขืžืงืึทื˜ืฉืขื“ ืื•ืŸ ื”ืึทืœื˜ืŸ ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ ืื™ื™ืŸ ืงืึทืฉ ื‘ื™ื™ึทืฉืคึผื™ืœ ืื™ืŸ ืืจื‘ืขื˜ืŸ ืฆื•ืฉื˜ืึทื ื“. ืึธื‘ืขืจ, ืขืก ืื™ื– ื ื™ืฉื˜ ืžืขื’ืœืขืš ืฆื• ื ื•ืฆืŸ ืืคื™ืœื• ื“ื™ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ... ื“ืึธ ืขืก ืื™ื– ื•ื•ืขืจื˜ ืฆื• ื“ืขืจืžืึธื ืขืŸ ื“ื™ ืึทื ื˜ื™ืงื•ื•ื™ื˜ื™ ืคื•ืŸ ื“ื™ ืคืจื™ื™ืžื•ื•ืขืจืง ื’ืขื ื™ืฆื˜ ืื™ืŸ ื“ืขื ืคึผืจื•ื™ืขืงื˜, ื•ื•ืึธืก ืื™ื– ื•ื•ืึธืก ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืื•ืžืžืขื’ืœืขืš ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ื‘ืขืงืŸ ืคื•ืŸ ืกืขืจื•ื•ืขืจืก. ืœืึธืžื™ืจ ืื•ื™ืš ื ื™ืฉื˜ ืคืึทืจื’ืขืกืŸ ื•ื•ืขื’ืŸ ื“ื™ ืึธื ื•ื•ืขืจ ืคื•ืŸ ืกืขืกื™ืข ื“ืึทื˜ืŸ: ื“ืขืจ ืงื•ื ื” ืก ืื•ื™ื’ ื˜ื•ื•ื™ื˜ืฉื˜ ืคื•ืŸ ื“ื™ ืžืึทืกื™ื•ื• ืœืึธื’ืึธื•ื˜ ืคื•ืŸ ื™ื•ื–ืขืจื–.

ื™ื“ืขืึทืœืœื™ ืขืก ืื™ื– ืคืืจืœืื ื’ื˜ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคื•ืŸ ืจืขืงืึธืจื“ืก ืื™ืŸ ืžืขืžืงืึทื˜ืฉืขื“ ืื•ืŸ ื‘ื™ื™ืคึผืึทืกื™ื ื’ ืจืขืคึผืœืึทืงืึทื– ืื™ืŸ ืคืึทืœ ืคื•ืŸ ืึท ื˜ืขื•ืช ืึธื“ืขืจ ื˜ืขื•ืช. ื’ืขื”ืึธืœืคึฟืŸ ืื•ื ื“ื– ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ืขื ืกื˜ืจืึทื˜ืขื’ื™ืข ืžืงืจื•ื™ื˜ืขืจ.

ืžืงืจื•ื™ื˜ืขืจ

ื“ืึธืก ืื™ื– ืึท ืžืขืžืงืึทื˜ืฉืขื“ ืจืึทื•ื˜ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื“ื•ืจืš Facebook ืฆื• ืกืึธืœื•ื•ืข ื–ื™ื™ืŸ ืคึผืจืึธื‘ืœืขืžืก. ืขืก ืฉื˜ื™ืฆื˜ ื“ื™ ืžืขืžืงืึทื˜ืฉืขื“ ื˜ืขืงืกื˜ ืคึผืจืึธื˜ืึธืงืึธืœ, ื•ื•ืึธืก ืึทืœืึทื•ื– ื•ื•ืึธื’ ืžืขืžืงืึทื˜ืฉืขื“ ื™ื ืกื˜ืึทืœื™ื™ืฉืึทื ื– ืฆื• ืžืขืฉื•ื’ืข ืคึผืจืึทืคึผืึธืจืฉืึทื ื–. ื ื“ื™ื˜ื™ื™ืœื“ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ืžืึทืงืจืึธื•ื˜ืขืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื“ืขื ืžืขืœื“ืŸ. ืฆื•ื•ื™ืฉืŸ ืื ื“ืขืจืข ื–ืื›ืŸ ื‘ืจื™ื™ื˜ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืขืก ืงืขืŸ ื˜ืึธืŸ ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ:

  • ืจืขืคึผืœืึทืงื™ื™ื˜ ืจืขืงืึธืจื“;
  • ื˜ืึธืŸ ืคืึทืœื‘ืึทืง ืฆื• ืื ื“ืขืจืข ืกืขืจื•ื•ืขืจืก ืื™ืŸ ื“ืขืจ ื’ืจื•ืคึผืข ืื•ื™ื‘ ืึท ื˜ืขื•ืช ืึทืงืขืจื–.

ื’ื™ื™ ืืจื‘ืขื˜ืŸ!

ืžืึทืงืจืึธื•ื˜ืขืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ

ืื™ืš ื•ื•ืขืœ ื’ื™ื™ืŸ ื’ืœื™ื™ืš ืฆื• ื“ื™ ืงืึธื ืคื™ื’ื•ืจืึทื˜ื™ืึธืŸ:

{
 "pools": {
   "pool00": {
     "servers": [
       "mc-0.mc:11211",
       "mc-1.mc:11211",
       "mc-2.mc:11211"
   },
   "pool01": {
     "servers": [
       "mc-1.mc:11211",
       "mc-2.mc:11211",
       "mc-0.mc:11211"
   },
   "pool02": {
     "servers": [
       "mc-2.mc:11211",
       "mc-0.mc:11211",
       "mc-1.mc:11211"
 },
 "route": {
   "type": "OperationSelectorRoute",
   "default_policy": "AllMajorityRoute|Pool|pool00",
   "operation_policies": {
     "get": {
       "type": "RandomRoute",
       "children": [
         "MissFailoverRoute|Pool|pool02",
         "MissFailoverRoute|Pool|pool00",
         "MissFailoverRoute|Pool|pool01"
       ]
     }
   }
 }
}

ืคืืจื•ื•ืืก ื“ืจื™ื™ ืคึผืึธืึธืœืก? ืคืืจื•ื•ืืก ื–ืขื ืขืŸ ืกืขืจื•ื•ืขืจืก ืจื™ืคึผื™ื˜ื™ื“? ื–ืืœ ืก ืคื™ื’ื•ืจ ืื•ื™ืก ื•ื•ื™ ืขืก ืึทืจื‘ืขื˜.

  • ืื™ืŸ ื“ืขื ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, mcrouter ืกืึทืœืขืงืฅ ื“ื™ ื•ื•ืขื’ ืฆื• ื•ื•ืึธืก ื“ื™ ื‘ืขื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืฉื™ืงื˜ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื‘ืขื˜ืŸ ื‘ืึทืคึฟืขืœ. ื“ืขืจ ื‘ื—ื•ืจ ื–ืึธื’ื˜ ืื™ื ื“ืึธืก OperationSelectorRoute.
  • ื‘ืึทืงื•ืžืขืŸ ืจื™ืงื•ื•ืขืก ื’ื™ื™ืŸ ืฆื• ื“ื™ ื”ืึทื ื“ืœืขืจ RandomRouteื•ื•ืึธืก ืจืึทื ื“ืึทืžืœื™ ืกืึทืœืขืงืฅ ืึท ื‘ืขืงืŸ ืึธื“ืขืจ ืžืึทืจืฉืจื•ื˜ ืฆื•ื•ื™ืฉืŸ ืžืขื ื’ืข ืึทื‘ื“ื–ืฉืขืงืฅ children. ื™ืขื“ืขืจ ืขืœืขืžืขื ื˜ ืคื•ืŸ ื“ืขื ืžืขื ื’ืข ืื™ื– ืื™ืŸ ืงืขืจ ืึท ื”ืึทื ื“ืœืขืจ MissFailoverRoute, ื•ื•ืึธืก ื•ื•ืขื˜ ื’ื™ื™ืŸ ื“ื•ืจืš ื™ืขื“ืขืจ ืกืขืจื•ื•ืขืจ ืื™ืŸ ื“ื™ ื‘ืขืงืŸ ื‘ื™ื– ืขืก ื ืขืžื˜ ืึท ืขื ื˜ืคืขืจ ืžื™ื˜ ื“ืึทื˜ืŸ, ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื•ืžื’ืขืงืขืจื˜ ืฆื• ื“ืขื ืงืœื™ืขื ื˜.
  • ืื•ื™ื‘ ืžื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ ืื•ื™ืกืฉืœื™ืกืœืขืš MissFailoverRoute ืžื™ื˜ ืึท ื‘ืขืงืŸ ืคื•ืŸ ื“ืจื™ื™ ืกืขืจื•ื•ืขืจืก, ืึทืœืข ืจื™ืงื•ื•ืขืก ื•ื•ืึธืœื˜ ืงื•ืžืขืŸ ืขืจืฉื˜ืขืจ ืฆื• ื“ืขืจ ืขืจืฉื˜ืขืจ ืžืขืžืงืึทื˜ืฉืขื“ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ืŸ ื“ื™ ืžื ื•ื—ื” ื•ื•ืึธืœื˜ ื‘ืึทืงื•ืžืขืŸ ืจื™ืงื•ื•ืขืก ืื•ื™ืฃ ืึท ืจื™ื–ื™ื“ื–ืฉื•ืึทืœ ื™ืงืขืจ ื•ื•ืขืŸ ืขืก ืื™ื– ืงื™ื™ืŸ ื“ืึทื˜ืŸ. ืึทื–ืึท ืึท ืฆื•ื’ืึทื ื’ ื•ื•ืึธืœื˜ ืคื™ืจืŸ ืฆื• ื™ื‘ืขืจื™ืง ืžืึทืกืข ืื•ื™ืฃ ื“ืขืจ ืขืจืฉื˜ืขืจ ืกืขืจื•ื•ืขืจ ืื™ืŸ ื“ืขืจ ืจืฉื™ืžื”, ืึทื–ื•ื™ ืขืก ืื™ื– ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื“ืจื™ื™ ืคึผืึธืึธืœืก ืžื™ื˜ ื•ื•ืขื ื“ื˜ ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืกื™ืงื•ื•ืึทื ืกื™ื– ืื•ืŸ ืกืขืœืขืงื˜ื™ืจืŸ ื–ื™ื™ ืจืึทื ื“ืึทืžืœื™.
  • ืึทืœืข ืื ื“ืขืจืข ืจื™ืงื•ื•ืขืก (ืื•ืŸ ื“ืึธืก ืื™ื– ืึท ืจืขืงืึธืจื“) ื–ืขื ืขืŸ ืคึผืจืึทืกืขืกื˜ ื ื™ืฆืŸ AllMajorityRoute. ื“ืขืจ ื”ืึทื ื“ืœืขืจ ืกืขื ื“ื– ืจื™ืงื•ื•ืขืก ืฆื• ืึทืœืข ืกืขืจื•ื•ืขืจืก ืื™ืŸ ื“ื™ ื‘ืขืงืŸ ืื•ืŸ ื•ื•ืึทืจื˜ืŸ ืคึฟืึทืจ ืจืขืกืคึผืึธื ืกืขืก ืคื•ืŸ ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ N/2 + 1 ืคื•ืŸ ื–ื™ื™. ืคื•ืŸ ื ื•ืฆืŸ AllSyncRoute ืคึฟืึทืจ ืฉืจื™ื™ึทื‘ืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื”ืื˜ ืฆื• ื–ื™ื™ืŸ ืคืืจืœืื–ืŸ, ื–ื™ื ื˜ ื“ืขื ืื•ืคึฟืŸ ืจื™ืงื•ื•ื™ื™ืขืจื– ืึท positive ืขื ื˜ืคืขืจ ืคื•ืŸ ืึทืœืข ืกืขืจื•ื•ืขืจืก ืื™ืŸ ื“ืขืจ ื’ืจื•ืคึผืข - ืึทื ื“ืขืจืฉ ืขืก ื•ื•ืขื˜ ืฆื•ืจื™ืงืงื•ืžืขืŸ SERVER_ERROR. ื›ืึธื˜ืฉ ืžืงืจืึธื•ื˜ืขืจ ื•ื•ืขื˜ ืœื™ื™ื’ืŸ ื“ื™ ื“ืึทื˜ืŸ ืฆื• ื‘ื ื™ืžืฆื ืงืึทื˜ืฉืขืก, ื“ื™ ืคืึทืš ืคืคึผ ืคึฟื•ื ืงืฆื™ืข ื•ื•ืขื˜ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึท ื˜ืขื•ืช ืื•ืŸ ื•ื•ืขื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึธื ื–ืึธื’. AllMajorityRoute ืื™ื– ื ื™ืฉื˜ ืึทื–ื•ื™ ืฉื˜ืจืขื ื’ ืื•ืŸ ืึทืœืึทื•ื– ืึทืจื•ื™ืฃ ืฆื• ื”ืึทืœื‘ ืคื•ืŸ ื“ื™ ื•ื ื™ืฅ ืฆื• ื–ื™ื™ืŸ ื’ืขื ื•ืžืขืŸ ืื•ื™ืก ืคื•ืŸ ื“ื™ื ืกื˜ ืึธืŸ ื“ื™ ืคืจืื‘ืœืขืžืขืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื•ื™ื‘ืŸ.

ื”ื•ื™ืคึผื˜ ื›ื™ืกืึธืจืŸ ื“ืขืจ ืกื›ืขืžืข ืื™ื– ืึทื– ืื•ื™ื‘ ืขืก ื˜ืึทืงืข ืื™ื– ืงื™ื™ืŸ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ืงืึทืฉ, ื“ืขืžืึธืœื˜ ืคึฟืึทืจ ื™ืขื“ืขืจ ื‘ืงืฉื” ืคื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ N ืจื™ืงื•ื•ืขืก ืฆื• ืžืขืžืงืึทื˜ืฉืขื“ ื•ื•ืขื˜ ืึทืงืฉืœื™ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ - ืฆื• ืึทืœืข ืกืขืจื•ื•ืขืจืก ืื™ืŸ ื“ื™ ื‘ืขืงืŸ. ืžื™ืจ ืงืขื ืขืŸ ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืกืขืจื•ื•ืขืจืก ืื™ืŸ ืคึผืึธืึธืœืก, ืœืžืฉืœ, ืฆื• ืฆื•ื•ื™ื™: ืงืจื‘ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ ืจื™ืœื™ื™ืึทื‘ื™ืœืึทื˜ื™, ืžื™ืจ ื‘ืึทืงื•ืžืขืŸะพื”ืขื›ืขืจ ื’ื™ื›ืงื™ื™ึทื˜ ืื•ืŸ ื•ื•ื™ื™ื ื™ืงืขืจ ืžืึทืกืข ืคื•ืŸ โ€‹โ€‹ืจื™ืงื•ื•ืขืก ืฆื• ืคืขืœื ื“ื™ืง ืฉืœื™ืกืœืขืŸ.

NB: ืื™ืจ ืงืขืŸ ืื•ื™ืš ื’ืขืคึฟื™ื ืขืŸ ื ื•ืฆื™ืง ืœื™ื ืงืก ืคึฟืึทืจ ืœืขืจื ืขืŸ ืžืึทืงืจืึธื•ื˜ืขืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื•ื•ื™ืงื™ ะธ ืคึผืจื•ื™ืขืงื˜ ื™ืฉื•ื– (ืื•ื ื˜ืขืจื’ืขืจืขื›ื ื˜ ื“ื™ ืคืืจืžืื›ื˜ืข), ืคืืจื˜ืจืขื˜ื ื“ื™ืง ื ื’ืื ืฆืŸ ืฉืคึผื™ื™ื– ืคื•ืŸ ืคืืจืฉื™ื™ื“ืขื ืข ืคืืจืฉื˜ืขืœื•ื ื’ืขืŸ.

ื‘ื ื™ืŸ ืื•ืŸ ืคืœื™ืกื ื“ื™ืง ืžืึทืงืจืึธื•ื˜ืขืจ

ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ (ืื•ืŸ ืžืขืžืงืึทื˜ืฉืขื“ ื–ื™ืš) ืœื•ื™ืคื˜ ืื™ืŸ Kubernetes - ืึทืงืึธืจื“ื™ื ื’ืœื™, mcrouter ืื™ื– ืื•ื™ืš ืœื™ื’ืŸ ื“ืึธืจื˜. ืคึฟืึทืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืžื™ืจ ื ื•ืฆืŸ werf, ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื•ื•ืึธืก ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

NB: ื“ื™ ืœื™ืกื˜ื™ื ื’ืก ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ื–ืขื ืขืŸ ืืจื•ื™ืก ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืคืœืึทื ื˜ / ืžืึทืงืจืึธื•ื˜ืขืจ.

configVersion: 1
project: mcrouter
deploy:
 namespace: '[[ env ]]'
 helmRelease: '[[ project ]]-[[ env ]]'
---
image: mcrouter
from: ubuntu:16.04
mount:
- from: tmp_dir
 to: /var/lib/apt/lists
- from: build_dir
 to: /var/cache/apt
ansible:
 beforeInstall:
 - name: Install prerequisites
   apt:
     name: [ 'apt-transport-https', 'tzdata', 'locales' ]
     update_cache: yes
 - name: Add mcrouter APT key
   apt_key:
     url: https://facebook.github.io/mcrouter/debrepo/xenial/PUBLIC.KEY
 - name: Add mcrouter Repo
   apt_repository:
     repo: deb https://facebook.github.io/mcrouter/debrepo/xenial xenial contrib
     filename: mcrouter
     update_cache: yes
 - name: Set timezone
   timezone:
     name: "Europe/Moscow"
 - name: Ensure a locale exists
   locale_gen:
     name: en_US.UTF-8
     state: present
 install:
 - name: Install mcrouter
   apt:
     name: [ 'mcrouter' ]

(werf.yaml)

... ืื•ืŸ ืกืงื™ืฆืข ืขืก ืื•ื™ืก ื”ืขืœื ื˜ืฉืึทืจื˜. ื“ื™ ื˜ืฉื™ืงืึทื•ื•ืข ื–ืึทืš ืื™ื– ืึทื– ืขืก ืื™ื– ื‘ืœื•ื™ื– ืึท ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื’ืขื ืขืจืึทื˜ืึธืจ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจืขืคึผืœืึทืงืึทื– (ืื•ื™ื‘ ื•ื•ืขืจ ืขืก ื™ื– ื”ืื˜ ืึท ืžืขืจ ืœืึทืงืึทื ื™ืง ืื•ืŸ ืขืœืขื’ืึทื ื˜ ืึธืคึผืฆื™ืข, ื™ื™ึทื ื˜ื™ื™ืœืŸ ืขืก ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ):

{{- $count := (pluck .Values.global.env .Values.memcached.replicas | first | default .Values.memcached.replicas._default | int) -}}
{{- $pools := dict -}}
{{- $servers := list -}}
{{- /* ะ—ะฐะฟะพะปะฝัะตะผ  ะผะฐััะธะฒ ะดะฒัƒะผั ะบะพะฟะธัะผะธ ัะตั€ะฒะตั€ะพะฒ: "0 1 2 0 1 2" */ -}}
{{- range until 2 -}}
 {{- range $i, $_ := until $count -}}
   {{- $servers = append $servers (printf "mc-%d.mc:11211" $i) -}}
 {{- end -}}
{{- end -}}
{{- /* ะกะผะตั‰ะฐัััŒ ะฟะพ ะผะฐััะธะฒัƒ, ะฟะพะปัƒั‡ะฐะตะผ N ัั€ะตะทะพะฒ: "[0 1 2] [1 2 0] [2 0 1]" */ -}}
{{- range $i, $_ := until $count -}}
 {{- $pool := dict "servers" (slice $servers $i (add $i $count)) -}}
 {{- $_ := set $pools (printf "MissFailoverRoute|Pool|pool%02d" $i) $pool -}}
{{- end -}}
---
apiVersion: v1
kind: ConfigMap
metadata:
 name: mcrouter
data:
 config.json: |
   {
     "pools": {{- $pools | toJson | replace "MissFailoverRoute|Pool|" "" -}},
     "route": {
       "type": "OperationSelectorRoute",
       "default_policy": "AllMajorityRoute|Pool|pool00",
       "operation_policies": {
         "get": {
           "type": "RandomRoute",
           "children": {{- keys $pools | toJson }}
         }
       }
     }
   }

(10-mcrouter.yaml)

ืžื™ืจ ืจืึธื•ืœื“ ืขืก ืื•ื™ืก ืื™ืŸ ื“ื™ ืคึผืจืึธื‘ืข ืกื•ื•ื™ื•ื•ืข ืื•ืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ:

# php -a
Interactive mode enabled

php > # ะŸั€ะพะฒะตั€ัะตะผ ะทะฐะฟะธััŒ ะธ ั‡ั‚ะตะฝะธะต
php > $m = new Memcached();
php > $m->addServer('mcrouter', 11211);
php > var_dump($m->set('test', 'value'));
bool(true)
php > var_dump($m->get('test'));
string(5) "value"
php > # ะ ะฐะฑะพั‚ะฐะตั‚! ะขะตัั‚ะธั€ัƒะตะผ ั€ะฐะฑะพั‚ัƒ ัะตััะธะน:
php > ini_set('session.save_handler', 'memcached');
php > ini_set('session.save_path', 'mcrouter:11211');
php > var_dump(session_start());
PHP Warning:  Uncaught Error: Failed to create session ID: memcached (path: mcrouter:11211) in php shell code:1
Stack trace:
#0 php shell code(1): session_start()
#1 {main}
  thrown in php shell code on line 1
php > # ะะต ะทะฐะฒะพะดะธั‚ััโ€ฆ ะŸะพะฟั€ะพะฑัƒะตะผ ะทะฐะดะฐั‚ัŒ session_id:
php > session_id("zzz");
php > var_dump(session_start());
PHP Warning:  session_start(): Cannot send session cookie - headers already sent by (output started at php shell code:1) in php shell code on line 1
PHP Warning:  session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning:  session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning:  session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning:  session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning:  session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning:  session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning:  session_start(): Unable to clear session lock record in php shell code on line 1
PHP Warning:  session_start(): Failed to read session data: memcached (path: mcrouter:11211) in php shell code on line 1
bool(false)
php >

ื–ื•ื›ืŸ ืคึฟืึทืจ ื“ื™ ื˜ืขืงืกื˜ ืคื•ืŸ ื“ื™ ื˜ืขื•ืช ื”ืื˜ ื ื™ืฉื˜ ื’ืขื‘ืŸ ืงื™ื™ืŸ ืจืขื–ื•ืœื˜ืึทื˜ืŸ, ืึธื‘ืขืจ ืคึฟืึทืจ ื“ื™ ืึธื ืคึฟืจืขื’ "ืžื™ืงืจืึธื•ื˜ืขืจ ืคืคึผ"ืื™ืŸ ื“ื™ ืคืจืึธื ื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ืึธื•ืœื“ืึทืกื˜ ืึทื ืกืึทืœื•ื•ื“ ืคึผืจืึธื‘ืœืขื ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ - ืžืึทื ื’ืœ ืคื•ืŸ ืฉื˜ื™ืฆืŸ ืžืขืžืงืึทื˜ืฉืขื“ ื‘ื™ื™ื ืขืจื™ ืคึผืจืึธื˜ืึธืงืึธืœ.

NB: ื“ืขืจ ASCII ืคึผืจืึธื˜ืึธืงืึธืœ ืื™ืŸ ืžืขืžืงืึทื˜ืฉืขื“ ืื™ื– ืกืœืึธื•ืขืจ ื•ื•ื™ ื“ื™ ื‘ื™ื™ื ืขืจื™, ืื•ืŸ ื ืึธืจืžืึทืœ ืžื™ื˜ืœ ืคื•ืŸ ืงืึธื ืกื™ืกื˜ืขื ื˜ ืฉืœื™ืกืœ ื›ืึทืฉื™ื ื’ ืึทืจื‘ืขื˜ ื‘ืœื•ื™ื– ืžื™ื˜ ื“ื™ ื‘ื™ื™ื ืขืจื™ ืคึผืจืึธื˜ืึธืงืึธืœ. ืื‘ืขืจ ื“ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ืžืึทื›ืŸ ืคึผืจืึธื‘ืœืขืžืก ืคึฟืึทืจ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืคืึทืœ.

ื“ืขืจ ืงื•ื ืฅ ืื™ื– ืื™ืŸ ื“ื™ ื˜ืึทืฉ: ืึทืœืข ืื™ืจ ื”ืึธื‘ืŸ ืฆื• ื˜ืึธืŸ ืื™ื– ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื• ื“ื™ ASCII ืคึผืจืึธื˜ืึธืงืึธืœ ืื•ืŸ ืึทืœืฅ ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ .... ืึธื‘ืขืจ, ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ืžื™ื“ืข ืคื•ืŸ โ€‹โ€‹ื–ื•ื›ืŸ ืขื ื˜ืคึฟืขืจืก ืื™ืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ื™ืฃ php.net ื’ืขืฉืคื™ืœื˜ ืึท ื’ืจื•ื™ื–ืึทื ื•ื•ื™ืฅ. ืื™ืจ ื•ื•ืขื˜ ื ื™ื˜ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืจื™ื›ื˜ื™ืง ืขื ื˜ืคึฟืขืจืŸ ื“ืึธืจื˜ ... ืกื™ื™ึทื“ืŸ, ืคื•ืŸ ืงื•ืจืก, ืื™ืจ ืžืขื’ื™ืœืข ืฆื• ื“ื™ ืกื•ืฃ, ื•ื•ื• ืื™ืŸ ื“ื™ ืึธืคึผื˜ื™ื™ืœื•ื ื’ "ื‘ืึทื ื™ืฆืขืจ ืงืึทื ื˜ืจื™ื‘ื™ื•ื˜ื™ื“ ื”ืขืจื•ืช" ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื˜ืจื™ื™ึท ืื•ืŸ ื•ืžื™ื•ื™ืฉืขืจื“ื™ืง ืึทืจืึธืคึผื•ื•ืึธื•ื˜ื™ื“ ืขื ื˜ืคืขืจ.

ื™ืึธ, ื“ื™ ืจื™ื›ื˜ื™ืง ืึธืคึผืฆื™ืข ื ืึธืžืขืŸ ืื™ื– memcached.sess_binary_protocol. ืขืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืคืึทืจืงืจื™ืคึผืœื˜, ื ืึธืš ื•ื•ืึธืก ื“ื™ ืกืขืฉืึทื ื– ื•ื•ืขื˜ ืึธื ื”ื™ื™ื‘ืŸ ืืจื‘ืขื˜ืŸ. ืึทืœืข ื•ื•ืึธืก ื‘ืœื™ื™ื‘ื˜ ืื™ื– ืฆื• ืฉื˜ืขืœืŸ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ ืžื™ื˜ ืžืึทืงืจืึธื•ื˜ืขืจ ืื™ืŸ ืึท ืคึผืึธื“ ืžื™ื˜ PHP!

ืกืึธืฃ

ืื–ื•ื™, ืžื™ื˜ ื‘ืœื•ื™ื– ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจืึทืœ ืขื ื“ืขืจื•ื ื’ืขืŸ, ืžื™ืจ ื–ืขื ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ืกืึธืœื•ื•ืข ื“ืขื ืคึผืจืึธื‘ืœืขื: ื“ื™ ืคึผืจืึธื‘ืœืขื ืžื™ื˜ ืžืขืžืงืึทื˜ืฉืขื“ ืฉื•ืœื“ ื˜ืึธืœืขืจืึทื ืฅ ืื™ื– ืกืึทืœื•ื•ื“, ืื•ืŸ ื“ื™ ืจื™ืœื™ื™ืึทื‘ื™ืœืึทื˜ื™ ืคื•ืŸ ืงืึทืฉ ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ื– ื’ืขื•ื•ืืงืกืŸ. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคึฟืึทืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื“ืึธืก ื”ืื˜ ืึท ืคึผืœืึทืฅ ืคึฟืึทืจ ืžืึทื ื•ื•ื•ืขืจ ื•ื•ืขืŸ ืืจื‘ืขื˜ืŸ ืื•ื™ืฃ ื“ืขืจ ืคึผืœืึทื˜ืคืึธืจืžืข: ื•ื•ืขืŸ ืึทืœืข ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื”ืึธื‘ืŸ ืึท ืจืขื–ืขืจื•ื•, ื“ื™ ืœืขื‘ืŸ ืคื•ืŸ ื“ื™ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืื™ื– ื–ื™ื™ืขืจ ืกื™ืžืคึผืœืึทืคื™ื™ื“. ื™ืึธ, ื“ืขื ืื•ืคึฟืŸ ืื•ื™ืš ื”ืื˜ ื–ื™ื™ึทืŸ ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื–, ืขืก ืงืขืŸ ืงื•ืงืŸ ื•ื•ื™ ืึท "ืงืจืึทื˜ืฉ", ืึธื‘ืขืจ ืื•ื™ื‘ ืขืก ืกืึทื•ื•ืขืก ื’ืขืœื˜, ื‘ืึทื’ืจืึธื‘ืŸ ื“ื™ ืคึผืจืึธื‘ืœืขื ืื•ืŸ ื˜ื•ื˜ ื ื™ืฉื˜ ืคืึทืจืฉืึทืคืŸ ื ื™ื™ึท ืึธื ืขืก - ื•ื•ืึธืก ื ื™ื˜?

ืคึผืก

ืœื™ื™ืขื ืขืŸ ืื•ื™ืš ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื‘ืœืึธื’:

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

ืงื•ื™ืคืŸ ืคืึทืจืœืึธื–ืœืขืš ื”ืึธืกื˜ื™ื ื’ ืคึฟืึทืจ ื–ื™ื™ื˜ืœืขืš ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก ๐Ÿ”ฅ ืงื•ื™ืคื˜ ืคืึทืจืœืขืกืœืขื›ืข ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ื”ืึธืกื˜ื™ื ื’ ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก | ProHoster