āĻ…āĻ¨ā§āĻ­ā§‚āĻŽāĻŋāĻ•āĻ­āĻžāĻŦā§‡ memcached āĻ¸ā§āĻ•ā§‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡ mcrouter āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡

āĻ…āĻ¨ā§āĻ­ā§‚āĻŽāĻŋāĻ•āĻ­āĻžāĻŦā§‡ memcached āĻ¸ā§āĻ•ā§‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡ mcrouter āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡

āĻ¯ā§‡āĻ•ā§‹āĻ¨ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻšāĻžāĻ‡-āĻ˛ā§‹āĻĄ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§‡āĻˇ āĻŸā§āĻ˛ā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻ–āĻ¨ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ-āĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ•āĻĨāĻž āĻ†āĻ¸ā§‡, āĻ¤āĻ–āĻ¨ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻ¤āĻŸāĻžāĻ‡ āĻ–āĻžāĻ°āĻžāĻĒ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦāĻŋāĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°. āĻāĻ‡ āĻ¨ā§‹āĻŸā§‡ āĻ†āĻŽāĻ°āĻž āĻŽā§‡āĻŽāĻ•ā§āĻ¯āĻžāĻļā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¸ā§‡āĻļāĻ¨ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻŦā§āĻ¯āĻĨāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ "āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ" āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

āĻ…āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨ā§‡āĻ° āĻ¨āĻžāĻ¯āĻŧāĻ• āĻšāĻ˛ āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋ 2.3 āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨, āĻ¯āĻž āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻŦā§‡āĻļ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ¸ā§‡āĻļāĻ¨ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻāĻ‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›ā§‡ "āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚" āĻ¨ā§€āĻ¤āĻŋ āĻŽā§‡āĻŽāĻ•ā§āĻ¯āĻžāĻšā§‡āĻĄ: āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻāĻŦāĻ‚ āĻāĻĒāĻŋāĻ†āĻ‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒāĻ¤āĻžāĻ•āĻž, āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœ āĻ•ā§‹āĻĄ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ˛āĻ• āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻŋāĻ›ā§āĨ¤ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§‡, āĻŽā§‡āĻŽāĻ•ā§āĻ¯āĻžāĻļā§‡āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ™ā§āĻ—āĻ¨ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŽāĻžāĻ°āĻžāĻ¤ā§āĻŽāĻ• āĻšāĻ¯āĻŧā§‡ āĻ“āĻ ā§‡āĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ•ā§āĻˇāĻ¤āĻŋ āĻ—ā§āĻ°ā§āĻ¤āĻ° āĻĒāĻ°āĻŋāĻŖāĻ¤āĻŋāĻ° āĻĻāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•āĻ°ā§‡: DBMS āĻ¸āĻŋāĻŽāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĢā§‡āĻŸā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡, API āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻˇāĻŋāĻĻā§āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§€āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻ•āĻ¯āĻŧā§‡āĻ• āĻŽāĻŋāĻ¨āĻŋāĻŸ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻ—āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻŸāĻŋ āĻ­āĻ¯āĻŧāĻžāĻ¨āĻ• āĻ§ā§€āĻ° āĻŦāĻž āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻ¨ā§āĻĒāĻ˛āĻŦā§āĻ§ āĻšāĻŦā§‡ā§ˇ

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻž āĻĻāĻ°āĻ•āĻžāĻ° āĻ›āĻŋāĻ˛ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ•ā§‡ āĻ…āĻ¨ā§āĻ­ā§‚āĻŽāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¸ā§āĻ•ā§‡āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄā§‡ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤āĨ¤ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‹āĻ§ā§€ āĻ•āĻ°ā§āĻ¨, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻ•ā§āĻˇāĻ¤āĻŋ āĻ•āĻŽāĻžāĻ¨ā§‹āĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§āĻ¨āĨ¤

memcached āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ¸āĻ™ā§āĻ—ā§‡ āĻ­ā§āĻ˛ āĻ•āĻŋ?

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, PHP-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§‡āĻŽāĻ•ā§āĻ¯āĻžāĻļā§‡āĻĄ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻŦāĻ•ā§āĻ¸ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻž āĻāĻŦāĻ‚ āĻ¸ā§‡āĻļāĻ¨ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖ āĻ•ā§€ āĻšā§āĻ¯āĻžāĻļāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ¸āĻŽāĻžāĻ¨āĻ­āĻžāĻŦā§‡ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ, āĻ—ā§āĻ°ā§āĻĒ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•ā§€āĻ•ā§‡ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻŦā§‹āĻ§āĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ˛ā§āĻŸ-āĻ‡āĻ¨ āĻĢā§‡āĻ‡āĻ˛āĻ“āĻ­āĻžāĻ° āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ° āĻ‰āĻšā§āĻš āĻĒā§āĻ°āĻžāĻĒā§āĻ¯āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§‡ (āĻ•āĻŋāĻ¨ā§āĻ¤ā§, āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, āĻ•ā§‹āĻ¨ āĻ¤āĻĨā§āĻ¯ āĻ¨ā§‡āĻ‡).

āĻ¸ā§‡āĻļāĻ¨ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸā§ āĻ­āĻžāĻ˛: āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ 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 āĻ‰āĻĒāĻ˛āĻ­ā§āĻ¯ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻĄā§‡āĻŸāĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦā§‡, āĻ•āĻ˛āĻŋāĻ‚ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻŦā§‡ āĻāĻŦāĻ‚ āĻ¨ā§‹āĻŸāĻŋāĻļ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡āĨ¤ AllMajorityRoute āĻāĻ¤āĻŸāĻž āĻ•āĻ ā§‹āĻ° āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ‰āĻĒāĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ…āĻ°ā§āĻ§ā§‡āĻ• āĻ‡āĻ‰āĻ¨āĻŋāĻŸāĻ•ā§‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻĨā§‡āĻ•ā§‡ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻŽā§‚āĻ˛ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻ‡ āĻ¸ā§āĻ•āĻŋāĻŽāĻŸāĻŋ āĻšāĻ˛ āĻ¯āĻĻāĻŋ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻ•ā§‹āĻ¨āĻ“ āĻĄā§‡āĻŸāĻž āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ N āĻŽā§‡āĻŽāĻ•ā§āĻ¯āĻžāĻļā§‡āĻĄā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻ†āĻ¸āĻ˛ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡ - āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŦ āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ˛ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĨ¤ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ˛āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ•āĻŽāĻžāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĻā§āĻŸāĻŋāĻ¤ā§‡: āĻ¸āĻžā§āĻšāĻ¯āĻŧāĻ¸ā§āĻĨāĻžāĻ¨ā§‡āĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¯ā§‹āĻ—ā§āĻ¯āĻ¤āĻž āĻŦāĻ˛āĻŋāĻĻāĻžāĻ¨, āĻ†āĻŽāĻ°āĻž āĻĒāĻžāĻ‡ĐžāĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĨā§‡āĻ•ā§‡ āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ•ā§€ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ‰āĻšā§āĻš āĻ—āĻ¤āĻŋ āĻāĻŦāĻ‚ āĻ•āĻŽ āĻ˛ā§‹āĻĄāĨ¤

NB: āĻ†āĻĒāĻ¨āĻŋ mcrouter āĻļā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻ˛āĻŋāĻ™ā§āĻ• āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ‰āĻ‡āĻ•āĻŋāĻ¤ā§‡ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ и āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž (āĻŦāĻ¨ā§āĻ§āĻ—ā§āĻ˛āĻŋ āĻ¸āĻš), āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻĒā§āĻ°ā§‹ āĻ¸ā§āĻŸā§‹āĻ°āĻšāĻžāĻ‰āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻ•āĻ°ā§‡āĨ¤

āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ‚ āĻāĻŦāĻ‚ mcrouter āĻšāĻ˛āĻŽāĻžāĻ¨

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ (āĻāĻŦāĻ‚ āĻ¨āĻŋāĻœā§‡āĻ‡ memcached) 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 >

āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻĒāĻžāĻ ā§āĻ¯ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ•ā§‹āĻ¨āĻ“ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§‡āĻ¯āĻŧāĻ¨āĻŋ, āĻ¤āĻŦā§‡ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ "āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ‰āĻŸāĻžāĻ° āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ"āĻ¸āĻžāĻŽāĻ¨ā§‡ āĻ›āĻŋāĻ˛ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻĒā§āĻ°āĻžāĻšā§€āĻ¨āĻ¤āĻŽ āĻ…āĻŽā§€āĻŽāĻžāĻ‚āĻ¸āĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž - āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ā§‡āĻ° āĻ…āĻ­āĻžāĻŦ memcached āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛āĨ¤

NB: āĻŽā§‡āĻŽāĻ•ā§āĻ¯āĻžāĻļā§‡āĻĄā§‡āĻ° ASCII āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛āĻŸāĻŋ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ§ā§€āĻ°, āĻāĻŦāĻ‚ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖ āĻ•ā§€ āĻšā§āĻ¯āĻžāĻļāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ‰āĻĒāĻžāĻ¯āĻŧāĻ—ā§āĻ˛āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤

āĻ•ā§ŒāĻļāĻ˛āĻŸāĻŋ āĻŦā§āĻ¯āĻžāĻ—ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¯āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¤āĻž āĻšāĻ˛ ASCII āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ā§‡ āĻ¸ā§āĻ¯ā§āĻ‡āĻš āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡...āĨ¤ āĻ¤āĻŦā§‡ āĻāĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ‰āĻ¤ā§āĻ¤āĻ° āĻ–ā§‹āĻāĻœāĻžāĻ° āĻ…āĻ­ā§āĻ¯āĻžāĻ¸ php.net āĻ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻˇā§āĻ ā§āĻ° āĻ°āĻ¸āĻŋāĻ•āĻ¤āĻž āĻ–ā§‡āĻ˛ā§‡āĻ›ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¸āĻ āĻŋāĻ• āĻ‰āĻ¤ā§āĻ¤āĻ° āĻĒāĻžāĻŦā§‡āĻ¨ āĻ¨āĻž... āĻ¯āĻĻāĻŋ āĻ¨āĻž, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ†āĻĒāĻ¨āĻŋ āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸ā§āĻ•ā§āĻ°ā§‹āĻ˛ āĻ•āĻ°ā§‡āĻ¨, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻĨāĻžāĻ•ā§‡ "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ…āĻŦāĻĻāĻžāĻ¨āĻ•ā§ƒāĻ¤ āĻ¨ā§‹āĻŸ" āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āĻ¤ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻĄāĻžāĻ‰āĻ¨āĻ­ā§‹āĻŸā§‡āĻĄ āĻ‰āĻ¤ā§āĻ¤āĻ°.

āĻšā§āĻ¯āĻžāĻ, āĻ¸āĻ āĻŋāĻ• āĻŦāĻŋāĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¨āĻžāĻŽ memcached.sess_binary_protocol. āĻāĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ¨āĻŋāĻˇā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤, āĻ¯āĻžāĻ° āĻĒāĻ°ā§‡ āĻ¸ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻœ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŦā§‡āĨ¤ āĻ¯āĻž āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻž āĻšāĻ˛ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĒāĻĄā§‡ mcrouter āĻ¸āĻš āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ° āĻ°āĻžāĻ–āĻž!

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻāĻ‡āĻ­āĻžāĻŦā§‡, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋ: āĻŽā§‡āĻŽāĻ•ā§āĻ¯āĻžāĻšāĻĄ āĻĢāĻ˛ā§āĻŸ āĻ¸āĻšāĻ¨āĻļā§€āĻ˛āĻ¤āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻŦāĻ‚ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœā§‡āĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¯ā§‹āĻ—ā§āĻ¯āĻ¤āĻž āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ—ā§āĻ˛āĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻāĻŸāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•ā§ŒāĻļāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻœāĻžāĻ¯āĻŧāĻ—āĻž āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›ā§‡: āĻ¯āĻ–āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ°āĻŋāĻœāĻžāĻ°ā§āĻ­ āĻĨāĻžāĻ•ā§‡, āĻ¤āĻ–āĻ¨ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ•ā§‡āĻ° āĻœā§€āĻŦāĻ¨ āĻŦā§āĻ¯āĻžāĻĒāĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻ°āĻ˛ā§€āĻ•ā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻšā§āĻ¯āĻžāĻ, āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ°āĻ“ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻŸāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ "āĻ•ā§āĻ°ā§āĻ¯āĻžāĻš" āĻāĻ° āĻŽāĻ¤ā§‹ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ¯āĻĻāĻŋ āĻ…āĻ°ā§āĻĨ āĻ¸āĻžāĻļā§āĻ°āĻ¯āĻŧ āĻ•āĻ°ā§‡, āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋāĻ•ā§‡ āĻ•āĻŦāĻ° āĻĻā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ā§‡āĻ° āĻ•āĻžāĻ°āĻŖ āĻ¨āĻž āĻ•āĻ°ā§‡ - āĻ•ā§‡āĻ¨ āĻ¨āĻ¯āĻŧ?

āĻĻā§āĻ°āĻˇā§āĻŸāĻŦā§āĻ¯

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§āĻ˛āĻ—ā§‡āĻ“ āĻĒāĻĄāĻŧā§āĻ¨:

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨