memcached เช†เชกเซ€ เชฐเซ€เชคเซ‡ เชฎเชพเชชเชตเชพ เชฎเชพเชŸเซ‡ mcrouter เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

memcached เช†เชกเซ€ เชฐเซ€เชคเซ‡ เชฎเชพเชชเชตเชพ เชฎเชพเชŸเซ‡ mcrouter เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

เช•เซ‹เชˆเชชเชฃ เชญเชพเชทเชพเชฎเชพเช‚ เช‰เชšเซเชš-เชฒเซ‹เชก เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชตเชฟเช•เชธเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซ‡เชท เช…เชญเชฟเช—เชฎ เช…เชจเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เชธเชพเชงเชจเซ‹เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซเชฏเชพเชฐเซ‡ PHP เชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชตเชพเชค เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชเชŸเชฒเซ€ เชตเชฟเช•เชŸ เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชตเชฟเช•เชพเชธ เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ‹เชคเชพเชจเซเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชฐเซเชตเชฐ. เช† เชจเซ‹เช‚เชงเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชตเชฟเชคเชฐเชฟเชค เชธเชคเซเชฐ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช…เชจเซ‡ เชฎเซ‡เชฎเช•เซ‡เชถเซเชกเชฎเชพเช‚ เชกเซ‡เชŸเชพ เช•เซ‡เชถเซ€เช‚เช— เชธเชพเชฅเซ‡ เชชเชฐเชฟเชšเชฟเชค เชชเซ€เชกเชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชฎเซ‡ เชเช• "เชตเซ‹เชฐเซเชก" เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เช† เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เช•เชฐเซเชฏเซเช‚.

เชชเซเชฐเชธเช‚เช—เชจเซ‹ เชนเซ€เชฐเซ‹ เชธเชฟเชฎเซเชซเชจเซ€ 2.3 เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เชชเชฐ เช†เชงเชพเชฐเชฟเชค PHP เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช›เซ‡, เชœเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชตเซเชฏเชตเชธเชพเชฏ เชฏเซ‹เชœเชจเชพเช“เชฎเชพเช‚ เชฌเชฟเชฒเช•เซเชฒ เชธเชฎเชพเชตเชฟเชทเซเชŸ เชจเชฅเซ€. เชคเชฆเซเชฆเชจ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชธเชคเซเชฐ เชธเช‚เช—เซเชฐเชน เช‰เชชเชฐเชพเช‚เชค, เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ "เชฌเชงเซเช‚ เช•เซ‡เชถเซ€เช‚เช—" เชจเซ€เชคเชฟ memcached เชฎเชพเช‚: เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชจเซ‡ API เชธเชฐเซเชตเชฐเซเชธเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“เชจเชพ เชœเชตเชพเชฌเซ‹, เชตเชฟเชตเชฟเชง เชซเซเชฒเซ‡เช—เซเชธ, เช•เซ‹เชก เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจเชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชคเชพเชณเชพเช“ เช…เชจเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚. เช†เชตเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚, เชฎเซ‡เชฎเช•เซ…เชถเชจเซเช‚ เชญเช‚เช—เชพเชฃ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฎเชพเชŸเซ‡ เช˜เชพเชคเช• เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เช•เซ‡เชถ เชจเซเช•เชถเชพเชจ เช—เช‚เชญเซ€เชฐ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡: เชกเซ€เชฌเซ€เชเชฎเชเชธ เชธเซ€เชฎ เชชเชฐ เชซเซ‚เชŸเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, API เชธเซ‡เชตเชพเช“ เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเซเชฐเชคเชฟเชฌเช‚เชง เชฎเซ‚เช•เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, เชตเช—เซ‡เชฐเซ‡. เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชธเซเชฅเชฟเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เชฆเชธ เชฎเชฟเชจเชฟเชŸ เชฒเชพเช—เซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เช† เชธเชฎเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชธเซ‡เชตเชพ เชญเชฏเช‚เช•เชฐ เชฐเซ€เชคเซ‡ เชงเซ€เชฎเซ€ เช…เชฅเชตเชพ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชจเซเชชเชฒเชฌเซเชง เชนเชถเซ‡.

เช…เชฎเชพเชฐเซ‡ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเชคเซ€ เชฅเซ‹เชกเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชธเชพเชฅเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช†เชกเชพ เชธเซเช•เซ‡เชฒ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ, เชเชŸเชฒเซ‡ เช•เซ‡ เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชกเชฎเชพเช‚ เชจเซเชฏเซ‚เชจเชคเชฎ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช…เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชธเชพเชšเชตเซ‡เชฒ เช›เซ‡. เช•เซ‡เชถเชจเซ‡ เชฎเชพเชคเซเชฐ เชจเชฟเชทเซเชซเชณเชคเชพเช“ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟเชฐเซ‹เชงเช• เชœ เชจเชนเซ€เช‚, เชชเชฃ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชจเซเช•เชถเชพเชจ เช˜เชŸเชพเชกเชตเชพเชจเซ‹ เชชเชฃ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹.

memcached เชชเซ‹เชคเซ‡ เชธเชพเชฅเซ‡ เชถเซเช‚ เช–เซ‹เชŸเซเช‚ เช›เซ‡?

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, PHP เชฎเชพเชŸเซ‡ เชฎเซ‡เชฎเช•เซ‡เชถเซเชก เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฌเซ‹เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชตเชฟเชคเชฐเชฟเชค เชกเซ‡เชŸเชพ เช…เชจเซ‡ เชธเชคเซเชฐ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชธเชพเชคเชคเซเชฏเชชเซ‚เชฐเซเชฃ เช•เซ€ เชนเซ‡เชถเชฟเช‚เช— เชฎเชพเชŸเซ‡เชจเซ€ เชชเชฆเซเชงเชคเชฟ เชคเชฎเชจเซ‡ เช˜เชฃเชพ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชธเชฎเชพเชจเชฐเซ‚เชชเซ‡ เชกเซ‡เชŸเชพ เชฎเซ‚เช•เชตเชพเชจเซ€ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡, เชฆเชฐเซ‡เช• เชšเซ‹เช•เซเช•เชธ เช•เซ€เชจเซ‡ เชœเซ‚เชฅเชฎเชพเช‚เชฅเซ€ เชšเซ‹เช•เซเช•เชธ เชธเชฐเซเชตเชฐ เชชเชฐ เชตเชฟเชถเชฟเชทเซเชŸ เชฐเซ€เชคเซ‡ เชธเช‚เชฌเซ‹เชงเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชซเซ‡เชฒเช“เชตเชฐ เชŸเซ‚เชฒเซเชธ เช•เซ‡เชถเซ€เช‚เช— เชธเซ‡เชตเชพเชจเซ€ เช‰เชšเซเชš เช‰เชชเชฒเชฌเซเชงเชคเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡ (เชชเชฐเช‚เชคเซ, เช•เชฎเชจเชธเซ€เชฌเซ‡, เช•เซ‹เชˆ เชกเซ‡เชŸเชพ เชจเชฅเซ€).

เชธเชคเซเชฐ เชธเช‚เช—เซเชฐเชน เชธเชพเชฅเซ‡ เชตเชธเซเชคเซเช“ เชฅเซ‹เชกเซ€ เชตเชงเซ เชธเชพเชฐเซ€ เช›เซ‡: เชคเชฎเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹ memcached.sess_number_of_replicas, เชœเซ‡เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡ เชกเซ‡เชŸเชพ เชเช•เชธเชพเชฅเซ‡ เช…เชจเซ‡เช• เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชถเซ‡, เช…เชจเซ‡ เชเช• เชฎเซ‡เชฎเช•เซ‡เชถเซเชก เชฆเชพเช–เชฒเชพเชจเซ€ เชจเชฟเชทเซเชซเชณเชคเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชกเซ‡เชŸเชพ เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹ เชชเชพเชธเซ‡เชฅเซ€ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชœเซ‹ เช•เซ‡, เชœเซ‹ เชธเชฐเซเชตเชฐ เชกเซ‡เชŸเชพ เชตเชฟเชจเชพ เช“เชจเชฒเชพเชˆเชจ เชชเชพเช›เซเช‚ เช†เชตเซ‡ เช›เซ‡ (เชœเซ‡เชฎ เช•เซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เชชเช›เซ€ เชฅเชพเชฏ เช›เซ‡), เชคเซ‹ เช•เซ‡เชŸเชฒเซ€เช• เช•เซ€ เชคเซ‡เชจเซ€ เชคเชฐเชซเซ‡เชฃเชฎเชพเช‚ เชชเซเชจเชƒเชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชนเช•เซ€เช•เชคเชฎเชพเช‚ เช†เชจเซ‹ เช…เชฐเซเชฅ เชฅเชถเซ‡ เชธเชคเซเชฐ เชกเซ‡เชŸเชพเชจเซ€ เช–เซ‹เชŸ, เช•เชพเชฐเชฃ เช•เซ‡ เชšเซ‚เช•เซ€ เชœเชตเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชฌเซ€เชœเซ€ เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟ เชชเชฐ เชœเชตเชพเชจเซ‹ เช•เซ‹เชˆ เชฐเชธเซเชคเซ‹ เชจเชฅเซ€.

เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชŸเซ‚เชฒเซเชธเชจเซ‹ เชนเซ‡เชคเซ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เช›เซ‡ เช†เชกเซเช‚ เชธเซเช•เซ‡เชฒเชฟเช‚เช—: เชคเซ‡เช“ เชคเชฎเชจเซ‡ เช•เซ‡เชถเชจเซ‡ เชตเชฟเชถเชพเชณ เช•เชฆเชฎเชพเช‚ เชตเชงเชพเชฐเชตเชพ เช…เชจเซ‡ เชตเชฟเชตเชฟเชง เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชนเซ‹เชธเซเชŸ เช•เชฐเซ‡เชฒเชพ เช•เซ‹เชกเชฎเชพเช‚เชฅเซ€ เชคเซ‡เชจเซ€ เชเช•เซเชธเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช…เชฎเชพเชฐเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚, เชธเช‚เช—เซเชฐเชนเชฟเชค เชกเซ‡เชŸเชพเชจเซเช‚ เชชเซเชฐเชฎเชพเชฃ เช˜เชฃเชพ เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เช•เชฐเชคเชพเช‚ เชตเชงเซ€ เชœเชคเซเช‚ เชจเชฅเซ€, เช…เชจเซ‡ เชเช• เช…เชฅเชตเชพ เชฌเซ‡ เชจเซ‹เชกเซเชธเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชคเชฆเซเชฆเชจ เชชเชฐเซเชฏเชพเชชเซเชค เช›เซ‡. เชคเชฆเชจเซเชธเชพเชฐ, เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชเช• เช•เซ‡เชถ เชฆเชพเช–เชฒเชพเชจเซ€ เชœเชพเชณเชตเชฃเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ memcached เชจเซ€ เช‰เชชเชฒเชฌเซเชงเชคเชพ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช•เชฎเชพเชคเซเชฐ เช‰เชชเชฏเซ‹เช—เซ€ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชธเชพเชงเชจเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช† เชคเช•เชจเซ‹ เชชเชฃ เชฒเชพเชญ เช‰เช เชพเชตเชตเซ‹ เชถเช•เซเชฏ เชจ เชนเชคเซ‹... เช…เชนเซ€เช‚ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเซ€ เชชเซเชฐเชพเชšเซ€เชจเชคเชพเชจเซ‡ เชฏเชพเชฆ เช•เชฐเชตเชพ เชฏเซ‹เช—เซเชฏ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœ เชธเชฐเซเชตเชฐเซเชธเชจเชพ เชชเซ‚เชฒ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเซ‡เชณเชตเชตเซ€ เช…เชถเช•เซเชฏ เชนเชคเซ€. เชšเชพเชฒเซ‹ เชธเชคเซเชฐ เชกเซ‡เชŸเชพเชจเซ€ เช–เซ‹เชŸ เชตเชฟเชถเซ‡ เชชเชฃ เชญเซ‚เชฒเซ€ เชจ เชœเชˆเช: เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเชพ เชตเชฟเชถเชพเชณ เชฒเซ‹เช—เช†เช‰เชŸเชฅเซ€ เช—เซเชฐเชพเชนเช•เชจเซ€ เช†เช‚เช– เชฎเซ€เช‚เชšเชพเชˆ เช—เชˆ.

เช†เชฆเชฐเซเชถ เชฐเซ€เชคเซ‡ เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เชนเชคเซเช‚ เชฎเซ‡เชฎเช•เซ‡เชถเซเชก เช…เชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟเช“เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซ€ เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟ เชญเซ‚เชฒ เช…เชฅเชตเชพ เชญเซ‚เชฒเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚. เช…เชฎเชจเซ‡ เช† เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ€ mcrouter.

mcrouter

เชซเซ‡เชธเชฌเซเช• เชฆเซเชตเชพเชฐเชพ เชคเซ‡เชจเซ€ เชธเชฎเชธเซเชฏเชพเช“ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช† เชเช• เชฎเซ‡เชฎเช•เซ‡เชถเซเชก เชฐเชพเช‰เชŸเชฐ เช›เซ‡. เชคเซ‡ เชฎเซ‡เชฎเช•เซ‡เชถเซเชก เชŸเซ‡เช•เซเชธเซเชŸ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡ เชธเซเช•เซ‡เชฒ memcached เชธเซเชฅเชพเชชเชจเซ‹ เชชเชพเช—เชฒ เชชเซเชฐเชฎเชพเชฃ เชฎเชพเชŸเซ‡. mcrouter เชจเซเช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชตเชฐเซเชฃเชจ เช†เชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เช† เชœเชพเชนเซ‡เชฐเชพเชค. เช…เชจเซเชฏ เชตเชธเซเชคเซเช“ เชตเชšเซเชšเซ‡ เชตเชฟเชถเชพเชณ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชคเซ‡ เช†เชชเชฃเชจเซ‡ เชœเซ‡ เชœเซ‹เชˆเช เช›เซ‡ เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡:

  • เชจเช•เชฒ เชฐเซ‡เช•เซ‹เชฐเซเชก;
  • เชœเซ‹ เช•เซ‹เชˆ เชญเซ‚เชฒ เชฅเชพเชฏ เชคเซ‹ เชœเซ‚เชฅเชจเชพ เช…เชจเซเชฏ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชซเซ‹เชฒเชฌเซ‡เช• เช•เชฐเซ‹.

เช•เชพเชฎเซ‡ เชฒเชพเช—เซ‹!

mcrouter เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ

เชนเซเช‚ เชธเซ€เชงเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชชเชฐ เชœเชˆเชถ:

{
 "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.
  • GET เชตเชฟเชจเช‚เชคเซ€เช“ เชนเซ‡เชจเซเชกเชฒเชฐ เชชเชพเชธเซ‡ เชœเชพเชฏ เช›เซ‡ RandomRouteเชœเซ‡ เชฐเซ‡เชจเซเชกเชฎเชฒเซ€ เชเชฐเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชตเชšเซเชšเซ‡ เชชเซ‚เชฒ เช…เชฅเชตเชพ เชฎเชพเชฐเซเช— เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡ children. เช† เชเชฐเซ‡เชจเซเช‚ เชฆเชฐเซ‡เช• เช˜เชŸเช• เชฌเชฆเชฒเชพเชฎเชพเช‚ เชนเซ‡เชจเซเชกเชฒเชฐ เช›เซ‡ MissFailoverRoute, เชœเซ‡ เชชเซ‚เชฒเชจเชพ เชฆเชฐเซ‡เช• เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชถเซ‡ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡เชจเซ‡ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชจ เชฎเชณเซ‡, เชœเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชชเชฐเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
  • เชœเซ‹ เช†เชชเชฃเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช MissFailoverRoute เชคเซเชฐเชฃ เชธเชฐเซเชตเชฐเซเชธเชจเชพ เชชเซ‚เชฒ เชธเชพเชฅเซ‡, เชชเช›เซ€ เชฌเชงเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชชเซเชฐเชฅเชฎ เชฎเซ‡เชฎเช•เซ‡เชถเซเชก เชฆเชพเช–เชฒเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เช…เชจเซ‡ เชฌเชพเช•เซ€เชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชถเซ‡เชท เชงเซ‹เชฐเชฃเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชกเซ‡เชŸเชพ เชจ เชนเซ‹เชฏ. เช†เชตเชพ เช…เชญเชฟเช—เชฎ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชถเซ‡ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เชธเชฐเซเชตเชฐ เชชเชฐ เช…เชคเชฟเชถเชฏ เชฒเซ‹เชก, เชคเซ‡เชฅเซ€ เช…เชฒเช—-เช…เชฒเช— เชธเชฟเช•เซเชตเชจเซเชธเชฎเชพเช‚ เชธเชฐเชจเชพเชฎเชพเช‚ เชธเชพเชฅเซ‡ เชคเซเชฐเชฃ เชชเซ‚เชฒ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชจเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฐเซ‡เชจเซเชกเชฎเชฒเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚.
  • เช…เชจเซเชฏ เชคเชฎเชพเชฎ เชตเชฟเชจเช‚เชคเซ€เช“ (เช…เชจเซ‡ เช† เชเช• เชฐเซ‡เช•เซ‹เชฐเซเชก เช›เซ‡) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ AllMajorityRoute. เช† เชนเซ‡เชจเซเชกเชฒเชฐ เชชเซ‚เชฒเชฎเชพเช‚เชจเชพ เชคเชฎเชพเชฎ เชธเชฐเซเชตเชฐเชจเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ N/2 + 1 เชจเชพ เชชเซเชฐเชคเชฟเชธเชพเชฆเซ‹เชจเซ€ เชฐเชพเชน เชœเซเช เช›เซ‡. เช‰เชชเชฏเซ‹เช— เชฅเซ€ AllSyncRoute เชฒเซ‡เช–เชจ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฎเชพเชŸเซ‡ เชคเซเชฏเชœเซ€ เชฆเซ‡เชตเชพเชจเซ€ เชนเชคเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช† เชชเชฆเซเชงเชคเชฟเชจเซ‡ เชนเช•เชพเชฐเชพเชคเซเชฎเช• เชชเซเชฐเชคเชฟเชธเชพเชฆเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ ะฒัะตั… เชœเซ‚เชฅเชฎเชพเช‚ เชธเชฐเซเชตเชฐเซเชธ - เช…เชจเซเชฏเชฅเชพ เชคเซ‡ เชชเชฐเชค เช†เชตเชถเซ‡ SERVER_ERROR. เชœเซ‹เช•เซ‡ mcrouter เช‰เชชเชฒเชฌเซเชง เช•เซ‡เชถเชฎเชพเช‚ เชกเซ‡เชŸเชพ เช‰เชฎเซ‡เชฐเชถเซ‡, เช•เซ‰เชฒเชฟเช‚เช— PHP เชซเช‚เช•เซเชถเชจ เชญเซ‚เชฒ เชชเชฐเชค เช•เชฐเชถเซ‡ เช…เชจเซ‡ เชจเซ‹เชŸเชฟเชธ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชถเซ‡. AllMajorityRoute เชคเซ‡ เชเชŸเชฒเซเช‚ เช•เชกเช• เชจเชฅเซ€ เช…เชจเซ‡ เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ เชธเชฎเชธเซเชฏเชพเช“ เชตเชฟเชจเชพ เช…เชกเชงเชพ เชœเซ‡เชŸเชฒเชพ เชเช•เชฎเซ‹เชจเซ‡ เชธเซ‡เชตเชพเชฎเชพเช‚เชฅเซ€ เชฌเชนเชพเชฐ เช•เชพเชขเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชฎเซเช–เซเชฏ เช—เซ‡เชฐเชฒเชพเชญ เช† เชธเซเช•เซ€เชฎ เช เช›เซ‡ เช•เซ‡ เชœเซ‹ เช•เซ‡เชถเชฎเชพเช‚ เช–เชฐเซ‡เช–เชฐ เช•เซ‹เชˆ เชกเซ‡เชŸเชพ เชจ เชนเซ‹เชฏ, เชคเซ‹ เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ€ เชฆเชฐเซ‡เช• เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡ N เชฎเซ‡เชฎเช•เซ‡เชถเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เช–เชฐเซ‡เช–เชฐ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ - เชฎเชพเชŸเซ‡ เชฌเชงเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฒเชฎเชพเช‚ เชธเชฐเซเชตเชฐเซเชธ. เช…เชฎเซ‡ เชชเซ‚เชฒเชฎเชพเช‚ เชธเชฐเซเชตเชฐเชจเซ€ เชธเช‚เช–เซเชฏเชพ เช˜เชŸเชพเชกเซ€ เชถเช•เซ€เช เช›เซ€เช, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฌเซ‡ เชธเซเชงเซ€: เชธเช‚เช—เซเชฐเชนเชจเซ€ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ เชฌเชฒเชฟเชฆเชพเชจ เช†เชชเซ€เชจเซ‡, เช…เชฎเชจเซ‡ เชฎเชณเซ‡ เช›เซ‡ะพเชตเชฟเชจเช‚เชคเซ€เช“เชฅเซ€ เช–เซ‚เชŸเชคเซ€ เช•เซ€ เชธเซเชงเซ€ เชตเชงเซ เชเชกเชช เช…เชจเซ‡ เช“เช›เซ‹ เชญเชพเชฐ.

NB: เชคเชฎเซ‡ mcrouter เชถเซ€เช–เชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชฒเชฟเช‚เช•เซเชธ เชชเชฃ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เชตเชฟเช•เชฟ เชชเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ ะธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเซเชฆเซเชฆเชพเช“ (เชฌเช‚เชง เชฒเซ‹เช•เซ‹ เชธเชนเชฟเชค), เชตเชฟเชตเชฟเชง เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹เชจเชพ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชŸเซ‹เชฐเชนเชพเช‰เชธเชจเซเช‚ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เช•เชฐเซ‡ เช›เซ‡.

เชฎเซ‡เช•เซเชฐเซ‹เช‰เชŸเชฐ เชฌเชจเชพเชตเชตเซเช‚ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเซเช‚

เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ (เช…เชจเซ‡ เชชเซ‹เชคเซ‡ เชฎเซ‡เชฎเช•เซ‡เชถเซเชก) เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชšเชพเชฒเซ‡ เช›เซ‡ - เชคเชฆเชจเซเชธเชพเชฐ, mcrouter เชชเชฃ เชคเซเชฏเชพเช‚ เชธเซเชฅเชฟเชค เช›เซ‡. เชฎเชพเชŸเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช เชตเชฐเซเชซ, เชœเซ‡เชจเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เช†เชจเชพ เชœเซ‡เชตเซ€ เชฆเซ‡เช–เชพเชถเซ‡:

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 >

เชญเซ‚เชฒเชจเชพ เชŸเซ‡เช•เซเชธเซเชŸเชจเซ€ เชถเซ‹เชง เช•เชฐเชตเชพเชฅเซ€ เช•เซ‹เชˆ เชชเชฐเชฟเชฃเชพเชฎ เชฎเชณเซเชฏเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช•เซเชตเซ‡เชฐเซ€ เชฎเชพเชŸเซ‡ โ€œเชฎเชพเช‡เช•เซเชฐเซ‹เช‰เชŸเชฐ php"เช†เช—เชณ เชชเชฐ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ€ เชธเซŒเชฅเซ€ เชœเซ‚เชจเซ€ เชตเชฃเช‰เช•เซ‡เชฒเชพเชฏเซ‡เชฒเซ€ เชธเชฎเชธเซเชฏเชพ เชนเชคเซ€ - เช†เชงเชพเชฐเชจเซ‹ เช…เชญเชพเชต memcached เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ.

NB: memcached เชฎเชพเช‚ ASCII เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชฌเชพเชˆเชจเชฐเซ€ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช•เชฐเชคเชพ เชงเซ€เชฎเซเช‚ เช›เซ‡, เช…เชจเซ‡ เชธเซเชธเช‚เช—เชค เช•เซ€ เชนเซ‡เชถเชฟเช‚เช—เชจเชพ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชฎเชพเชงเซเชฏเชฎเซ‹ เชซเช•เซเชค เชฌเชพเชˆเชจเชฐเซ€ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชธเชพเชฅเซ‡ เชœ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช† เชšเซ‹เช•เซเช•เชธ เช•เซ‡เชธ เชฎเชพเชŸเซ‡ เชธเชฎเชธเซเชฏเชพ เชŠเชญเซ€ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.

เชฏเซเช•เซเชคเชฟ เชฌเซ‡เช—เชฎเชพเช‚ เช›เซ‡: เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค ASCII เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเชถเซ‡.... เชœเซ‹ เช•เซ‡, เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชฎเชพเช‚ เชœเชตเชพเชฌเซ‹ เชถเซ‹เชงเชตเชพเชจเซ€ เช†เชฆเชค php.net เชชเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เช•เซเชฐเซ‚เชฐ เชฎเชœเชพเช• เชฐเชฎเซ€. เชคเชฎเชจเซ‡ เชคเซเชฏเชพเช‚ เชธเชพเชšเซ‹ เชœเชตเชพเชฌ เชฎเชณเชถเซ‡ เชจเชนเซ€เช‚... เชธเชฟเชตเชพเชฏ เช•เซ‡, เช…เชฒเชฌเชคเซเชค, เชคเชฎเซ‡ เช…เช‚เชค เชธเซเชงเซ€ เชธเซเช•เซเชฐเซ‹เชฒ เช•เชฐเซ‹, เชœเซเชฏเชพเช‚ เชตเชฟเชญเชพเช—เชฎเชพเช‚ "เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฏเซ‹เช—เชฆเชพเชจ เชจเซ‹เช‚เชงเซ‹" เชตเชซเชพเชฆเชพเชฐ เชฐเชนเซ‡เชถเซ‡ เช…เชจเซ‡ เช…เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชกเชพเช‰เชจเชตเซ‹เชŸเซ‡เชก เชœเชตเชพเชฌ.

เชนเชพ, เชธเชพเชšเซ‹ เชตเชฟเช•เชฒเซเชช เชจเชพเชฎ เช›เซ‡ memcached.sess_binary_protocol. เชคเซ‡ เช…เช•เซเชทเชฎ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡, เชœเซ‡เชจเชพ เชชเช›เซ€ เชธเชคเซเชฐเซ‹ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชถเซ‡. เชœเซ‡ เชฌเชพเช•เซ€ เช›เซ‡ เชคเซ‡ PHP เชธเชพเชฅเซ‡เชจเชพ เชชเซ‹เชกเชฎเชพเช‚ mcrouter เชธเชพเชฅเซ‡เชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชฎเซ‚เช•เชตเชพเชจเซเช‚ เช›เซ‡!

เชจเชฟเชทเซเช•เชฐเซเชท

เช†เชฎ, เชฎเชพเชคเซเชฐ เชฎเชพเชณเช–เชพเช•เซ€เชฏ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชฅเซ‡ เช…เชฎเซ‡ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชคเชพ: เชฎเซ‡เชฎเช•เซ‡เชถเซเชก เชซเซ‹เชฒเซเชŸ เชŸเซ‹เชฒเชฐเชจเซเชธ เชธเชพเชฅเซ‡เชจเซ‹ เชฎเซเชฆเซเชฆเซ‹ เช‰เช•เซ‡เชฒเชพเชˆ เช—เชฏเซ‹ เช›เซ‡, เช…เชจเซ‡ เช•เซ‡เชถ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ€ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพเชฎเชพเช‚ เชตเชงเชพเชฐเซ‹ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡เชจเชพ เชธเซเชชเชทเซเชŸ เชซเชพเชฏเชฆเชพเช“ เช‰เชชเชฐเชพเช‚เชค, เช† เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเชฐ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฆเชพเชตเชชเซ‡เชš เชฎเชพเชŸเซ‡ เชœเช—เซเชฏเชพ เช†เชชเซ‡ เช›เซ‡: เชœเซเชฏเชพเชฐเซ‡ เชฌเชงเชพ เช˜เชŸเช•เซ‹ เชชเชพเชธเซ‡ เช…เชจเชพเชฎเชค เชนเซ‹เชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเชจเซเช‚ เชœเซ€เชตเชจ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เชฌเชจเซ‡ เช›เซ‡. เชนเชพ, เช† เชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ เชคเซ‡เชจเซ€ เช–เชพเชฎเซ€เช“ เชชเชฃ เช›เซ‡, เชคเซ‡ "เช•เซเชฐเชš" เชœเซ‡เชตเซ€ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเซ‡ เชชเซˆเชธเชพ เชฌเชšเชพเชตเซ‡ เช›เซ‡, เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชฆเชซเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชจเชตเซ€ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เช•เชพเชฐเชฃ เชจเชฅเซ€ - เชถเชพ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚?

PS

เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ เชชเชฃ เชตเชพเช‚เชšเซ‹:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹