рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

Mail.ru рдЧреНрд░реБрдкрдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЯрд╛рд░рдВрдЯреВрд▓ рдЖрд╣реЗ - рд╣реЗ рд▓реБрдЖ рдордзреАрд▓ ре▓рдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡реНрд╣рд░ рдЖрд╣реЗ, рдЬреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореНрд╣рдгреВрди рджреБрдкреНрдкрдЯ рд╣реЛрддреЗ (рдХрд┐рдВрд╡рд╛ рдЙрд▓рдЯ?). рд╣реЗ рд╡реЗрдЧрд╡рд╛рди рдЖрдгрд┐ рдорд╕реНрдд рдЖрд╣реЗ, рдкрд░рдВрддреБ рдПрдХрд╛ рд╕рд░реНрд╡реНрд╣рд░рдЪреА рдХреНрд╖рдорддрд╛ рдЕрджреНрдпрд╛рдк рдЕрдорд░реНрдпрд╛рджрд┐рдд рдирд╛рд╣реА. рд╡реНрд╣рд░реНрдЯрд┐рдХрд▓ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рджреЗрдЦреАрд▓ рд░рд╛рдордмрд╛рдг рдЙрдкрд╛рдп рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдЯрд╛рд░рдВрдЯреВрд▓рдордзреНрдпреЗ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧрд╕рд╛рдареА рд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд - vshard рдореЙрдбреНрдпреВрд▓ [1]. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдбреЗрдЯрд╛ рд╢рд╛рд░реНрдб рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рдкрд░рдВрддреБ рддреЗ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдд рдЯрд┐рдВрдХрд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

рдЪрд╛рдВрдЧрд▓реА рдмрд╛рддрдореА: рдЖрдореНрд╣реА рдХрд╛рд╣реА рдореЛрдареЗ рд╢реЙрдЯреНрд╕ рдЧреЛрд│рд╛ рдХреЗрд▓реЗ рдЖрд╣реЗрдд (рдЙрджрд╛ [2], [3]) рдЖрдгрд┐ рдЖрдгрдЦреА рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬреЗ рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╕реБрд▓рдн рдХрд░реЗрд▓.

рдЯрд╛рд░рдирдЯреВрд▓ рдХрд╛рдбрддреВрд╕ рдЬрдЯрд┐рд▓ рд╡рд┐рддрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдирд╡реАрди рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрд╣реЗ. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рдРрд╡рдЬреА рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдХрдЯ рдЦрд╛рд▓реА рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЖрдгрд┐ рддреЗ рд╡рд╛рдкрд░реВрди рд╡рд┐рддрд░рд┐рдд рд╕реЗрд╡рд╛ рдХрд╕реЗ рд▓рд┐рд╣рд╛рдпрдЪреЗ рддреЗ рд╕рд╛рдВрдЧреЗрди.

рдиреЗрдордХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛рдп рдЖрд╣реЗ?

рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЯрд╛рд░рдВрдЯреБрд▓рд╛ рдЖрд╣реЗ, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╡реНрд╣рд╢рд╛рд░реНрдб рдЖрд╣реЗ - рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдгрдЦреА рдХрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗ?

рдкреНрд░рдердо, рд╣реА рд╕реЛрдпреАрдЪреА рдмрд╛рдм рдЖрд╣реЗ. vshard рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди Lua рдЯреЗрдмрд▓рджреНрд╡рд╛рд░реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ. рдПрдХрд╛рдзрд┐рдХ рдЯреЕрд░рдирдЯреВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдЪреА рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рддреНрд░ рд╕рдорд╛рди рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдХреЛрдгреАрд╣реА рд╣реЗ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдирд╛рд╣реА. рдореНрд╣рдгреВрди, рд╕рд░реНрд╡ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЙрддреНрддрд░рджрд╛рдпреА рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрди рдкреНрд░рдгрд╛рд▓реА рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд.

рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рд╕реНрд╡рддрдГ vshard рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ, рддреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рд╣реЗ рдХрд░рддреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╡рд┐рддрд░рд┐рдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди. рд╣реА рдореВрд▓рдд: рдПрдХ рд╕рд╛рдзреА YAML рдлрд╛рдИрд▓ рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪреА рдкреНрд░рдд рдкреНрд░рддреНрдпреЗрдХ Tarantool рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ. рд╕рд░рд▓реАрдХрд░рдг рд╣реЗ рдЖрд╣реЗ рдХреА рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрд╡рддрдГрдЪ рддреНрдпрд╛рдЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рдЖрдгрд┐ рддреЗ рд╕рд░реНрд╡рддреНрд░ рд╕рдорд╛рди рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рддреЗ.

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

рдЖрдореНрд╣реА рдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдкреБрди:рдкреБрдиреНрд╣рд╛ рдирд┐рд░рд╛рдХрд░рдг рдХреЗрд▓реЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдХреНрд╖рдгреА рдЖрдореНрд╣реА рдПрдХ рджреГрд╖реНрдЯреАрдХреЛрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╣ рд╕рдВрдкреВрд░реНрдг рдЬреАрд╡рди рдЪрдХреНрд░рд╛рдд рдХрд╛рд░реНрдп рдХрд░рдгреЗ рд╕реЛрдкреЗ рд╣реЛрддреЗ: рдирд┐рд░реНрдорд┐рддреА, рд╡рд┐рдХрд╛рд╕, рдЪрд╛рдЪрдгреА, CI/CD, рджреЗрдЦрднрд╛рд▓.

рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рд░рдирдЯреВрд▓ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рднреВрдорд┐рдХреЗрдЪреА рд╕рдВрдХрд▓реНрдкрдирд╛ рд╕рд╛рджрд░ рдХрд░рддреЗ. рднреВрдорд┐рдХрд╛ рд╣реА рдПрдХ рд╕рдВрдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ рдЬреА рд╡рд┐рдХрд╕рдХрд╛рд▓рд╛ рдХреЛрдб рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рднреВрдорд┐рдХрд╛ рдПрдХрд╛ рдЯрд╛рд░рдВрдЯреВрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рд╡рд░ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рд╣реЗ рдЪрд╛рдЪрдгреНрдпрд╛рдВрд╕рд╛рдареА рдкреБрд░реЗрд╕реЗ рдЕрд╕реЗрд▓.

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рд░реНрдЯреНрд░рд┐рдЬрдЪреА рдореБрдЦреНрдп рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ:

  • рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди;
  • рдирд╡реАрди рднреВрдорд┐рдХрд╛ рд╡рд╛рдкрд░реВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рдгреЗ;
  • рд╡рд┐рдХрд╛рд╕ рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ;
  • рдЕрдВрдЧрднреВрдд рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╢рд╛рд░реНрдбрд┐рдВрдЧ;
  • Luatest рдЪрд╛рдЪрдгреА рдлреНрд░реЗрдорд╡рд░реНрдХрд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдг;
  • WebUI рдЖрдгрд┐ API рд╡рд╛рдкрд░реВрди рдХреНрд▓рд╕реНрдЯрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди;
  • рдкреЕрдХреЗрдЬрд┐рдВрдЧ рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрди рд╕рд╛рдзрдиреЗ.

рдирдорд╕реНрдХрд╛рд░, рдЬрдЧ!

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

$ tarantoolctl rocks install cartridge-cli
$ export PATH=$PWD/.rocks/bin/:$PATH

рдпрд╛ рджреЛрди рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдпреБрдЯрд┐рд▓рд┐рдЯрд┐рдЬ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░рддреАрд▓ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрдордзреВрди рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ ре▓рдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреАрд▓:

$ cartridge create --name myapp

рдЖрдгрд┐ рд╣реЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдорд┐рд│рддреЗ:

myapp/
тФЬтФАтФА .git/
тФЬтФАтФА .gitignore
тФЬтФАтФА app/roles/custom.lua
тФЬтФАтФА deps.sh
тФЬтФАтФА init.lua
тФЬтФАтФА myapp-scm-1.rockspec
тФЬтФАтФА test
тФВ   тФЬтФАтФА helper
тФВ   тФВ   тФЬтФАтФА integration.lua
тФВ   тФВ   тФФтФАтФА unit.lua
тФВ   тФЬтФАтФА helper.lua
тФВ   тФЬтФАтФА integration/api_test.lua
тФВ   тФФтФАтФА unit/sample_test.lua
тФФтФАтФА tmp/

рд╣реЗ рддрдпрд╛рд░ тАЬрд╣реЕрд▓реЛ, рд╡рд░реНрд▓реНрдб!тАЭ рдЕрд╕рд▓реЗрд▓реЗ рдЧрд┐рдЯ рднрд╛рдВрдбрд╛рд░ рдЖрд╣реЗ. рдЕрд░реНрдЬ рдЖрдзреА рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрди (рдлреНрд░реЗрдорд╡рд░реНрдХрд╕рд╣) рддреЗ рд▓рдЧреЗрдЪ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛:

$ tarantoolctl rocks make
$ ./init.lua --http-port 8080

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

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕

рдлрдХреНрдд рдХрд▓реНрдкрдирд╛ рдХрд░рд╛, рдЖрдореНрд╣реА рдПрдХ рдкреНрд░рдХрд▓реНрдк рдбрд┐рдЭрд╛рдЗрди рдХрд░рдд рдЖрд╣реЛрдд рдЬреНрдпрд╛рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рддреЛ рдЬрддрди рдХрд░рдгреЗ рдЖрдгрд┐ рджрд┐рд╡рд╕рд╛рддреВрди рдПрдХрджрд╛ рдЕрд╣рд╡рд╛рд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

рдЖрдореНрд╣реА рдЖрдХреГрддреА рдХрд╛рдврдгреЗ рд╕реБрд░реВ рдХрд░рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рддреАрди рдШрдЯрдХ рдареЗрд╡рддреЛ: рдЧреЗрдЯрд╡реЗ, рд╕реНрдЯреЛрд░реЗрдЬ рдЖрдгрд┐ рд╢реЗрдбреНрдпреВрд▓рд░. рдЖрдореНрд╣реА рдкреБрдвреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЛрдд. рдЖрдореНрд╣реА рд╕реНрдЯреЛрд░реЗрдЬ рдореНрд╣рдгреВрди vshard рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА рд╕реНрдХреАрдордордзреНрдпреЗ vshard-рд░рд╛рдЙрдЯрд░ рдЖрдгрд┐ vshard-storage рдЬреЛрдбрддреЛ. рдЧреЗрдЯрд╡реЗ рдХрд┐рдВрд╡рд╛ рд╢реЗрдбреНрдпреБрд▓рд░ рдпрд╛рдкреИрдХреА рдХреЛрдгреАрд╣реА рдереЗрдЯ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА; рд░рд╛рдЙрдЯрд░ рддреНрдпрд╛рд╕рд╛рдареАрдЪ рдЖрд╣реЗ, рддреНрдпрд╛рд╕рд╛рдареАрдЪ рддреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ.

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

рд╣рд╛ рдЖрдХреГрддреА рдЕрджреНрдпрд╛рдкрд╣реА рдЖрдореНрд╣реА рдкреНрд░рдХрд▓реНрдкрд╛рдд рдХрд╛рдп рддрдпрд╛рд░ рдХрд░рдгрд╛рд░ рдЖрд╣реЛрдд рдпрд╛рдЪреЗ рдиреЗрдордХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдд рдирд╛рд╣реА рдХрд╛рд░рдг рдШрдЯрдХ рдЕрдореВрд░реНрдд рджрд┐рд╕рдд рдЖрд╣реЗрдд. рдЦрд▒реНрдпрд╛ рдЯреЕрд░рдирдЯреВрд▓рд╡рд░ рд╣реЗ рдХрд╕реЗ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ рд╣реЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрджреНрдпрд╛рдк рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ - рдЪрд▓рд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдиреБрд╕рд╛рд░ рдЖрдордЪреЗ рдШрдЯрдХ рдЧрдЯрдмрджреНрдз рдХрд░реВрдпрд╛.

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

vshard-рд░рд╛рдЙрдЯрд░ рдЖрдгрд┐ рдЧреЗрдЯрд╡реЗ рд╡реЗрдЧрд│реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдВрд╡рд░ рдареЗрд╡рдгреНрдпрд╛рдд рдлрд╛рд░рд╕рд╛ рдЕрд░реНрде рдирд╛рд╣реА. рдЬрд░ рд░рд╛рдЙрдЯрд░рдЪреА рд╣реА рдЬрдмрд╛рдмрджрд╛рд░реА рдЖрдзреАрдЪ рдЕрд╕реЗрд▓ рддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдкреБрдиреНрд╣рд╛ рдПрдХрджрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрдл рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ? рддреЗ рддреНрдпрд╛рдЪ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рдЪрд╛рд▓рд╡рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд. рдореНрд╣рдгрдЬреЗрдЪ, рдЧреЗрдЯрд╡реЗ рдЖрдгрд┐ vshard.router.cfg рджреЛрдиреНрд╣реА рдПрдХрд╛рдЪ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╕реБрд░реВ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзреВ рджреНрдпрд╛.

рдбрд┐рдЭрд╛рдЗрди рд╕реНрдЯреЗрдЬрд╡рд░, рддреАрди рдШрдЯрдХрд╛рдВрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рд╕реЛрдпреАрдЪреЗ рд╣реЛрддреЗ, рдкрд░рдВрддреБ рдореА, рдПрдХ рд╡рд┐рдХрд╕рдХ рдореНрд╣рдгреВрди, рдХреЛрдб рд▓рд┐рд╣рд┐рдд рдЕрд╕рддрд╛рдирд╛, рдЯрд╛рд░рдирд╛рдЯреВрд▓рдЪреА рддреАрди рдЙрджрд╛рд╣рд░рдгреЗ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдирд╛рд╣реА. рдорд▓рд╛ рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рд╛рдпрд▓рд╛ рд╣рд╡реНрдпрд╛рдд рдЖрдгрд┐ рдореА рдЧреЗрдЯрд╡реЗ рдмрд░реЛрдмрд░ рд▓рд┐рд╣рд┐рд▓рд╛ рдЖрд╣реЗ рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд рдорд▓рд╛ рдорд╛рдЭреНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрдирд╛ рдПрдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рджрд╛рдЦрд╡рд╛рдпрдЪреЗ рдЖрд╣реЗ. рддреАрди рдкреНрд░рддреА рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рддреНрд░рд╛рд╕рд╛рддреВрди рдореА рдХрд╛ рдЬрд╛рд╡реЗ? рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рднреВрдорд┐рдХрд╛рдВрдЪреА рд╕рдВрдХрд▓реНрдкрдирд╛ рдЬрдиреНрдорд╛рд▓рд╛ рдЖрд▓реА. рд░реЛрд▓ рд╣реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рд▓реБрдЕрд╢ рдореЙрдбреНрдпреВрд▓ рдЖрд╣реЗ рдЬреНрдпрд╛рдЪреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛рд░реНрдЯреНрд░рд┐рдЬрджреНрд╡рд╛рд░реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд рддреНрдпрд╛рдкреИрдХреА рдЪрд╛рд░ рдЖрд╣реЗрдд - рдЧреЗрдЯрд╡реЗ, рд░рд╛рдЙрдЯрд░, рд╕реНрдЯреЛрд░реЗрдЬ, рд╢реЗрдбреНрдпреВрд▓рд░. рджреБрд╕рд▒реНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдд рдЖрдгрдЦреА рдХрд╛рд╣реА рдЕрд╕реВ рд╢рдХрддреЗ. рд╕рд░реНрд╡ рднреВрдорд┐рдХрд╛ рдПрдХрд╛рдЪ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рдЪрд╛рд▓рд╡рд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рд╣реЗ рдкреБрд░реЗрд╕реЗ рдЕрд╕реЗрд▓.

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

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

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

рдЯреЛрдкреЛрд▓реЙрдЬреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рдХреЛрдгрддреНрдпрд╛ рднреВрдорд┐рдХрд╛ рдХреБрдареЗ рдЪрд╛рд▓реВ рдЖрд╣реЗрдд рдпрд╛рдЪреА рдорд╛рд╣рд┐рддреА рдХреБрдареЗрддрд░реА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рд╣реЗ "рдХреБрдареЗрддрд░реА" рд╡рд┐рддрд░рд┐рдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЖрд╣реЗ, рдЬреЗ рдореА рдЖрдзреАрдЪ рд╡рд░ рдирдореВрдж рдХреЗрд▓реЗ рдЖрд╣реЗ. рддреНрдпрд╛рддреАрд▓ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрддреНрд╡рд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЛрдкреЛрд▓реЙрдЬреА. рдпреЗрдереЗ 3 рдЯрд╛рд░рдВрдЯреВрд▓ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ 5 рдкреНрд░рддрд┐рдХреГрддреА рдЧрдЯ рдЖрд╣реЗрдд:

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

рдЖрдореНрд╣реА рдбреЗрдЯрд╛ рдЧрдорд╛рд╡реВ рдЗрдЪреНрдЫрд┐рдд рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдХрд╛рд│рдЬреАрдкреВрд░реНрд╡рдХ рд╣рд╛рддрд╛рд│рддреЛ. рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рджреЛрди-рдлреЗрдЬ рдХрдорд┐рдЯ рд╡рд╛рдкрд░реВрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдареЗрд╡рддреЗ. рдПрдХрджрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЕрдкрдбреЗрдЯ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ, рддреЗ рдкреНрд░рдердо рддрдкрд╛рд╕рддреЗ рдХреА рд╕рд░реНрд╡ рдЙрджрд╛рд╣рд░рдгреЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд рдЖрдгрд┐ рдирд╡реАрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реНрд╡реАрдХрд╛рд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣реЗрдд. рдпрд╛рдирдВрддрд░, рджреБрд╕рд░рд╛ рдЯрдкреНрдкрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рддреЛ. рдЕрд╢рд╛рдкреНрд░рдХрд╛рд░реЗ, рдЬрд░реА рдПрдХ рдкреНрд░рдд рддрд╛рддреНрдкреБрд░рддреА рдЕрдиреБрдкрд▓рдмреНрдз рдЭрд╛рд▓реА рддрд░реА рдХрд╛рд╣реАрд╣реА рд╡рд╛рдИрдЯ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрдХреНрдд рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдЧрд╛рдК рддреНрд░реБрдЯреА рджрд┐рд╕реЗрд▓.

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

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

рднреВрдорд┐рдХрд╛рдВрдЪреЗ рдЬреАрд╡рди

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

function init()
function validate_config()
function apply_config()
function stop()

рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХреЗрдЪреЗ рдПрдХ рдХрд╛рд░реНрдп рдЕрд╕рддреЗ init. рдЬреЗрд╡реНрд╣рд╛ рднреВрдорд┐рдХрд╛ рд╕рдХреНрд╖рдо рдХреЗрд▓реА рдЬрд╛рддреЗ рдХрд┐рдВрд╡рд╛ рдЯреЕрд░рдирдЯреВрд▓ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рддреЗ рдПрдХрджрд╛ рдХреЙрд▓ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рддреЗрдереЗ рд╕реЛрдпреАрд╕реНрдХрд░ рдЖрд╣реЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, box.space.create рд╕реБрд░реВ рдХрд░рдгреЗ, рдХрд┐рдВрд╡рд╛ рд╢реЗрдбреНрдпреБрд▓рд░ рдХрд╛рд╣реА рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рдлрд╛рдпрдмрд░ рд▓рд╛рдБрдЪ рдХрд░реВ рд╢рдХрддреЛ рдЬреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реЗрд│реЗрдЪреНрдпрд╛ рдЕрдВрддрд░рд╛рдиреЗ рдХрд╛рд░реНрдп рдХрд░реЗрд▓.

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

рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрд▓ validate_config ╨╕ apply_config рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд╡рд┐рддрд░рд┐рдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓рддреЗ. рдЬреЗрд╡реНрд╣рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рджреЛрди-рдлреЗрдЬ рдХрдорд┐рдЯрджреНрд╡рд╛рд░реЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рддреЗрд╡реНрд╣рд╛ рдХреНрд▓рд╕реНрдЯрд░ рддрдкрд╛рд╕рддреЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рд╣реЗ рдирд╡реАрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реНрд╡реАрдХрд╛рд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕ рддреНрд░реБрдЯреАрдЪреА рддрдХреНрд░рд╛рд░ рдХрд░рддреЗ. рдЬреЗрд╡реНрд╣рд╛ рдкреНрд░рддреНрдпреЗрдХрдЬрдг рд╕рд╣рдордд рдЕрд╕реЗрд▓ рдХреА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗ, рддреЗрд╡реНрд╣рд╛ apply_config.

рднреВрдорд┐рдХрд╛рдВрдирд╛рд╣реА рдПрдХ рдкрджреНрдзрдд рдЕрд╕рддреЗ stop, рдЬреЗ рд░реЛрд▓рдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдл рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╢реЗрдбреНрдпреБрд▓рд░рдЪреА рдпрд╛рдкреБрдвреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА рдЕрд╕реЗ рдЖрдореНрд╣реА рдореНрд╣рдгрдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреЗ рдЬреНрдпрд╛ рдлрд╛рдпрдмрд░рдкрд╛рд╕реВрди рд╕реБрд░реВ рдЭрд╛рд▓реЗ рддреЗ рдерд╛рдВрдмрд╡реВ рд╢рдХрддреЗ init.

рднреВрдорд┐рдХрд╛ рдПрдХрдореЗрдХрд╛рдВрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзреВ рд╢рдХрддрд╛рдд. рдЖрдореНрд╣рд╛рд▓рд╛ рд▓реБрдЖрдордзреНрдпреЗ рдлрдВрдХреНрд╢рди рдХреЙрд▓ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рд╕рд╡рдп рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЕрд╕реЗ рд╣реЛрдК рд╢рдХрддреЗ рдХреА рджрд┐рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдордзреНрдпреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рднреВрдорд┐рдХрд╛ рдирд╕рддреЗ. рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реАрд▓ рдХреЙрд▓реНрд╕ рд╕реБрд▓рдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА rpc (рд░рд┐рдореЛрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓) рд╕рд╣рд╛рдпреНрдпрдХ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдкрд░рддреЛ, рдЬреЗ рдЯрд╛рд░рдирдЯреВрд▓рдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдорд╛рдирдХ рдиреЗрдЯрдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдордЪрд╛ рдЧреЗрдЯрд╡реЗ рдПрдХ рджрд┐рд╡рд╕ рдерд╛рдВрдмрдгреНрдпрд╛рдРрд╡рдЬреА рд╢реЗрдбреНрдпреБрд▓рд░рд▓рд╛ рдереЗрдЯ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рд╣реЗ рдЙрдкрдпреБрдХреНрдд рдард░реВ рд╢рдХрддреЗ.

рдЖрдгрдЦреА рдПрдХ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдореБрджреНрджрд╛ рдореНрд╣рдгрдЬреЗ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ. рдЖрд░реЛрдЧреНрдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ SWIM рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд╛рдкрд░рддреЗ [4]. рдереЛрдбрдХреНрдпрд╛рдд, рдкреНрд░рдХреНрд░рд┐рдпрд╛ UDP рд╡рд░ рдПрдХрдореЗрдХрд╛рдВрд╢реА тАЬрдЕрдлрд╡рд╛тАЭ рдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХрд░рддрд╛рддтАФрдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдкрд▓реНрдпрд╛ рд╢реЗрдЬрд╛рд▒реНрдпрд╛рдВрдирд╛ рддрд╛рдЬреНрдпрд╛ рдмрд╛рддрдореНрдпрд╛ рд╕рд╛рдВрдЧрддреЗ рдЖрдгрд┐ рддреЗ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддрд╛рдд. рдЬрд░ рдЕрдЪрд╛рдирдХ рдЙрддреНрддрд░ рдЖрд▓реЗ рдирд╛рд╣реА, рддрд░ рдЯрд╛рд░рдВрдЯреВрд▓рд▓рд╛ рдХрд╛рд╣реАрддрд░реА рдЧрдбрдмрдб рдЕрд╕рд▓реНрдпрд╛рдЪреА рд╢рдВрдХрд╛ рдпреЗрдК рд▓рд╛рдЧрддреЗ рдЖрдгрд┐ рдереЛрдбреНрдпрд╛ рд╡реЗрд│рд╛рдиреЗ рддреЛ рдореГрддреНрдпреВрдЪреА рдЖрдард╡рдг рдХрд░рддреЛ рдЖрдгрд┐ рдЖрдЬреВрдмрд╛рдЬреВрдЪреНрдпрд╛ рд╕рд░реНрд╡рд╛рдВрдирд╛ рд╣реА рдмрд╛рддрдореА рд╕рд╛рдВрдЧреВ рд▓рд╛рдЧрддреЛ.

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

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

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

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

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

рдбреЙрдХрд░рдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рдЖрдореНрд╣реА рдлрдХреНрдд рднреВрдорд┐рдХрд╛ "рдкреНрд░рддрд┐рдорд╛" рдШреЗрдК рд╢рдХрдд рдирд╛рд╣реА, рддреА рджреБрд╕рд░реНрдпрд╛ рдорд╢реАрдирд╡рд░ рдиреЗрдК рдЖрдгрд┐ рддреЗрдереЗ рдЪрд╛рд▓рд╡реВ рд╢рдХрдд рдирд╛рд╣реА. рдЖрдордЪреНрдпрд╛ рднреВрдорд┐рдХрд╛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рд╕рд╛рд░рдЦреНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рдирд╛рд╣реАрдд. рддрд╕реЗрдЪ, рдЖрдкрдг рдПрдХрд╛ рдкреНрд░рд╕рдВрдЧрд╛рд╡рд░ рджреЛрди рд╕рдорд╛рди рднреВрдорд┐рдХрд╛ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рднреВрдорд┐рдХрд╛ рдПрдХрддрд░ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ рдХрд┐рдВрд╡рд╛ рддреА рдирд╛рд╣реА; рдЖрдгрд┐ рддрд┐рд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рд╕рдВрдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреГрддреА рдЧрдЯрд╛рдордзреНрдпреЗ рднреВрдорд┐рдХрд╛ рд╕рдорд╛рди рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдХрд╛рд░рдг рдЕрдиреНрдпрдерд╛ рддреЗ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдЕрд╕реЗрд▓ - рдбреЗрдЯрд╛ рд╕рдорд╛рди рдЖрд╣реЗ, рдкрд░рдВрддреБ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рднрд┐рдиреНрди рдЖрд╣реЗ.

рдЙрдкрдпреЛрдЬрди рд╕рд╛рдзрдиреЗ

рдореА рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕ рдХрд╢реА рдорджрдд рдХрд░рддреЗ рд╣реЗ рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рдЪреЗ рд╡рдЪрди рджрд┐рд▓реЗ. рдЗрддрд░рд╛рдВрд╕рд╛рдареА рдЬреАрд╡рди рд╕реЛрдкреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреЕрдХреЗрдЬреЗрд╕ RPM рдкреЕрдХреЗрдЬреЗрд╕:

$ cartridge pack rpm myapp -- ╤Г╨┐╨░╨║╤Г╨╡╤В ╨┤╨╗╤П ╨╜╨░╤Б ./myapp-0.1.0-1.rpm
$ sudo yum install ./myapp-0.1.0-1.rpm

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

$ sudo tee /etc/tarantool/conf.d/demo.yml <<CONFIG
myapp.router: {"advertise_uri": "localhost:3301", "http_port": 8080}
myapp.storage_A: {"advertise_uri": "localhost:3302", "http_enabled": False}
myapp.storage_B: {"advertise_uri": "localhost:3303", "http_enabled": False}
CONFIG

рдпреЗрдереЗ рдПрдХ рдордиреЛрд░рдВрдЬрдХ рд╕реВрдХреНрд╖реНрдорддрд╛ рдЖрд╣реЗ. рдлрдХреНрдд рдмрд╛рдпрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА, рдЖрдореНрд╣реА рд╣реЛрд╕реНрдЯрдирд╛рд╡рд╛рд╕рд╣ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪрд╛ рд╕рдВрдкреВрд░реНрдг рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрддреНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЛ. рд╣реЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдХрд╕реЗ рдЬреЛрдбрд▓реЗ рдЬрд╛рд╡реЗ рд╣реЗ рдХрд│реЗрд▓. advertise_uri рдкрддреНрддрд╛ рдореНрд╣рдгреВрди 0.0.0.0 рд╡рд╛рдкрд░рдгреЗ рд╣реА рдПрдХ рд╡рд╛рдИрдЯ рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ, рддреЛ рдПрдХ рдмрд╛рд╣реНрдп IP рдкрддреНрддрд╛ рдЕрд╕рд╛рд╡рд╛, рд╕реЙрдХреЗрдЯ рдмрд╛рдЗрдВрдб рдирд╛рд╣реА. рддреНрдпрд╛рд╢рд┐рд╡рд╛рдп, рдХрд╛рд╣реАрд╣реА рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рддреБрдореНрд╣рд╛рд▓рд╛ рдЪреБрдХреАрдЪреНрдпрд╛ рдЬрд╛рд╣рд┐рд░рд╛рддреАрд╕рд╣ рдиреЛрдб рд▓реЙрдиреНрдЪ рдХрд░реВ рджреЗрдгрд╛рд░ рдирд╛рд╣реА.

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

$ sudo systemctl start myapp@router
$ sudo systemctl start myapp@storage_A
$ sudo systemctl start myapp@storage_B

рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ, рдЖрдореНрд╣реА HTTP рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓рд╛ рдЖрд╣реЗ рдЬреНрдпрд╛рд╡рд░ рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗрд╡рд╛ рджреЗрддреЛ - 8080. рдЪрд▓рд╛ рддреНрдпрд╛рд╡рд░ рдЬрд╛рдК рдЖрдгрд┐ рдПрдХ рдирдЬрд░ рдЯрд╛рдХреВрдпрд╛:

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

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

рдЪрд▓рд╛ рдЖрдкрд▓реНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ рдкреЗрдпрд╛рдЪрд╛ рдЧреНрд▓рд╛рд╕ рдУрддреВрдпрд╛ рдЖрдгрд┐ рджреАрд░реНрдШ рдХрд╛рдорд╛рдЪреНрдпрд╛ рдЖрдард╡рдбреНрдпрд╛рдирдВрддрд░ рдЖрд░рд╛рдо рдХрд░реВрдпрд╛. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдЯрд╛рд░рдВрдЯреВрд▓ рдХрд╛рдбрддреВрд╕: рд▓реБрдЖ рдмреЕрдХрдПрдВрдбрд▓рд╛ рддреАрди рдУрд│реАрдВрдордзреНрдпреЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ

рдкрд░рд┐рдгрд╛рдо

рдкрд░рд┐рдгрд╛рдо рдХрд╛рдп рдЖрд╣реЗрдд? рд╣реЗ рд╡рд╛рдкрд░реВрди рдкрд╣рд╛, рд╡рд╛рдкрд░рд╛, рдЕрднрд┐рдкреНрд░рд╛рдп рджреНрдпрд╛, рдЧрд┐рдердмрд╡рд░ рддрд┐рдХрд┐рдЯреЗ рддрдпрд╛рд░ рдХрд░рд╛.

рд╕рдВрджрд░реНрдн

[1] рдЯрд╛рд░рдирдЯреВрд▓ ┬╗ реи.реи ┬╗ рд╕рдВрджрд░реНрдн ┬╗ рд░реЙрдХреНрд╕ рд╕рдВрджрд░реНрдн ┬╗ рдореЙрдбреНрдпреВрд▓ vshard

[2] рдЖрдореНрд╣реА Tarantool рд╡рд░ рдЖрдзрд╛рд░рд┐рдд Alfa-Bank рдЪреНрдпрд╛ рдЧреБрдВрддрд╡рдгреВрдХ рд╡реНрдпрд╡рд╕рд╛рдпрд╛рдЪрд╛ рдЧрд╛рднрд╛ рдХрд╕рд╛ рд▓рд╛рдЧреВ рдХреЗрд▓рд╛

[3] рдирд╡реАрди рдкрд┐рдвреАрдЪреЗ рдмрд┐рд▓рд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░: рдЯреЕрд░рдирдЯреВрд▓рдордзреНрдпреЗ рд╕рдВрдХреНрд░рдордгрд╛рд╕рд╣ рдкрд░рд┐рд╡рд░реНрддрди

[4] SWIM - рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рдВрдзрдХрд╛рдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓

[5] рдЧрд┐рдЯрд╣рдм - рдЯрд╛рд░рдВрдЯреВрд▓/рдХрд╛рдбрддреВрд╕-рдХреНрд▓реА

[6] рдЧрд┐рдЯрд╣рдм - рдЯрд╛рд░рдВрдЯреВрд▓/рдХрд╛рдбрддреВрд╕

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛