рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдпрд╛
рдЗрдВрдЯрд░реЗрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо (рдЗрд╕рдХреЗ рдмрд╛рдж рдПрд╕рд╡реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рддрд░рд┐рдд, рджреЛрд╖-рд╕рд╣рд┐рд╖реНрдгреБ рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИред рдПрд╕рд╡реА рдХреЛ рдЙрдЪреНрдЪ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдЪреНрдЪ-рд▓реЛрдб рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛ (1 рд╕реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ) рдФрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЙрддреНрдкрд╛рджрд┐рдд рдЙрддреНрдкрд╛рдж рджреЛрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрд╕рд╡реА рд╡рд┐рддрд░рд┐рдд рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рд░реВрдкрдг
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдордиреЗ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛, рдореИрдВ рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ 1рд╕реА рдореЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЬреЛ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ :) рд╣рдо 1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг, рд╕рд╛рде рд╣реА рдПрдХ рд░рдирдЯрд╛рдЗрдо рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рддрд┐рдорд╛рди
1рд╕реА:рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдкрд░ рдмрдирд╛рдП рдЧрдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреАрди рд╕реНрддрд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрдб рдХрд╣рд╛рдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - &AtClient / &AtServer рдирд┐рд░реНрджреЗрд╢реЛрдВ (рднрд╛рд╖рд╛ рдХреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ &AtClient / &AtServer) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред 1C рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдм рдореБрдЭреЗ рдпрд╣ рдХрд╣рдХрд░ рд╕рд╣реА рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдирд┐рд░реНрджреЗрд╢ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИрдВ
рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛрдб рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рдПрдХ рдореВрд▓рднреВрдд рд╕реАрдорд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛрдб рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ, рдЪрд╛рд╣реЗ рдЗрд╕реЗ рдХрд╣реАрдВ рднреА рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП - рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдпрд╛ рд╕рд░реНрд╡рд░ рд╕реЗред рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдХреЛрдб рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рдХреЛрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рдирд╣реАрдВ рд╣реИред рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдкрд╛рд╕ рдЕрдм рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдХреЛрдб рдЬреЛ рдПрдХ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ: рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдирд╣реАрдВ
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреБрдЫ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА" рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдкреАрдврд╝реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдХреЛрдИ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдордп-рд╕рдордп рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдкреЛрд▓ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЙрд▓реЛрдВ рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред
рдФрд░ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХреЛрдИ рдЯреЗрд▓реАрдлреЛрди рдХреЙрд▓ рдЖрддреА рд╣реИ
рдЙрддреНрдкрд╛рджрди рд╣реА
рдПрдХ рд╕рдВрджреЗрд╢ рддрдВрддреНрд░ рдмрдирд╛рдПрдБ. рддреЗрдЬрд╝, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рд╕рд╛рде, рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред рддрдВрддреНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, 1рд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдореИрд╕реЗрдВрдЬрд░ (рд╕рдВрджреЗрд╢, рд╡реАрдбрд┐рдпреЛ рдХреЙрд▓) рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВред
рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВред рдмрдврд╝рддреЗ рд▓реЛрдб рдХреЛ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдХрд░ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╣рдордиреЗ рдПрд╕рд╡реА рдХреЗ рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреЛ рд╕реАрдзреЗ 1рд╕реА:рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдВ рдПрдХреАрдХреГрдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ 1рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЙрд▓реНрдпреВрд╢рдВрд╕ рдХреЗ рдХреЛрдб рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдореБрдЦреНрдп рдпрд╣ рдерд╛ рдХрд┐ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди 1C рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╛рдкрд╛рд░ рдкреНрд░рдмрдВрдзрди рдФрд░ рд▓реЗрдЦрд╛рдВрдХрди рдХреЗ рдмреАрдЪ) рдХреЗ рдмреАрдЪ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд╡рд┐рднрд┐рдиреНрди 1C рдПрдкреНрд▓рд┐рдХреЗрд╢рди 1C:рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, 1рд╕реА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ "рдХрд┐рдирд╛рд░реЗ" рд╕реНрдерд┐рдд рдПрдХ рдЕрд▓рдЧ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдПрд╕рд╡реА рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрд╕рд╡реА рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЫреЛрдЯреА рдХрдВрдкрдирд┐рдпрд╛рдБ рд╕реАрдмреА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЙрдб (wss://1cdialog.com) рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдЬреБрдбрд╝реА рдУрд╡рд░рд╣реЗрдб рд▓рд╛рдЧрдд рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред рдмрдбрд╝реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрдкрдиреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реАрдмреА рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд╣рдордиреЗ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЙрдб SaaS рдЙрддреНрдкрд╛рдж рдореЗрдВ рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рд▓реЛрдб рдФрд░ рджреЛрд╖ рд╕рд╣рдирд╢реАрд▓рддрд╛ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрдИ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдирд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рдирдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕рдВрджреЗрд╢ рдХреЛ рдиреЛрдб рд╕реЗ рдиреЛрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд/рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд░реАрдпрд▓-рдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред
рд╡рд┐рддрд░рд┐рдд рдХреИрд╢
рд╣рдордиреЗ рд░реЗрдбрд┐рд╕, рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдФрд░ рдПрд╣рдЪреЗрдЪреЗ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд┐рдпрд╛ред рдпрд╣ 2015 рд╣реИ. рд░реЗрдбрд┐рд╕ рдиреЗ рдЕрднреА рдПрдХ рдирдпрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ (рдмрд╣реБрдд рдирдпрд╛, рдбрд░рд╛рд╡рдирд╛), рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╕реЗрдВрдЯрд┐рдирд▓ рд╣реИред Ehcache рдХреЛ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреИрд╕реЗ рдЕрд╕реЗрдВрдмрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП (рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрд╛рдж рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрдИ)ред рд╣рдордиреЗ рдЗрд╕реЗ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ 3.4 рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХрд▓ рдиреЛрдб рдореЛрдб рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреИрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдХреИрд╕реЗ рдбрдВрдк рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрджрд┐ рдЖрдк рдПрдХрдорд╛рддреНрд░ рдиреЛрдб рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдбреЗрдЯрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдХрдИ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмреАрдЪ рд╣рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрддреЗ рд╣реИрдВред рд╣рдо рдХреИрд╢ рдХрд╛ рдмреИрдХрдЕрдк рдирд╣реАрдВ рд▓реЗрддреЗ - рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рд╣реИ:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░реЛрдВ рдХрд╛ рднрдВрдбрд╛рд░рдг. рд╣рд░ рдмрд╛рд░ рдПрдХ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЬрд╛рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рднреА рд╕рддреНрд░реЛрдВ рдХреЛ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред
- рдХреИрд╢. рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреИрд╢реЗ рдЬрд╛рдВрдЪреЗрдВред рдПрдХ рдирдпрд╛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрд╛ - рдЗрд╕реЗ рдХреИрд╢ рдореЗрдВ рдбрд╛рд▓реЗрдВред
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдпред рдиреЛрдб рдПрдХ рдИрд╡реЗрдВрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рд╡рд┐рд╖рдп рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЛрдбреНрд╕ рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
- рдХреНрд▓рд╕реНрдЯрд░ рддрд╛рд▓реЗ. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА (1C рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рднреАрддрд░ рд╕рд┐рдВрдЧрд▓рдЯрди рдЪрд░реНрдЪрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЪрд░реНрдЪрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ:
conversationKeyChecker.check("╨С╨Х╨Э╨Ч╨Ю╨Ъ╨Ю╨Ы╨Ю╨Э╨Ъ╨Р");
doInClusterLock("╨С╨Х╨Э╨Ч╨Ю╨Ъ╨Ю╨Ы╨Ю╨Э╨Ъ╨Р", () -> {
conversationKeyChecker.check("╨С╨Х╨Э╨Ч╨Ю╨Ъ╨Ю╨Ы╨Ю╨Э╨Ъ╨Р");
createChannel("╨С╨Х╨Э╨Ч╨Ю╨Ъ╨Ю╨Ы╨Ю╨Э╨Ъ╨Р");
});
рд╣рдордиреЗ рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рдХреЛрдИ рдЪреИрдирд▓ рддреЛ рдирд╣реАрдВ рд╣реИ. рд╣рдордиреЗ рддрд╛рд▓рд╛ рд▓рд┐рдпрд╛, рдЙрд╕реЗ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдФрд░ рдмрдирд╛рдпрд╛ред рдпрджрд┐ рдЖрдк рд▓реЙрдХ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж рд▓реЙрдХ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрд╕ рд╕рдордп рдХреЛрдИ рдЕрдиреНрдп рдереНрд░реЗрдб рднреА рдЪреЗрдХ рдХрд░ рд▓реЗрдЧрд╛ рдФрд░ рдЕрдм рд╡рд╣реА рдЪрд░реНрдЪрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ - рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рдЖрдк рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рдпрд╛ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛ рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ - рдпрд╣ рдзреАрдорд╛ рд╣реИ, рдФрд░ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ; рд╣реЗрдЬрд╝реЗрд▓рдХрд╛рд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ - рдпрд╣реА рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред
DBMS рдЪреБрдирдирд╛
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ PostgreSQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕ DBMS рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдФрд░ рд╕рдлрд▓ рдЕрдиреБрднрд╡ рд╣реИред
PostgreSQL рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ - рд╡рд╣рд╛рдБ рд╣реИ
рдпрджрд┐ рдЖрдкрдХреЛ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ
рд╣рдорд╛рд░реЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдереАред рд╕рд░реНрд╡рд░ рдП рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрджреЗрд╢ рд╣реИрдВ - рдХреГрдкрдпрд╛, рдЖрдЗрдП рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕рд░реНрд╡рд░ рдмреА рдкрд░ рд▓реЗ рдЬрд╛рдПрдВред рдпрд╣ рдирд┐рд░реНрдгрдп рдмрд╕ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рд▓реНрд▓рд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЦреБрдж рдХреЛ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рддрдХ рд╕реАрдорд┐рдд рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ
рдПрд╕рд╡реА рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВред рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдИрдЖрд░рдкреА рдпрд╛ рдЕрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдЬреИрд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рдкрдирд╛ рд╣реИред рдЧреНрд░рд╛рд╣рдХ рдПрдХ рд╕рдВрдЧрдарди рдпрд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдУрд░ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрд╕рд╡реА рд╕рд░реНрд╡рд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрдВрдЬреАрдХреГрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЧреНрд░рд╛рд╣рдХ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдмрди рдЧрдпрд╛ред рдХрдИ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рдВрджреЗрд╢ рдПрдХ рднреМрддрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ; рдпрджрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕реЗ рдПрдХ рдЕрд▓рдЧ рднреМрддрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ (рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░) рдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореБрдЦреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬрд╣рд╛рдВ рд╕рднреА рдЧреНрд░рд╛рд╣рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред
рдореБрдЦреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрд╛рдзрд╛ рдмрдирдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ (рдФрд░ рдЕрдиреНрдп рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛) рдХреЛ рдХреИрд╢ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
рдпрджрд┐ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдзреАрдорд╛ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЕрдВрджрд░ рдХреЗ рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдореЗрдВ рдХрд╛рдЯ рджреЗрдВрдЧреЗред рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
рдЪреВрдБрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЦреЛрдирд╛ рдмреБрд░рд╛ рд╣реИ, рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдЖрдкрдХреЛ рдореБрдЦреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЦреЛ рдЬрд╛рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдкрдирд╛ рдмреАрдорд╛ рдХрд░рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдВрджреЗрд╢ рд╣рд╛рдирд┐ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрдЧреА рдЬрдм рдкреНрд░рд╛рдердорд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЙрд╕рдХреА рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдПрдХ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдБред
рдпрджрд┐ рдПрдХ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдЦреЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрди рдЬрд╛рддреА рд╣реИред
рдпрджрд┐ рдореБрдЦреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐ рдореБрдЦреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдмрди рдЬрд╛рддреА рд╣реИ, рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐ рдмрди рдЬрд╛рддреА рд╣реИред
рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ
рдЪреВрдВрдХрд┐, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрд╕рд╡реА рдПрдХ рд╕рдВрджреЗрд╢рд╡рд╛рд╣рдХ рднреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рд╕рдЯреАрдХ рдорд┐рд▓рд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдХреГрддрд┐ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдПрдХ рддреЗрдЬрд╝, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд▓рдЪреАрд▓реА рдЦреЛрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдордиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рд╣рдо рдкрд╣рд┐рдП рдХрд╛ рджреЛрдмрд╛рд░рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рди рдХрд░реЗрдВ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдП рдЧрдП рдирд┐рдГрд╢реБрд▓реНрдХ рдЦреЛрдЬ рдЗрдВрдЬрди рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЬреАрдердм рдкрд░ рд╣рдордиреЗ рдкрд╛рдпрд╛
рдФрд░ "рдкрд╛рда" рд╢рдмреНрдж рдХрд╛ рдореВрд▓ рднреА рд╕рдВрд░рдХреНрд╖рд┐рдд рд░рд╣реЗрдЧрд╛ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рд╢рдмреНрдж рдХреЗ рдЖрд░рдВрдн, рдордзреНрдп рдФрд░ рдЕрдВрдд рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рддрд╕реНрд╡реАрд░
рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдЪрд┐рддреНрд░ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде:
- рдмреИрд▓реЗрдВрд╕рд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЙрдЬрд╛рдЧрд░; рд╣рдорд╛рд░реЗ рдкрд╛рд╕ nginx рд╣реИ, рдпрд╣ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
- рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
Netty . - рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд╛рд╡рд╛ 8 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдмрдВрдбрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рдУрдПрд╕рдЬреАрдЖрдИ . рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЬрд╛рд╡рд╛ 10 рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╡рд┐рдХрд╛рд╕ рдПрд╡рдВ рдкрд░реАрдХреНрд╖рдг
рдПрд╕рд╡реА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ред
рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдФрд░ рдореЗрдореЛрд░реА рд▓реАрдХ
рдкреНрд░рддреНрдпреЗрдХ рдПрд╕рд╡реА рд░рд┐рд▓реАрдЬ рдХреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рддрдм рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдЬрдм:
- рдкрд░реАрдХреНрд╖рдг рдХрдИ рджрд┐рдиреЛрдВ рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣рд╛ рдФрд░ рдХреЛрдИ рд╕реЗрд╡рд╛ рд╡рд┐рдлрд▓рддрд╛ рдирд╣реАрдВ рд╣реБрдИ
- рдкреНрд░рдореБрдЦ рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдПрдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдерд╛
- рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ 10% рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ
рд╣рдо рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдбреЗрдЯрд╛ рд╕реЗ рднрд░рддреЗ рд╣реИрдВ - рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдмрд╕реЗ рд╕рдХреНрд░рд┐рдп рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 5 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ (рд╕рдВрджреЗрд╢реЛрдВ, рдЪрд░реНрдЪрд╛рдУрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдФрд░ рдЗрд╕ рддрд░рд╣ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рддреАрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ:
- рддрдирд╛рд╡ рдХреА рдЬрд╛рдВрдЪ
- рдХреЗрд╡рд▓ рдХрдиреЗрдХреНрд╢рди
- рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдкрдВрдЬреАрдХрд░рдг
рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдХрдИ рд╕реМ рдереНрд░реЗрдб рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрд┐рдирд╛ рд░реБрдХреЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ: рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдирд╛, рдЪрд░реНрдЪрд╛рдПрдБ рдмрдирд╛рдирд╛, рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдЕрдкрдард┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдХрд┐рд╕реА рдХреЛ рд▓рд┐рдЦреЗрдВ) рдФрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рди (рдПрдХ рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкреИрдХреЗрдЬ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдВ, рдЕрд▓рд░реНрдЯ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ)ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рднрд╛рдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ
- рдЖрдкрдХреА рдЕрдкрдард┐рдд рдЪрд░реНрдЪрд╛рдУрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдБ
- рд╕рдВрджреЗрд╢ рдкрдврд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ 50% рд╣реИ
- рдкрд╛рда рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ 50% рд╣реИ
- рдЕрдЧрд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛:
- рдирдИ рдЪрд░реНрдЪрд╛ рдкреИрджрд╛ рд╣реЛрдиреЗ рдХреА 20% рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ
- рдЕрдкрдиреА рдХрд┐рд╕реА рднреА рдЪрд░реНрдЪрд╛ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирддрд╛ рд╣реИ
- рдЕрдВрджрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдЕрдиреБрд░реЛрдз рд╕рдВрджреЗрд╢, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓
- рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдкрд╛рдВрдЪ рд╕рдВрджреЗрд╢ рдмрдирд╛рддрд╛ рд╣реИ
- рдЪрд░реНрдЪрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ
- 20 рдмрд╛рд░ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ
- рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рддрд╛ рд╣реИ
- рдПрдХ рдЪреИрдЯрдмреЙрдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╕реЗ рдореИрд╕реЗрдЬрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ)
- рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЪреИрдирд▓ рдмрдирд╛рдиреЗ рдХреА 50% рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рдЪрд░реНрдЪрд╛)
- рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдЪреИрдирд▓ рдкрд░ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдиреЗ рдХреА 50% рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ
"рдХреЗрд╡рд▓ рдХрдиреЗрдХреНрд╢рди" рдкрд░рд┐рджреГрд╢реНрдп рдПрдХ рдХрд╛рд░рдг рд╕реЗ рд╕рд╛рдордиреЗ рдЖрдпрд╛ред рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реБрдмрд╣ 09:00 рдмрдЬреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЪреБрдк рд░рд╣рддрд╛ рд╣реИред рдпреЗ рд▓реЛрдЧ рдЦрддрд░рдирд╛рдХ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реИрдВ - рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рдкреИрдХреЗрдЬ рдкрд┐рдВрдЧ/рдкреЛрдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ (рд╡реЗ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ - рдпрджрд┐ рдХреЛрдИ рдирдпрд╛ рд╕рдВрджреЗрд╢ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛)ред рдкрд░реАрдХреНрд╖рдг рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рдареАрдХ рдЗрд╕реА рдкрд╣рд▓реЗ рдЗрдирдкреБрдЯ рдкрд░ рд╣реИ - рддрд╛рдХрд┐ рдХреЛрдИ рд╡рд┐рдлрд▓рддрд╛ рди рд╣реЛ (рдПрдХ рд╡реНрдпрдХреНрддрд┐ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░ рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ)ред
рдЧреНрд░рд╛рд╣рдХ рдкрдВрдЬреАрдХрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рд╣рдордиреЗ рдПрдХ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЖрд╢реНрд╡рд╕реНрдд рдереЗ рдХрд┐ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЗ рджреМрд░рд╛рди рд╕рд┐рд╕реНрдЯрдо рдзреАрдорд╛ рдирд╣реАрдВ рд╣реБрдЖред рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдП рдФрд░ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд▓рдЧрд╛ред рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╕рдордп рд╣рдордиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рд╣рдо рд▓реЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
рдпрд╣реАрдВ рд╕реЗ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдЧрдВрднреАрд░ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рдмрд╛рдж, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ JMeter рдиреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдкреНрд▓рдЧрдЗрди рдПрдХ рдЕрд▓рдЧ рдмрдбрд╝реА рдХрд╣рд╛рдиреА рд╣реИ; 176 рд╕рд┐рддрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде, рдЬреАрдердм рдкрд░ рдЗрд╕рдХреЗ 132 рдлреЛрд░реНрдХ рд╣реИрдВред рд▓реЗрдЦрдХ рдиреЗ рд╕реНрд╡рдпрдВ 2015 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ (рд╣рдордиреЗ рдЗрд╕реЗ 2015 рдореЗрдВ рд▓рд┐рдпрд╛ рдерд╛, рддрдм рдЗрд╕рдиреЗ рд╕рдВрджреЗрд╣ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛), рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрдИ рдЬреАрдердм рдореБрджреНрджреЗ, 7 рдЕрдЬреНрдЮрд╛рдд рдкреБрд▓ рдЕрдиреБрд░реЛрдзред
рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░реНрдЪрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
- рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдПрдХ рдирд┐рдпрдорд┐рдд рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рдерд╛
рдПрдирдкреАрдИ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ. рдЗрд╕реЗ рдпрд╛ рддреЛ ConcurrentLinkedDeque рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдХреЗ рдпрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рдмреНрд▓реЙрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдордиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/43 ). - рдореЗрдореЛрд░реА рд▓реАрдХ; рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, рдХрдиреЗрдХреНрд╢рди рдЬрд╛рдирдХрд╛рд░реА рд╣рдЯрд╛рдИ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИ (
https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/44 ). - рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдореЛрдб рдореЗрдВ (рдЬрдм рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдирдореВрдиреЗ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреИрдЯрд░реНрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (
https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/19 ).
рдпрд╣ рдЬреАрдердм рдкрд░ рдореМрдЬреВрдж рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдерд╛:
- рд▓реЗ рд▓рд┐рдпрд╛ рд╣реИ
рдХрд╛рдВрдЯрд╛ рдПрд▓реАрд░рди рдХреЛрдЧрди (@elyrank) - рдпрд╣ рд╕рдорд╕реНрдпрд╛ 1 рдФрд░ 3 рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ - рд╣рд▓ рд╣реБрдИ рд╕рдорд╕реНрдпрд╛ 2
- рдЬреЗрдЯреА рдХреЛ 9.2.14 рд╕реЗ 9.3.12 рддрдХ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛
- ThreadLocal рдореЗрдВ SimpleDateFormat рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛; SimpleDateFormat рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд░рдирдЯрд╛рдЗрдо рдкрд░ NPE рд╣реЛ рдЧрдпрд╛
- рдПрдХ рдФрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рдерд╛)
рдФрд░ рдлрд┐рд░ рднреА рдпрд╣ рдмрд╣рддреА рд╣реИ!
рдПрдХ рджрд┐рди рдореЗрдВ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рджреЛ рджрд┐рди рдореЗрдВ рдпрд╛рджрджрд╛рд╢реНрдд рдЦрд╝рддреНрдо рд╣реЛрдиреЗ рд▓рдЧреАред рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдордп рдирд╣реАрдВ рдмрдЪрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдХрдо рдереНрд░реЗрдб рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЪрд╛рд░ рдПрдЬреЗрдВрдЯреЛрдВ рдкрд░ред рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
рджреЛ рджрд┐рди рдмреАрдд рдЧрдП...
рдЕрдм рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреА рд╕реНрдореГрддрд┐ рдЦрд╝рддреНрдо рд╣реЛ рд░рд╣реА рд╣реИ. рд▓реЙрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдиреЗ рдореЗрдореЛрд░реА рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдХреНрд▓рд╕реНрдЯрд░ рдЯреВрдЯ рдЧрдпрд╛, рдФрд░ рдиреЛрдбреНрд╕ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдорд░рддреЗ рд░рд╣реЗред рд╣рдордиреЗ JVisualVM рдХреЛ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдФрд░ рдПрдХ "рд░рд╛рдЗрдЬрд┐рдВрдЧ рд╕реЙ" рджреЗрдЦрд╛ - рдпрд╣ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ GC рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдлрд╝ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣реЗрдЬрд╝реЗрд▓рдХрд╛рд╕реНрдЯ 3.4 рдореЗрдВ, рдорд╛рдирдЪрд┐рддреНрд░ / рдорд▓реНрдЯреАрдореИрдк (map.destroy()) рдХреЛ рд╣рдЯрд╛рддреЗ рд╕рдордп, рдореЗрдореЛрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдХреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ:
рдмрдЧ рдХреЛ рдЕрдм 3.5 рдореЗрдВ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрдм рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереАред рд╣рдордиреЗ рдЧрддрд┐рд╢реАрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдирдП рдорд▓реНрдЯреАрдореИрдкреНрд╕ рдмрдирд╛рдП рдФрд░ рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:
public void join(Authentication auth, String sub) {
MultiMap<UUID, Authentication> sessions = instance.getMultiMap(sub);
sessions.put(auth.getUserId(), auth);
}
public void leave(Authentication auth, String sub) {
MultiMap<UUID, Authentication> sessions = instance.getMultiMap(sub);
sessions.remove(auth.getUserId(), auth);
if (sessions.size() == 0) {
sessions.destroy();
}
}
рдкреБрдХрд╛рд░рдирд╛:
service.join(auth1, "╨Э╨Ю╨Т╨л╨Х_╨б╨Ю╨Ю╨С╨й╨Х╨Э╨Ш╨п_╨Т_╨Ю╨С╨б╨г╨Ц╨Ф╨Х╨Э╨Ш╨Ш_UUID1");
service.join(auth2, "╨Э╨Ю╨Т╨л╨Х_╨б╨Ю╨Ю╨С╨й╨Х╨Э╨Ш╨п_╨Т_╨Ю╨С╨б╨г╨Ц╨Ф╨Х╨Э╨Ш╨Ш_UUID1");
рдорд▓реНрдЯреАрдореИрдк рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЬрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА рддреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рдореИрдк рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ , рдХреБрдВрдЬреА рд╕рджрд╕реНрдпрддрд╛ рдХрд╛ рдирд╛рдо рд╣реЛрдЧреА, рдФрд░ рдорд╛рди рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдВрдЧреЗ (рдЬрд┐рд╕рд╕реЗ рдЖрдк рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
public void join(Authentication auth, String sub) {
addValueToMap(sub, auth.getSessionId());
}
public void leave(Authentication auth, String sub) {
removeValueFromMap(sub, auth.getSessionId());
}
рдЪрд╛рд░реНрдЯ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ.
рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдФрд░ рдХреНрдпрд╛ рд╕реАрдЦрд╛ рд╣реИ?
- JSR223 рдХреЛ рдЧреНрд░реВрд╡реА рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдФрд░ рд╕рдВрдХрд▓рди рдХреИрд╢ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИред
рд▓рд┐рдВрдХ . - рдЬреЗрдореАрдЯрд░-рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдорд╛рдирдХ рдЧреНрд░рд╛рдлрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИред
рд▓рд┐рдВрдХ .
рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЙрддреНрдкрд╛рдж рдерд╛, рд╣рдордиреЗ рд╕рдВрд╕реНрдХрд░рдг 3.4.1 рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЕрдм рд╣рдорд╛рд░рд╛ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг 3.9.2 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ (рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 3.10 рд╣реИ)ред
рдЖрдИрдбреА рдЬрдирд░реЗрд╢рди
рд╣рдордиреЗ рдкреВрд░реНрдгрд╛рдВрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреАред рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд▓реЙрдиреНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рддрд╛рд▓рд┐рдХрд╛рдПрдБ рд╢рд╛рд░реНрдбрд┐рдВрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ DB1 рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ ID=1 рд╣реИ рдФрд░ DB1 рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ ID=2 рд╣реИ, рдЖрдк рдЗрд╕ ID рдХреЛ Elasticsearch рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ, рди рд╣реА рд╣реЗрдЬрд╝реЗрд▓рдХрд╛рд╕реНрдЯ рдореЗрдВ , рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдмреБрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рджреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдХрд┐ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ)ред рдЖрдк рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдореЗрдВ рдХрдИ рдПрдЯреЙрдорд┐рдХрд▓реЙрдиреНрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рд╡рд╣рд╛рдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдПрдХ рдирдИ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕рдордп рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдзрд┐рдХ рдЗрд╖реНрдЯрддрдо рд╣реИ - FlakeIdGeneratorред рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдкрд░, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЖрдИрдбреА рд░реЗрдВрдЬ рджреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓рд╛ - 1 рд╕реЗ 10 рддрдХ, рджреВрд╕рд░рд╛ - 000 рд╕реЗ 10 рддрдХ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЕрдм рдЧреНрд░рд╛рд╣рдХ рдЕрдкрдиреЗ рдЖрдк рдирдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬрд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрд╕реЗ рдЬрд╛рд░реА рдХреА рдЧрдИ рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рди рд╣реЛ рдЬрд╛рдПред рдпрд╣ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдФрд░ рд╣реЗрдЬрд╝реЗрд▓рдХрд╛рд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ) рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдпрд╛ рдЕрдиреБрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рд╕реНрдХрд┐рдк рдЖрджрд┐ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдИрдбреА рдкреВрд░реНрдгрд╛рдВрдХ рдХреНрдпреЛрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрддрдиреА рдЕрд╕рдВрдЧрдд рд╣реИрдВред рд╣рдордиреЗ рд╕рдм рдХреБрдЫ рддреМрд▓рд╛ рдФрд░ рдпреВрдпреВрдЖрдИрдбреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред
рд╡реИрд╕реЗ, рдЬреЛ рд▓реЛрдЧ рдЯреНрд╡рд┐рдЯрд░ рдЬреИрд╕рд╛ рдмрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдРрд╕реА рд╕реНрдиреЛрдХрд╛рд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ - рдпрд╣ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдиреЛрдлреНрд▓реЗрдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рд▓реЗрдХрд┐рди рд╣рдо рдЕрдм рддрдХ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВред
рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓рдореИрдк.рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
рдПрдХ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп: TransactionalMap.replace рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрд╣рд╛рдБ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ:
@Test
public void replaceInMap_putsAndGetsInsideTransaction() {
hazelcastInstance.executeTransaction(context -> {
HazelcastTransactionContextHolder.setContext(context);
try {
context.getMap("map").put("key", "oldValue");
context.getMap("map").replace("key", "oldValue", "newValue");
String value = (String) context.getMap("map").get("key");
assertEquals("newValue", value);
return null;
} finally {
HazelcastTransactionContextHolder.clearContext();
}
});
}
Expected : newValue
Actual : oldValue
рдореБрдЭреЗ getForUpdate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛:
protected <K,V> boolean replaceInMap(String mapName, K key, V oldValue, V newValue) {
TransactionalTaskContext context = HazelcastTransactionContextHolder.getContext();
if (context != null) {
log.trace("[CACHE] Replacing value in a transactional map");
TransactionalMap<K, V> map = context.getMap(mapName);
V value = map.getForUpdate(key);
if (oldValue.equals(value)) {
map.put(key, newValue);
return true;
}
return false;
}
log.trace("[CACHE] Replacing value in a not transactional map");
IMap<K, V> map = hazelcastInstance.getMap(mapName);
return map.replace(key, oldValue, newValue);
}
рди рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ, рдмрд▓реНрдХрд┐ рдЙрдирдХреЗ рд▓реЗрдирджреЗрди рд╕рдВрдмрдВрдзреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ IMAp рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди TransactionalMap рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рдмрд┐рдирд╛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рдирдпрд╛ JAR рдбрд╛рд▓реЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ рд╣реИ, рд╣рдо рдЗрд╕реЗ рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдмрдЪрд╛рдирд╛:
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
map.set(id, application);
рд╣рдо рдкрдврд╝рддреЗ рд╣реИрдВ:
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
return map.get(id);
рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ. рдлрд┐рд░ рд╣рдордиреЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдореЗрдВ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛:
map.addIndex("subscriberId", false);
рдФрд░ рдПрдХ рдирдИ рдЗрдХрд╛рдИ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ ClassNotFoundException рдкреНрд░рд╛рдкреНрдд рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ред рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдиреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╡рд╣ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ рдФрд░ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ JAR рдЙрд╕реЗ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рдПред рд╣рдордиреЗ рд╡реИрд╕рд╛ рд╣реА рдХрд┐рдпрд╛, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдирдИ рд╕рдорд╕реНрдпрд╛ рд╕рд╛рдордиреЗ рдЖрдИ: рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд┐рдП рдмрд┐рдирд╛ JAR рдХреЛ рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдиреЛрдб-рджрд░-рдиреЛрдб рдЕрдкрдбреЗрдЯ рдХреЗ рджреМрд░рд╛рди рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдирдпрд╛ JAR рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣рдордиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХ рдЦреЛрдЬ рдХреЗ рдмрд┐рдирд╛ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЦрд╝рд┐рд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреЛ рдХреА-рд╡реИрд▓реНрдпреВ рд╕реНрдЯреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдЬрд╝рд░реВрд░реА рдирд╣реАрдВред рдпрд╣рд╛рдВ рднреА IMAp рдФрд░ TransactionalMap рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд▓рдЧ рд╣реИред рдЬрд╣рд╛рдВ IMAp рдХреЛ рдХреЛрдИ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ, рд╡рд╣рд╛рдВ TransactionalMap рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред
рдЖрдИрдореИрдк. рд╣рдо 5000 рд╡рд╕реНрддреБрдПрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдкрдврд╝рддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ.
@Test
void get5000() {
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
UUID subscriberId = UUID.randomUUID();
for (int i = 0; i < 5000; i++) {
UUID id = UUID.randomUUID();
String title = RandomStringUtils.random(5);
Application application = new Application(id, title, subscriberId);
map.set(id, application);
Application retrieved = map.get(id);
assertEquals(id, retrieved.getId());
}
}
рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрди-рджреЗрди рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдПрдХ ClassNotFoundException рдорд┐рд▓рддрд╛ рд╣реИ:
@Test
void get_transaction() {
IMap<UUID, Application> map = hazelcastInstance.getMap("application_t");
UUID subscriberId = UUID.randomUUID();
UUID id = UUID.randomUUID();
Application application = new Application(id, "qwer", subscriberId);
map.set(id, application);
Application retrievedOutside = map.get(id);
assertEquals(id, retrievedOutside.getId());
hazelcastInstance.executeTransaction(context -> {
HazelcastTransactionContextHolder.setContext(context);
try {
TransactionalMap<UUID, Application> transactionalMap = context.getMap("application_t");
Application retrievedInside = transactionalMap.get(id);
assertEquals(id, retrievedInside.getId());
return null;
} finally {
HazelcastTransactionContextHolder.clearContext();
}
});
}
3.8 рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рддрдВрддреНрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЖрдк рдПрдХ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ JAR рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рд╣рдордиреЗ рдЕрдкрдирд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ: рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдпрдВ JSON рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреЛ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдо рдмрд┐рдирд╛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЛрдореЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдгреАрдХрд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирдП рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдирд╛ рдЕрднреА рддрдХ рдЗрди рдлрд╝реАрд▓реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдФрд░ рд╕рд╛рде рд╣реА, рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреБрд░рд╛рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдирдП рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реИрдВред рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рднреАрддрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдо рдлрд╝реАрд▓реНрдб рдХреЛ рдмрджрд▓рддреЗ рдпрд╛ рд╣рдЯрд╛рддреЗ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ рдирдП рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдХрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдХреА рдЪрд╛рд░ рдпрд╛рддреНрд░рд╛рдПрдБ - рдЕрдЪреНрдЫреА, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рджреЛ - рдЦрд╝рд░рд╛рдм
рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдореЗрдВ рдЬрд╛рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкреНрд░рдпреБрдХреНрдд рд░рд┐рдХреЙрд░реНрдб рдХреЛ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рддрдХ рдХреНрдпрд╛ рдХреИрд╢ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХрд╛ рдирд┐рд░реНрдгрдп рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдЬрдм рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛрдбрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо PostgreSQL (log_min_duration_statement to 0) рдореЗрдВ рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд▓реЙрдЧрд┐рдВрдЧ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 20 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдПрдХрддреНрд░рд┐рдд рд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, pgFouine рдФрд░ pgBadger рдЬреИрд╕реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛ рд╕рдХрддреА рд╣реИрдВред рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдзреАрдореА рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреНрд╡реЗрд░реАрдЬрд╝ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВред рдзреАрдореА рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ (EXPLAIN) рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдРрд╕реА рдХреНрд╡реЗрд░реА рдХреЛ рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдорд╛рди рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХреИрд╢ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ "рд╕рдкрд╛рдЯ" рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐ рдкреНрд░рд╢реНрди рдПрдХ рддрд╛рд▓рд┐рдХрд╛ред
рд╢реЛрд╖рдг
рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрд╕рд╡реА рдХреЛ 2017 рдХреЗ рд╡рд╕рдВрдд рдореЗрдВ рдкрд░рд┐рдЪрд╛рд▓рди рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХ рдЕрд▓рдЧ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ, рдПрд╕рд╡реА рдХреЛ рдирд╡рдВрдмрд░ 2017 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЙрд╕ рд╕рдордп рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд┐рддрд┐ рдореЗрдВ)ред
рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдореЗрдВ, рд╕реАрдмреА рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдХреЛрдИ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдЖрдИ рд╣реИред рд╣рдо рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВ
рдПрд╕рд╡реА рд╕рд░реНрд╡рд░ рд╡рд┐рддрд░рдг рдХреЛ рдореВрд▓ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИ: рдЖрд░рдкреАрдПрдо, рдбреАрдИрдмреА, рдПрдордПрд╕рдЖрдИред рд╕рд╛рде рд╣реА рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХрд▓ EXE рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдПрдХрд▓ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдорд╢реАрди рдкрд░ рд╕рд░реНрд╡рд░, рд╣реЗрдЬрд╝рд▓рдХрд╛рд╕реНрдЯ рдФрд░ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕рд░реНрдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ "рдбреЗрдореЛ" рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рддреИрдирд╛рддреА рд╡рд┐рдХрд▓реНрдк рд╣реИред
рд╕реНрд░реЛрдд: www.habr.com