mcrouter เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเต†เด‚เด•เดพเดšเตเดšเต เดคเดฟเดฐเดถเตเดšเต€เดจเดฎเดพเดฏเดฟ เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

mcrouter เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเต†เด‚เด•เดพเดšเตเดšเต เดคเดฟเดฐเดถเตเดšเต€เดจเดฎเดพเดฏเดฟ เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดเดคเต เดญเดพเดทเดฏเดฟเดฒเตเด‚ เด‰เดฏเตผเดจเตเดจ-เดฒเต‹เดกเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดธเดฎเต€เดชเดจเดตเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด• เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเดŸเต† เด‰เดชเดฏเต‹เด—เดตเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ PHP-เดฏเดฟเดฒเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เด•เดพเดฐเตเดฏเด‚ เดตเดฐเตเดฎเตเดชเต‹เตพ, เดธเตเดฅเดฟเดคเดฟเด—เดคเดฟเด•เตพ เดตเดณเดฐเต† เดตเดทเดณเดพเด•เตเด•เดฏเตเด‚ เดจเดฟเด™เตเด™เตพ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดธเตเดตเดจเตเดคเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต†เตผเดตเตผ. เดˆ เด•เตเดฑเดฟเดชเตเดชเดฟเตฝ, เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเดกเต เดธเต†เดทเตป เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเตเด‚ เดฎเต†เด‚เด•เดพเดทเต†เดกเดฟเดฒเต† เดกเดพเดฑเตเดฑ เด•เดพเดทเดฟเด‚เด—เตเด‚ เด‰เดณเตเดณ เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฏ เดตเต‡เดฆเดจเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด’เดฐเต โ€œเดตเดพเตผเดกเตโ€ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เดžเด™เตเด™เตพ เดˆ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เดธเดฟเด‚เดซเดฃเดฟ 2.3 เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด’เดฐเต PHP เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเต เดˆ เด…เดตเดธเดฐเดคเตเดคเดฟเดฒเต† เดจเดพเดฏเด•เตป, เด…เดคเต เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เดฌเดฟเดธเดฟเดจเดธเต เดชเตเดฒเดพเดจเตเด•เดณเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เดคเดฟเด•เดšเตเดšเตเด‚ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดธเต†เดทเตป เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเต เดชเตเดฑเดฎเต‡, เดˆ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต "เดŽเดฒเตเดฒเดพเด‚ เด•เดพเดทเดฟเด‚เด—เต" เดจเดฏเด‚ memcached-เตฝ: เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต, API เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ, เดตเดฟเดตเดฟเดง เดซเตเดฒเดพเด—เตเด•เตพ, เด•เต‹เดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเตป เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฒเต‹เด•เตเด•เตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเด‚ เด…เดคเดฟเดฒเต‡เดฑเต†เดฏเตเด‚. เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, memcached เดจเตเดฑเต† เดคเด•เตผเดšเตเดš เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดฎเดพเดฐเด•เดฎเดพเด•เตเด‚. เด•เต‚เดŸเดพเดคเต†, เด•เดพเดทเต† เดจเดทเตเดŸเด‚ เด—เตเดฐเตเดคเดฐเดฎเดพเดฏ เดชเตเดฐเดคเตเดฏเดพเด˜เดพเดคเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต: DBMS เดธเต€เดฎเตเด•เดณเดฟเตฝ เดชเตŠเดŸเตเดŸเดฟเดคเตเดคเต†เดฑเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต, API เดธเต‡เดตเดจเด™เตเด™เตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดจเดฟเดฐเต‹เดงเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต. เดธเตเดฅเดฟเดคเดฟ เดธเตเดธเตเดฅเดฟเดฐเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดฎเดฟเดจเดฟเดฑเตเดฑเตเด•เตพ เดŽเดŸเตเดคเตเดคเต‡เด•เตเด•เดพเด‚, เดˆ เดธเดฎเดฏเดคเตเดคเต เดธเต‡เดตเดจเด‚ เดตเดณเดฐเต† เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดฒเดญเตเดฏเดฎเดฒเตเดฒ.

เดžเด™เตเด™เตพเด•เตเด•เต เดจเตฝเด•เต‡เดฃเตเดŸเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต เดšเต†เดฑเดฟเดฏ เดชเตเดฐเดฏเดคเตเดจเดคเตเดคเดฟเดฒเต‚เดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดคเดฟเดฐเดถเตเดšเต€เดจเดฎเดพเดฏเดฟ เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต, เด…เดคเดพเดฏเดคเต. เดธเต‹เดดเตเดธเต เด•เต‹เดกเดฟเดฒเต† เด•เตเดฑเดžเตเดž เดฎเดพเดฑเตเดฑเด™เตเด™เดณเต‹เดŸเต†เดฏเตเด‚ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดคเดฏเตเด‚ เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด•เดพเดทเต† เดชเดฐเดพเดœเดฏเด™เตเด™เดณเต† เดชเตเดฐเดคเดฟเดฐเต‹เดงเดฟเด•เตเด•เตเด• เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑเดพ เดจเดทเตเดŸเด‚ เด•เตเดฑเดฏเตเด•เตเด•เดพเดจเตเด‚ เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•.

เดฎเต†เด‚เด•เดพเดทเต เดšเต†เดฏเตเดคเดคเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เดคเต†เดฑเตเดฑเต?

เดชเตŠเดคเตเดตเต‡, เดชเดฟโ€ŒเดŽเดšเตเดšเตโ€Œเดชเดฟเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เดฎเต†เด‚เด•เดพเดทเต เดšเต†เดฏเตโ€Œเดค เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด‚ เดฌเต‹เด•เตโ€Œเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดค เดกเดพเดฑเตเดฑเดฏเต†เดฏเตเด‚ เดธเต†เดทเตป เดธเด‚เดญเดฐเดฃเดคเตเดคเต†เดฏเตเด‚ เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต. เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เด•เต€ เดนเดพเดทเดฟเด‚เด—เดฟเดจเตเดณเตเดณ เดธเด‚เดตเดฟเดงเดพเดจเด‚, เดชเดฒ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเตเด‚ เดกเดพเดฑเตเดฑ เดคเตเดฒเตเดฏเดฎเดพเดฏเดฟ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด—เตเดฐเต‚เดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด“เดฐเต‹ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด•เต€เดฏเตเด‚ เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฏเดฟ เด…เดญเดฟเดธเด‚เดฌเต‹เดงเดจ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดฌเดฟเตฝเดฑเตเดฑเต-เด‡เตป เดชเดฐเดพเดœเดฏ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เด•เดพเดทเดฟเด‚เด—เต เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดฏเตผเดจเตเดจ เดฒเดญเตเดฏเดค เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต (เดชเด•เตเดทเต‡, เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดกเดพเดฑเตเดฑเดพ เด‡เดฒเตเดฒ).

เดธเต†เดทเตป เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเตฝ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดฎเต†เดšเตเดšเดฎเดพเดฃเต: เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเด‚ memcached.sess_number_of_replicas, เด…เดคเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ เดกเดพเดฑเตเดฑ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดจเดฟเดฐเดตเดงเดฟ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚, เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เดฎเต†เด‚เด•เดพเดทเต เดšเต†เดฏเตเดค เดธเดจเตเดฆเตผเดญเด‚ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸเดพเตฝ, เดกเดพเดฑเตเดฑ เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฐเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เตˆเดฎเดพเดฑเตเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดกเดพเดฑเตเดฑ เด‡เดฒเตเดฒเดพเดคเต† เดธเต†เตผเดตเตผ เด“เตบเดฒเตˆเดจเดฟเตฝ เดคเดฟเดฐเดฟเดšเตเดšเต†เดคเตเดคเดฟเดฏเดพเตฝ (เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต†), เดšเดฟเดฒ เด•เต€เด•เตพ เด…เดคเดฟเดจเต เด…เดจเตเด•เต‚เดฒเดฎเดพเดฏเดฟ เดชเตเดจเตผเดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚. เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด‡เดคเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเด‚ เดธเต†เดทเตป เดกเดพเดฑเตเดฑ เดจเดทเตเดŸเด‚, เดจเดทเตเดŸเดฎเดพเดฏเดพเตฝ เดฎเดฑเตเดฑเตŠเดฐเต เดชเด•เตผเดชเตเดชเดฟเดฒเต‡เด•เตเด•เต "เดชเต‹เด•เดพเตป" เด’เดฐเต เดฎเดพเตผเด—เดตเตเดฎเดฟเดฒเตเดฒ.

เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เดŸเต‚เดณเตเด•เตพ เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเตเด‚ เดฒเด•เตเดทเตเดฏเดฎเดฟเดŸเตเดจเตเดจเดคเต เดคเดฟเดฐเดถเตเดšเต€เดจเดฎเดพเดฏเดฟ เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต: เด•เดพเดทเต† เดญเต€เดฎเดพเด•เดพเดฐเดฎเดพเดฏ เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เดนเต‹เดธเตเดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เดจเตฝเด•เดพเดจเตเด‚ เด…เดต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดžเด™เตเด™เดณเตเดŸเต† เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเด‚เดญเดฐเดฟเดšเตเดš เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด…เดณเดตเต เดจเดฟเดฐเดตเดงเดฟ เดœเดฟเด—เดพเดฌเตˆเดฑเตเดฑเตเด•เตพ เด•เดตเดฟเดฏเดฐเตเดคเต, เด’เดจเตเดจเต‹ เดฐเดฃเตเดŸเต‹ เดจเต‹เดกเตเด•เดณเตเดŸเต† เดชเตเดฐเด•เดŸเดจเด‚ เดฎเดคเดฟเดฏเดพเด•เตเด‚. เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต, เดชเตเดฐเดตเตผเดคเตเดคเดจเดพเดตเดธเตเดฅเดฏเดฟเตฝ เด•เตเดฑเดžเตเดžเดคเต เด’เดฐเต เด•เดพเดทเต† เด‡เตปเดธเตโ€Œเดฑเตเดฑเตปเดธเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดฟเด•เตเด•เตŠเดฃเตเดŸเตเดคเดจเตเดจเต† เดฎเต†เด‚เด•เดพเดทเต†เดกเดฟเดจเตเดฑเต† เดฒเดญเตเดฏเดค เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดŸเต‚เดณเตเด•เตพ. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดˆ เด…เดตเดธเดฐเด‚ เดชเต‹เดฒเตเด‚ เดชเตเดฐเดฏเต‹เดœเดจเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด•เดดเดฟเดžเตเดžเดฟเดฒเตเดฒ ... เด‡เดตเดฟเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดฟเดจเตเดฑเต† เดชเดดเด•เตเด•เด‚ เด“เตผเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต, เด…เดคเดฟเดจเดพเดฒเดพเดฃเต เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเต‡เดŸเตเดจเตเดจเดคเต เด…เดธเดพเดงเตเดฏเดฎเดพเดฏเดคเต. เดธเต†เดทเตป เดกเดพเดฑเตเดฑ เดจเดทเตโ€ŒเดŸเดชเตเดชเต†เดŸเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดจเดพเด‚ เดฎเดฑเด•เตเด•เดฐเตเดคเต: เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เดตเตปเดคเต‹เดคเดฟเดฒเตเดณเตเดณ เดฒเต‹เด—เตเด”เดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เด‰เดชเดญเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เด•เดฃเตเดฃเต เดตเดฟเดฑเดšเตเดšเต.

เด†เดฆเตผเดถเดชเดฐเดฎเดพเดฏเดฟ เด…เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต เดฎเต†เด‚เด•เดพเดทเต เดšเต†เดฏเตเดคเดคเตเด‚ เดฌเตˆเดชเดพเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเดฎเดพเดฏ เดชเด•เตผเดชเตเดชเตเด•เดณเดฟเดฒเต† เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเดŸเต† เดชเด•เตผเดชเตเดชเต เด’เดฐเต เดคเต†เดฑเตเดฑเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดคเต†เดฑเตเดฑเต เดธเด‚เดญเดตเดฟเดšเตเดšเดพเตฝ. เดˆ เดคเดจเตเดคเตเดฐเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดžเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเดšเตเดšเต 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-เดจเตเดฑเต† เด“เดฐเต‹ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เตเด‚ memcached-เดฒเต‡เด•เตเด•เตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚ - to เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เด•เตเดณเดคเตเดคเดฟเดฒเต† เดธเต†เตผเดตเดฑเตเด•เตพ. เดชเต‚เดณเตเด•เดณเดฟเดฒเต† เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดจเดฎเตเด•เตเด•เต เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฐเดฃเตเดŸเดพเดฏเดฟ: เดธเด‚เดญเดฐเดฃ โ€‹โ€‹เดตเดฟเดถเตเดตเดพเดธเตเดฏเดค เดคเตเดฏเดœเดฟเดšเตเดšเดพเตฝ, เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเตะพเด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดทเตโ€ŒเดŸเดฎเดพเดฏ เด•เต€เด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด‰เดฏเตผเดจเตเดจ เดตเต‡เด—เดคเดฏเตเด‚ เด•เตเดฑเดžเตเดž เดฒเต‹เดกเตเด‚.

NB: mcrouter เดชเด เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดฒเดฟเด™เตเด•เตเด•เดณเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดพเด‚ เดตเดฟเด•เตเด•เดฟเดฏเดฟเดฒเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป ะธ เดชเดฆเตเดงเดคเดฟ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ (เด…เดŸเดžเตเดžเดต เด‰เตพเดชเตเดชเต†เดŸเต†), เดตเดฟเดตเดฟเดง เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เดณเตเดŸเต† เดฎเตเดดเตเดตเตป เดธเด‚เดญเดฐเดฃเดถเดพเดฒเดฏเต† เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต.

mcrouter เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป (เด•เต‚เดŸเดพเดคเต† memcached เดคเดจเตเดจเต†) Kubernetes-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต - เด…เดคเดจเตเดธเดฐเดฟเดšเตเดšเต, mcrouter เด…เดตเดฟเดŸเต†เดฏเตเด‚ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดตเต‡เดฃเตเดŸเดฟ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด…เดธเด‚เดฌเตเดฒเดฟ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‡เดพเด—เดฟเด•เตเด•เตเดจเตเดจเต เดตเต†เตผเดซเต, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเด‚:

NB: เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฒเดฟเดธเตเดฑเตเดฑเดฟเด‚เด—เตเด•เตพ เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต เดซเตเดฒเดพเดจเตเดฑเต / mcrouter.

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 >

เดชเดฟเดถเด•เดฟเดจเตเดฑเต† เดตเดพเดšเด•เด‚ เดคเดฟเดฐเดฏเตเดจเตเดจเดคเต เดซเดฒเด™เตเด™เดณเตŠเดจเตเดจเตเด‚ เดจเตฝเด•เดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ โ€œโ€ เดŽเดจเตเดจ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดจเตmcrouter php"เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเดพเดคเตเดค เดเดฑเตเดฑเดตเตเด‚ เดชเดดเดฏ เดชเตเดฐเดถเตเดจเด‚ เดฎเตเดจเตเดจเดฟเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต - เดชเดฟเดจเตเดคเตเดฃเดฏเตเดŸเต† เด…เดญเดพเดตเด‚ memcached เดฌเตˆเดจเดฑเดฟ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ.

NB: memcached-เดฒเต† ASCII เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดฌเตˆเดจเดฑเดฟเดฏเต†เด•เตเด•เดพเตพ เดตเต‡เด—เดค เด•เตเดฑเดตเดพเดฃเต, เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เด•เต€ เดนเดพเดทเดฟเด‚เด—เดฟเดจเตเดฑเต† เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฎเดพเตผเด—เด™เตเด™เตพ เดฌเตˆเดจเดฑเดฟ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เต‚. เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เต‡เดธเดฟเดจเต เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เดŸเตเดฐเดฟเด•เตเด•เต เดฌเดพเด—เดฟเดฒเตเดฃเตเดŸเต: เดจเดฟเด™เตเด™เตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต ASCII เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเด•, เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.... เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‰เดคเตเดคเดฐเด‚ เดคเดฟเดฐเดฏเตเดจเตเดจ เดถเต€เดฒเด‚ php.net-เดฒเต† เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เด•เตเดฐเต‚เดฐเดฎเดพเดฏ เดคเดฎเดพเดถ เด•เดณเดฟเดšเตเดšเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดตเดฟเดŸเต† เดถเดฐเดฟเดฏเดพเดฏ เด‰เดคเตเดคเดฐเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เดฟเดฒเตเดฒ... เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดจเดฟเด™เตเด™เตพ เด…เดตเดธเดพเดจเด‚ เดตเดฐเต† เดธเตเด•เตเดฐเต‹เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต "เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดธเด‚เดญเดพเดตเดจ เดšเต†เดฏเตเดค เด•เตเดฑเดฟเดชเตเดชเตเด•เตพ" เดตเดฟเดถเตเดตเดธเตเดคเดจเตเด‚ เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ เด…เดจเตเดฏเดพเดฏเดฎเดพเดฏเดฟ เดตเต‹เดŸเตเดŸเต เดšเต†เดฏเตเดค เด‰เดคเตเดคเดฐเด‚.

เด…เดคเต†, เดถเดฐเดฟเดฏเดพเดฏ เด“เดชเตเดทเดจเตเดฑเต† เดชเต‡เดฐเต memcached.sess_binary_protocol. เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดธเต†เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด‚. PHP เด‰เดณเตเดณ เด’เดฐเต เดชเต‹เดกเดฟเดฒเต‡เด•เตเด•เต mcrouter เด‰เดณเตเดณ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด‡เดŸเตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต!

เดคเต€เดฐเตเดฎเดพเดจเด‚

เด…เดคเดฟเดจเดพเตฝ, เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเดชเดฐเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เดžเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดžเตเดžเต: เดฎเต†เด‚เด•เดพเดทเต เดšเต†เดฏเตเดค เดคเต†เดฑเตเดฑเต เดธเดนเดฟเดทเตเดฃเตเดคเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเต, เด•เดพเดทเต† เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดถเตเดตเดพเดธเตเดฏเดค เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเต. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เด—เตเดฃเด™เตเด™เตพเด•เตเด•เต เดชเตเดฑเดฎเต‡, เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เดฎเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‡เดคเต เด•เต—เดถเดฒเดคเตเดคเดฟเดจเต เด‡เดŸเด‚ เดจเตฝเด•เดฟ: เดŽเดฒเตเดฒเดพ เด˜เดŸเด•เด™เตเด™เดณเตเด‚ เด’เดฐเต เด•เดฐเตเดคเตฝ เด‰เดณเตเดณเดชเตเดชเต‹เตพ, เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเดฑเตเดŸเต† เดœเต€เดตเดฟเดคเด‚ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต. เด…เดคเต†, เดˆ เดฐเต€เดคเดฟเด•เตเด•เต เด…เดคเดฟเดจเตเดฑเต† เดชเต‹เดฐเดพเดฏเตเดฎเด•เดณเตเด‚ เด‰เดฃเตเดŸเต, เด…เดคเต เด’เดฐเต "เด•เตเดฐเดšเตเดšเต" เดชเต‹เดฒเต† เดคเต‹เดจเตเดจเดพเด‚, เดชเด•เตเดทเต‡ เด…เดคเต เดชเดฃเด‚ เดฒเดพเดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเดถเตเดจเด‚ เด•เตเดดเดฟเดšเตเดšเดฟเดŸเตเด•เดฏเตเด‚ เดชเตเดคเดฟเดฏเดตเดฏเตเด•เตเด•เต เด•เดพเดฐเดฃเดฎเดพเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ - เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต?

เดชเดฟ.เดŽเดธเต

เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เดฟเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•