рдкрд╛рдЪ рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдЖрдгрд┐ рддреАрди рд╡рд┐рддрд░рд┐рдд рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рд╕реНрдЯреЛрдЕрд░

рдХрд┐рдВрд╡рд╛ рдЖрдореНрд╣реА ZooKeeper, etcd рдЖрдгрд┐ Consul KV рд╕рд╛рдареА рдХреНрд▓рд╛рдпрдВрдЯ C++ рд▓рд╛рдпрдмреНрд░рд░реА рдХрд╢реА рд▓рд┐рд╣рд┐рд▓реА

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

рдкрд╛рдЪ рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдЖрдгрд┐ рддреАрди рд╡рд┐рддрд░рд┐рдд рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рд╕реНрдЯреЛрдЕрд░

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

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

ZooKeeper, etcd рдЖрдгрд┐ Consul KV рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рджреЗрдгрд╛рд░реА рд▓рд╛рдпрдмреНрд░рд░реА рдЖрдореНрд╣реА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ. рд▓рд╛рдпрдмреНрд░рд░реА C++ рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реА рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреА рдЗрддрд░ рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рдкреЛрд░реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрд╣реЗ.

рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓реНрд╕

рддреАрди рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓реАрдВрд╕рд╛рдареА рдПрдХ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдд рдХрд╛рдп рд╕рд╛рдореНрдп рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗрдд рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЪрд▓рд╛ рддреЗ рдмрд╛рд╣реЗрд░ рдХрд╛рдвреВрдпрд╛.

рдЭреВрдХреАрдкрд░

рдкрд╛рдЪ рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдЖрдгрд┐ рддреАрди рд╡рд┐рддрд░рд┐рдд рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рд╕реНрдЯреЛрдЕрд░

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

рдЗ

рдкрд╛рдЪ рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдЖрдгрд┐ рддреАрди рд╡рд┐рддрд░рд┐рдд рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рд╕реНрдЯреЛрдЕрд░

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

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

рдШрдбреНрдпрд╛рд│реЗ рдпреЗрдереЗ рджреЗрдЦреАрд▓ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗрдд, рдЬрд░реА рддреЗ рдереЛрдбреЗ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЖрд╣реЗрдд. рдореНрд╣рдгрдЬреЗрдЪ, рдХреА рд╢реНрд░реЗрдгреАрд╡рд░ рдШрдбреНрдпрд╛рд│ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣реА рдШрдбреНрдпрд╛рд│ рд░рджреНрдж рдХрд░реЗрдкрд░реНрдпрдВрдд рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рд╢реНрд░реЗрдгреАрддреАрд▓ рд╕рд░реНрд╡ рдЕрджреНрдпрддрдиреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреАрд▓, рдлрдХреНрдд рдкрд╣рд┐рд▓реЗрдЪ рдирд╛рд╣реА. etcd рдордзреНрдпреЗ, ZooKeeper рдХреНрд▓рд╛рдпрдВрдЯ рд╕рддреНрд░рд╛рдВрдЪреЗ analogue рд▓реАрдЬ рдЖрд╣реЗрдд.

рдХреЙрдиреНрд╕реБрд▓ рдХреЗ.рд╡реНрд╣реА.

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

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

рд╣реЗ рд╕рд░реНрд╡ рдПрдХрддреНрд░ рдареЗрд╡рдгреЗ

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

  • рдЕрдиреБрдХреНрд░рдо, рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ TTL рдиреЛрдбреНрд╕ рд╕рдорд░реНрдерд┐рдд рдирд╛рд╣реА
  • ACL рд╕рдорд░реНрдерд┐рдд рдирд╛рд╣реАрдд
  • рдЬрд░ рддреА рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╕реЗрд▓ рддрд░ рд╕реЗрдЯ рдкрджреНрдзрдд рдПрдХ рдХреА рддрдпрд╛рд░ рдХрд░рддреЗ (ZK setData рдордзреНрдпреЗ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рддреНрд░реБрдЯреА рдкрд░рдд рдХрд░рддреЗ)
  • рд╕реЗрдЯ рдЖрдгрд┐ рдХреЕрд╕ рдкрджреНрдзрддреА рд╡рд┐рднрдХреНрдд рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд (ZK рдордзреНрдпреЗ рддреЗ рдореВрд▓рдд: рд╕рдорд╛рди рдЖрд╣реЗрдд)
  • рдорд┐рдЯрд╡рдгреНрдпрд╛рдЪреА рдкрджреНрдзрдд рдиреЛрдб рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рдмрдЯреНрд░реАрд╕рд╣ рд╣рдЯрд╡рддреЗ (ZK рдбрд┐рд▓реАрдЯрдордзреНрдпреЗ рдиреЛрдбрд▓рд╛ рдореБрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рддреНрд░реБрдЯреА рджрд╛рдЦрд╡рддреЗ)
  • рдкреНрд░рддреНрдпреЗрдХ рдХреАрд╕рд╛рдареА рдлрдХреНрдд рдПрдХ рдЖрд╡реГрддреНрддреА рдЖрд╣реЗ - рдореВрд▓реНрдп рдЖрд╡реГрддреНрддреА (ZK рдордзреНрдпреЗ рддреНрдпрд╛рдкреИрдХреА рддреАрди рдЖрд╣реЗрдд)

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

рд╡реНрд╣рд░реНрдЯреЗрдХреНрд╕ рд╣рдЯрд╡рддрд╛рдирд╛ ZooKeeper рдкреНрд░рдорд╛рдгреЗ рд╡рд╛рдЧрдгреВрдХ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА etcd рдЖрдгрд┐ Consul рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдХреАрд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ рдЪрд╛рдЗрд▓реНрдб рдХрд╛рдЙрдВрдЯрд░ рд░рд╛рдЦрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдореЗрдЯрд╛ рдорд╛рд╣рд┐рддреА рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреЗ рдЯрд╛рд│рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ, рд╕рдВрдкреВрд░реНрдг рдЙрдкрд╡реГрдХреНрд╖ рд╣рдЯрд╡рд┐рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрдгреНрдпрд╛рдд рдЖрд▓рд╛.

рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рд╕реВрдХреНрд╖реНрдорддрд╛

рд╡рд┐рд╡рд┐рдз рдкреНрд░рдгрд╛рд▓реАрдВрдордзреНрдпреЗ рд▓рд╛рдпрдмреНрд░рд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд╣реА рдкреИрд▓реВрдВрд╡рд░ рдмрд╛рд░рдХрд╛рдИрдиреЗ рдирдЬрд░ рдЯрд╛рдХреВрдпрд╛.

рдкрджрд╛рдиреБрдХреНрд░рдо рдЗ

etcd рдордзреНрдпреЗ рд╢реНрд░реЗрдгреАрдмрджреНрдз рджреГрд╢реНрдп рд░рд╛рдЦрдгреЗ рд╣реЗ рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рдХрд╛рд░реНрдпрд╛рдВрдкреИрдХреА рдПрдХ рдард░рд▓реЗ. рд╢реНрд░реЗрдгреА рдХреНрд╡реЗрд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрдкрд╕рд░реНрдЧрд╛рд╕рд╣ рдХреАрдЪреА рд╕реВрдЪреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рд╕реЛрдкреЗ рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдпрд╛рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрдгрд╛рд░реА рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ "/foo", рддреБрдореНрд╣реА рд╢реНрд░реЗрдгреА рд╡рд┐рдЪрд╛рд░рдд рдЖрд╣рд╛рдд ["/foo", "/fop"). рдкрд░рдВрддреБ рд╣реЗ рдХреАрдЪреЗ рд╕рдВрдкреВрд░реНрдг рдЙрдкрд╡реГрдХреНрд╖ рдкрд░рдд рдХрд░реЗрд▓, рдЬреЗ рдЙрдкрд╡реГрдХреНрд╖ рдореЛрдареЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдЖрдореНрд╣реА рдореБрдЦреНрдп рднрд╛рд╖рд╛рдВрддрд░ рдпрдВрддреНрд░рдгрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрд▓реА, zetcd рдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ. рдпрд╛рдд рдХреАрдЪреНрдпрд╛ рд╕реБрд░реВрд╡рд╛рддреАрд╕ рдПрдХ рдмрд╛рдЗрдЯ рдЬреЛрдбрдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдЭрд╛рдбрд╛рдЪреНрдпрд╛ рдиреЛрдбрдЪреНрдпрд╛ рдЦреЛрд▓реАрдЗрддрдХреЗ. рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЛ.

"/foo" -> "u01/foo"
"/foo/bar" -> "u02/foo/bar"

рдордЧ рд╕рд░реНрд╡ рддрд╛рддреНрдХрд╛рд│ рдореБрд▓рд╛рдВрдирд╛ рдЪрд╛рд╡реА рдорд┐рд│рд╡рд╛ "/foo" рд╢реНрд░реЗрдгреАрдЪреА рд╡рд┐рдирдВрддреА рдХрд░реВрди рд╢рдХреНрдп рдЖрд╣реЗ ["u02/foo/", "u02/foo0"). рд╣реЛрдп, ASCII рдордзреНрдпреЗ "0" рдирдВрддрд░ рдЙрднреА рдЖрд╣реЗ "/".

рдкрд░рдВрддреБ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рд╢рд┐рд░реЛрдмрд┐рдВрджреВ рдХрд╛рдврдгреНрдпрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд╢реА рдХрд░рд╛рд╡реА? рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рдХрд╛рд░рд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рд╢реНрд░реЗрдгреА рд╣рдЯрд╡рд┐рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ ["uXX/foo/", "uXX/foo0") XX рд╕рд╛рдареА 01 рддреЗ FF рдкрд░реНрдпрдВрдд. рдЖрдгрд┐ рдордЧ рдЖрдореНрд╣реА рдЖрдд рд╢рд┐рд░рд▓реЛ рдСрдкрд░реЗрд╢рди рдХреНрд░рдорд╛рдВрдХ рдорд░реНрдпрд╛рджрд╛ рдПрдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд.

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

"/very" -> "/u00very"
"/very/long" -> "/very/u00long"
"/very/long/path" -> "/very/long/u00path"

рдордЧ рдХреА рд╣рдЯрд╡рдд рдЖрд╣реЗ "/very" рд╣рдЯрд╡рд┐рдгреНрдпрд╛рдордзреНрдпреЗ рдмрджрд▓рддреЗ "/u00very" рдЖрдгрд┐ рд╢реНрд░реЗрдгреА ["/very/", "/very0"), рдЖрдгрд┐ рд╕рд░реНрд╡ рдореБрд▓реЗ рдорд┐рд│рд╡рдгреЗ - рд╢реНрд░реЗрдгреАрддреАрд▓ рдЪрд╛рд╡реНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдирдВрддреАрдиреБрд╕рд╛рд░ ["/very/u00", "/very/u01").

ZooKeeper рдордзреАрд▓ рдХреА рдХрд╛рдврдд рдЖрд╣реЗ

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

рдпрд╛ рдкрджреНрдзрддреАрдореБрд│реЗ рдХреА рд╣рдЯрд╡рдгреЗ рдЕрддреНрдпрдВрдд рдХреБрдЪрдХрд╛рдореА рдард░рддреЗ, рдЬрд░ рддреНрдпрд╛рд▓рд╛ рдореБрд▓реЗ рдЕрд╕рддреАрд▓, рдЖрдгрд┐ рддреНрдпрд╛рд╣реВрдирд╣реА рдЕрдзрд┐рдХ рдореНрд╣рдгрдЬреЗ рдЬрд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдиреЗ рд╕рдмрдЯреНрд░реАрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ, рдХреА рд╣рдЯрд╡рдгреЗ рдЖрдгрд┐ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рд▓реЗ рддрд░. рддрдерд╛рдкрд┐, рдпрд╛рдореБрд│реЗ рдЖрдореНрд╣рд╛рд▓рд╛ etcd рдЖрдгрд┐ Consul рдордзреАрд▓ рдЗрддрд░ рдкрджреНрдзрддреАрдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рдЧреБрдВрддрд╛рдЧреБрдВрдд рдЯрд╛рд│рддрд╛ рдЖрд▓реА.

ZooKeeper рдордзреНрдпреЗ рд╕реЗрдЯ рдХрд░рд╛

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

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

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

рдЕрдзрд┐рдХ рддрд╛рдВрддреНрд░рд┐рдХ рддрдкрд╢реАрд▓

рдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд рдЖрдореНрд╣реА рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реАрдВрдордзреВрди рдмреНрд░реЗрдХ рдШреЗрдК рдЖрдгрд┐ рдХреЛрдбрд┐рдВрдЧрдмрджреНрджрд▓ рдмреЛрд▓реВ.
рдЧреНрд░рд╛рд╣рдХрд╛рдВрдЪреНрдпрд╛ рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдВрдкреИрдХреА рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рд╣реЛрддреА: рдХрд┐рдорд╛рди рдПрдХ рд╕реЗрд╡рд╛ Linux, MacOS рдЖрдгрд┐ Windows рд╡рд░ рд╕рдорд░реНрдерд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдЖрдореНрд╣реА рдлрдХреНрдд рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЖрдгрд┐ рдирдВрддрд░ рдЗрддрд░ рдкреНрд░рдгрд╛рд▓реАрдВрд╡рд░ рдЪрд╛рдЪрдгреА рд╕реБрд░реВ рдХреЗрд▓реА. рдпрд╛рдореБрд│реЗ рдмрд▒реНрдпрд╛рдЪ рд╕рдорд╕реНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдЭрд╛рд▓реНрдпрд╛, рдЬреНрдпрд╛ рдХрд╛рд╣реА рдХрд╛рд│рд╛рд╕рд╛рдареА рдкреВрд░реНрдгрдкрдгреЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрддреНрдпрд╛ рдХреА рдХрд╕реЗ рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзрд╛рд╡реЗ. рдкрд░рд┐рдгрд╛рдореА, рддреАрдирд╣реА рд╕рдордиреНрд╡рдп рд╕реЗрд╡рд╛ рдЖрддрд╛ Linux рдЖрдгрд┐ MacOS рд╡рд░ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд, рддрд░ Windows рд╡рд░ рдлрдХреНрдд Consul KV рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд.

рдЕрдЧрджреА рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди, рдЖрдореНрд╣реА рд╕реЗрд╡рд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛. ZooKeeper рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдирд┐рд╡рдб рд╡рд░ рдкрдбрд▓реА рдЭреВрдХреАрдкрд░ C++, рдЬреЗ рд╢реЗрд╡рдЯреА Windows рд╡рд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реЗ. рддрдерд╛рдкрд┐, рд╣реЗ рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдирд╛рд╣реА: рд▓рд╛рдпрдмреНрд░рд░реА рдХреЗрд╡рд│ рд▓рд┐рдирдХреНрд╕ рдореНрд╣рдгреВрди рд╕реНрдерд┐рдд рдЖрд╣реЗ. рдХреЙрдиреНрд╕реБрд▓рд╕рд╛рдареА рдПрдХрдЪ рдкрд░реНрдпрд╛рдп рд╣реЛрддрд╛ ppconsul. рддреНрдпрд╛рдд рдЖрдзрд╛рд░ рдЬреЛрдбрд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛ рд╕рддреНрд░реЗ ╨╕ рд╡реНрдпрд╡рд╣рд╛рд░. etcd рд╕рд╛рдареА, рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреАрд╕ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░реА рдкреВрд░реНрдг рд╡рд╛рдв рдЭрд╛рд▓реЗрд▓реА рд▓рд╛рдпрдмреНрд░рд░реА рдЖрдврд│рд▓реА рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдлрдХреНрдд рд╡реНрдпреБрддреНрдкрдиреНрди grpc рдХреНрд▓рд╛рдпрдВрдЯ.

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

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

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

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

рд╕реНрд╡рддрдГрд╕рд╛рдареА рдкрд╣рд╛: liboffkv.

рдЖрдордЪрд╛ рд╕рдВрдШ: рд░рд╛рдпрдб рд░реЛрдорд╛рдиреЛрд╡реНрд╣, рдЗрд╡реНрд╣рд╛рди рдЧреНрд▓реБрд╢реЗрдиреНрдХреЛрд╡реНрд╣, рджрд┐рдорд┐рддреНрд░реА рдХрдорд▓рджрд┐рдиреЛрд╡реНрд╣, рд╡реНрд╣рд┐рдХреНрдЯрд░ рдХреНрд░реЕрдкрд┐рд╡реНрд╣реЗрдиреНрд╕реНрдХреА, рд╡рд┐рдЯрд╛рд▓реА рдЗрд╡реНрд╣рд╛рдирд┐рди.

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

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