рдореЗрдордХреИрдЪ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП mcrouter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдореЗрдордХреИрдЪ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП mcrouter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдЙрдЪреНрдЪ-рд▓реЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм PHP рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рд╕реНрдерд┐рддрд┐ рдЗрддрдиреА рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░. рдЗрд╕ рдиреЛрдЯ рдореЗрдВ рд╣рдо рдореЗрдордХреИрдЪреНрдб рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд╕рддреНрд░ рднрдВрдбрд╛рд░рдг рдФрд░ рдбреЗрдЯрд╛ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рджрд░реНрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдордиреЗ рдПрдХ "рд╡рд╛рд░реНрдб" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред

рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рдирд╛рдпрдХ рд╕рд┐рдореНрдлрдиреА 2.3 рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ PHP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдХрд╛рдлреА рдорд╛рдирдХ рд╕рддреНрд░ рднрдВрдбрд╛рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ "рд╕рдмрдХреБрдЫ рдХреИрд╢рд┐рдВрдЧ" рдиреАрддрд┐ рдореЗрдордХреИрдЪреНрдб рдореЗрдВ: рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╡рд┐рднрд┐рдиреНрди рдЭрдВрдбреЗ, рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓реЗ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореЗрдордХреИрдЪреНрдб рдХрд╛ рдЯреВрдЯрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдШрд╛рддрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреИрд╢ рд╣рд╛рдирд┐ рдХреЗ рдЧрдВрднреАрд░ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЗ рд╣реИрдВ: рдбреАрдмреАрдПрдордПрд╕ рддреЗрдЬреА рд╕реЗ рдлрдЯрдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛рдПрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреА рд╣реИрдВ, рдЖрджрд┐ред рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдореЗрдВ рджрд╕рд┐рдпреЛрдВ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рджреМрд░рд╛рди рд╕реЗрд╡рд╛ рдмрд╣реБрдд рдзреАрдореА рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд░рд╣реЗрдЧреАред

рд╣рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдереА рдереЛрдбрд╝реЗ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдЕрд░реНрдерд╛рддред рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреЗ рд╕рд╛рдеред рдХреИрд╢ рдХреЛ рди рдХреЗрд╡рд▓ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рд░реЛрдзреА рдмрдирд╛рдПрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдореЗрдордХреИрдЪреНрдб рдореЗрдВ рдХреНрдпрд╛ рдЦрд░рд╛рдмреА рд╣реИ?

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, PHP рдХреЗ рд▓рд┐рдП рдореЗрдореНрдХреЗрдЪреНрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛ рдФрд░ рд╕рддреНрд░ рднрдВрдбрд╛рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╕реБрд╕рдВрдЧрдд рдХреБрдВрдЬреА рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдЖрдкрдХреЛ рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рдореВрд╣ рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлреЗрд▓рдУрд╡рд░ рдЙрдкрдХрд░рдг рдХреИрд╢рд┐рдВрдЧ рд╕реЗрд╡рд╛ рдХреА рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ).

рд╕рддреНрд░ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдмреЗрд╣рддрд░ рд╣реИрдВ: рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ memcached.sess_number_of_replicas, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбреЗрдЯрд╛ рдПрдХ рд╕рд╛рде рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдПрдХ рдореЗрдордХреИрдЪреНрдб рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдбреЗрдЯрд╛ рджреВрд╕рд░реЛрдВ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рд╕рд░реНрд╡рд░ рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдХреЗ рдСрдирд▓рд╛рдЗрди рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИ), рддреЛ рдХреБрдЫ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЙрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреАред рджрд░рдЕрд╕рд▓ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣реА рд╣реЛрдЧрд╛ рд╕рддреНрд░ рдбреЗрдЯрд╛ рдХреА рд╣рд╛рдирд┐, рдХреНрдпреЛрдВрдХрд┐ рдЫреВрдЯ рдЬрд╛рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рддрд┐рдХреГрддрд┐ рдкрд░ "рдЬрд╛рдиреЗ" рдХрд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред

рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдХрд░рдг рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд▓рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ: рд╡реЗ рдЖрдкрдХреЛ рдХреИрд╢ рдХреЛ рд╡рд┐рд╢рд╛рд▓ рдЖрдХрд╛рд░ рддрдХ рдмрдврд╝рд╛рдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХрдИ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рдпрд╛ рджреЛ рдиреЛрдбреНрд╕ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдлреА рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХреИрд╢ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдореЗрдореНрдХреЗрдЪреНрдб рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реА рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧреА рдорд╛рдирдХ рдЙрдкрдХрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рднреА рд▓рд╛рдн рдЙрдард╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛... рдпрд╣рд╛рдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдврд╛рдВрдЪреЗ рдХреА рдкреНрд░рд╛рдЪреАрдирддрд╛ рдХреЛ рдпрд╛рдж рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ рдкреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ред рдЖрдЗрдП рд╕рддреНрд░ рдбреЗрдЯрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рди рднреВрд▓реЗрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд▓реЙрдЧрдЖрдЙрдЯ рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЖрдВрдЦреЗрдВ рдШреВрдо рдЧрдИрдВред

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдореЗрдордХреИрдЪреНрдб рдореЗрдВ рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдирд╛ рдЧрд▓рддреА рдпрд╛ рдЧрд▓рддреА рд╣реЛрдиреЗ рдкрд░. рдЗрд╕ рд░рдгрдиреАрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╣рдореЗрдВ рдорджрдж рдорд┐рд▓реА рдореИрдХреНрд░рд╛рдЙрдЯрд░.

рдореИрдХреНрд░рд╛рдЙрдЯрд░

рдпрд╣ рдПрдХ рдореЗрдордХреИрдЪреНрдб рд░рд╛рдЙрдЯрд░ рд╣реИ рдЬрд┐рд╕реЗ рдлреЗрд╕рдмреБрдХ рдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдореЗрдореНрдХреЗрдЪреНрдб рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рд╕реНрдХреЗрд▓ рдореЗрдордХреИрдЪреНрдб рд╕рдВрд╕реНрдерд╛рдкрди рдкрд╛рдЧрд▓ рдЕрдиреБрдкрд╛рдд рдХреЗ рд▓рд┐рдП. рдореИрдХреНрд░рд╛рдЙрдЯрд░ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╣ рдШреЛрд╖рдгрд╛. рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡реНрдпрд╛рдкрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпрд╣ рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • рд░рд┐рдХреЙрд░реНрдб рджреЛрд╣рд░рд╛рдПрдБ;
  • рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рддреЛ рд╕рдореВрд╣ рдХреЗ рдЕрдиреНрдп рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдлрд╝реЙрд▓рдмреИрдХ рдХрд░реЗрдВред

рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП!

рдореИрдХреНрд░рд╛рдЙрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

рдореИрдВ рд╕реАрдзреЗ рдХреЙрдиреНрдлрд┐рдЧ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛:

{
 "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. рдпрд╣ рд╣реИрдВрдбрд▓рд░ рдкреВрд▓ рдореЗрдВ рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрди/2 + 1 рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧ рд╕реЗ AllSyncRoute рд▓реЗрдЦрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд╕рдм рд╕рдореВрд╣ рдореЗрдВ рд╕рд░реНрд╡рд░ - рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ SERVER_ERROR. рд╣рд╛рд▓рд╛рдБрдХрд┐ mcrouter рдЙрдкрд▓рдмреНрдз рдХреИрд╢ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдХреЙрд▓рд┐рдВрдЧ PHP рдлрд╝рдВрдХреНрд╢рди рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛ рдФрд░ рдиреЛрдЯрд┐рд╕ рдЬрдирд░реЗрдЯ рдХрд░реЗрдЧрд╛. AllMajorityRoute рдЗрддрдирд╛ рд╕рдЦреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЖрдзреА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рд╕реЗрд╡рд╛ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдпрд╣ рдпреЛрдЬрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╢ рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдореЗрдореНрдХреЗрдЪреНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рд╣рд░ рдкреВрд▓ рдореЗрдВ рд╕рд░реНрд╡рд░. рд╣рдо рдкреВрд▓ рдореЗрдВ рд╕рд░реНрд╡рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛ рддрдХ: рднрдВрдбрд╛рд░рдг рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ╨╛рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдЧреБрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рддрдХ рдЙрдЪреНрдЪ рдЧрддрд┐ рдФрд░ рдХрдо рд▓реЛрдбред

NB: рдЖрдкрдХреЛ рдореИрдХреНрд░рд╛рдЙрдЯрд░ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ рднреА рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд┐рдХреА рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг ╨╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореБрджреНрджреЗ (рдмрдВрдж рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд), рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХреЗ рдкреВрд░реЗ рднрдВрдбрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

рдореИрдХреНрд░рд╛рдЙрдЯрд░ рдмрдирд╛рдирд╛ рдФрд░ рдЪрд▓рд╛рдирд╛

рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдФрд░ рд╕реНрд╡рдпрдВ рдореЗрдордХреИрд╢реНрдб) рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ - рддрджрдиреБрд╕рд╛рд░, рдореИрдХреНрд░рд╛рдЙрдЯрд░ рднреА рд╡рд╣реАрдВ рд╕реНрдерд┐рдд рд╣реИред рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдЕрд╕реЗрдВрдмрд▓реА рд╣рдо рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ 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 >

рддреНрд░реБрдЯрд┐ рдХреЗ рдкрд╛рда рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП "рдорд╛рдЗрдХреНрд░реЛрдЙрдЯрд░ php"рд╕рдмрд╕реЗ рдЖрдЧреЗ рдереА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреА рдЕрдирд╕реБрд▓рдЭреА рд╕рдорд╕реНрдпрд╛ - рд╕рдорд░реНрдерди рдХреА рдХрдореА рдореЗрдореНрдХреЗрдЪреНрдб рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред

NB: рдореЗрдореНрдХреЗрдЪреНрдб рдореЗрдВ ASCII рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реИ, рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдХреБрдВрдЬреА рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рдорд╛рдирдХ рд╕рд╛рдзрди рдХреЗрд╡рд▓ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЯреНрд░рд┐рдХ рдмреИрдЧ рдореЗрдВ рд╣реИ: рдЖрдкрдХреЛ рдмрд╕ ASCII рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛... рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрддреНрддрд░ рдЦреЛрдЬрдиреЗ рдХреА рдЖрджрдд php.net рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреНрд░реВрд░ рдордЬрд╛рдХ рдХрд┐рдпрд╛. рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рд╕рд╣реА рдЙрддреНрддрд░ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛... рдмреЗрд╢рдХ, рдЖрдк рдЕрдВрдд рддрдХ рд╕реНрдХреНрд░реЙрд▓ рди рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣реИ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдпреЛрдЧрджрд╛рди рдХрд┐рдП рдЧрдП рдиреЛрдЯреНрд╕" рд╡рдлрд╛рджрд╛рд░ рд╣реЛрдВрдЧреЗ рдФрд░ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд╡реЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрддреНрддрд░.

рд╣рд╛рдБ, рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдирд╛рдо рд╣реИ memcached.sess_binary_protocol. рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рддреНрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рдХрдВрдЯреЗрдирд░ рдХреЛ mcrouter рдХреЗ рд╕рд╛рде PHP рдХреЗ рд╕рд╛рде рдкреЙрдб рдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реИ!

рдирд┐рд╖реНрдХрд░реНрд╖

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЗрд╡рд▓ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ: рдореЗрдордХреИрдЪреНрдб рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рдХреИрд╢ рднрдВрдбрд╛рд░рдг рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдмрдврд╝ рдЧрдИ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд▓рд╛рднреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдиреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рджреА: рдЬрдм рд╕рднреА рдШрдЯрдХреЛрдВ рдореЗрдВ рд░рд┐рдЬрд░реНрд╡ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рд╢рд╛рд╕рдХ рдХрд╛ рдЬреАрд╡рди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рдВ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдЕрдкрдиреА рдХрдорд┐рдпрд╛рдВ рднреА рд╣реИрдВ, рдпрд╣ рдПрдХ "рдмреИрд╕рд╛рдЦреА" рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдкреИрд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рджрдмрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдирдИ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдкреБрдирд╢реНрдЪ

рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдкрдврд╝реЗрдВ:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ