рджреЛрд╖ рдЗрдВрдЬреЗрдХреНрд╢рди: рдЖрдкрдХрд╛ рд╕рд┐рд╕реНрдЯрдо рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореЗрд░рд╛ рдирд╛рдо рдкрд╛рд╡реЗрд▓ рд▓рд┐рдкрд╕реНрдХреА рд╣реИред рдореИрдВ рдПрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реВрдВ, рдореИрдВ Sberbank-Technology рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдмрдбрд╝реЗ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреИрдХреЗрдВрдб рдХреЗ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реА рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реВрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдЧрд▓рддреА рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ - рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдЬреЛ рдЖрдкрдХреЛ рдХреГрддреНрд░рд┐рдо рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдХрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдореИрдВ рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рдХреИрд╕реЗ рдЖрдпрд╛, рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдБ, рдлрд┐рд░ рд╣рдо рд╕реНрд╡рдпрдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗред


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

рд╣рдореЗрдВ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЪрд╛рд╣рд┐рдП?


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



рдЬреНрдЮрд╛рдкрди рдХреНрдпрд╛ рд╣реИ? Memcached - рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрднрд┐рдЧрдо рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрд╡реЗрджрди рдкрд╣реБрдВрдЪ (2) рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред рдпрджрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ (3) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреАрд▓ рдХреА рдЬрд╛рддреА рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореЗрдордХрд╛рдЯреЗрдб (4) рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдЕрдЧрд▓реА рдХреЙрд▓ рдкрд░, рд╣рдореЗрдВ рдЕрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди-рдорд╣рдВрдЧрд╛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╣рдореЗрдВ рд░реИрдо рд╕реЗ рддреИрдпрд╛рд░ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА - рдореЗрдореЗрдХреИрдЪреНрдбред

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



рдЬрдм рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ (2) рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдореЗрдордХреЗрдб (3) рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдкреБрд░рд╛рдиреА рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рд╕рдордп рдПрдХ рднрдпрд╛рдирдХ рдмрд╛рдд рд╣реЛрддреА рд╣реИ - рдЖрд╡реЗрджрди рдФрд░ рдореЗрдореЗрдХреИрдЪреНрдб рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдВрдмрдВрдз рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдореЗрдордХрд╛рдЯреЗрдб рд╕рд░реНрд╡рд░ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЗрдХреИрд╕реНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдирддреАрдЬрддрди, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯ рдХреЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕рдХрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓), рдкреБрд░рд╛рдирд╛ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ рдФрд░ рд╕рдордЭ рдореЗрдВ рди рдЖрдП рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реБрдЖред

рдХреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рдмрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╣рдо рдЙрд╕реЗ рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗред рдРрд╕реЗ рдХреАрдбрд╝реЗ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реИ - рдЧрд▓рддреА рдЗрдВрдЬреЗрдХреНрд╢рдиред

рдЖрдорддреМрд░ рдкрд░ рдЧрд▓рддреА рдЗрдВрдЬреЗрдХреНрд╢рди рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдХреАрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рд▓реЛрдб рдХреЗ рддрд╣рдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рдЕрд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ - рдЙрдкрдХрд░рдг рдХреА рдЦрд░рд╛рдмреА, рдмрд┐рдЬрд▓реА рдХрд╛рдЯ рджреА рдЬрд╛рддреА рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдЦрд░рд╛рдмреА рдЖрджрд┐ред

рдирдИ Sberbank рдЖрдИрдЯреА рдкреНрд░рдгрд╛рд▓реА


рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, Sberbank рдиреЗ рдПрдХ рдирдпрд╛ IT рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдХреНрдпреЛрдВ? рд╕реЗрдВрдЯреНрд░рд▓ рдмреИрдВрдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:



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

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

рдореИрдВ рдЗрд╕ рддрдХрдиреАрдХ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реВрдВрдЧрд╛:

  • рд░реИрдо рдореЗрдВ рд╕реНрдЯреЛрд░реЗрдЬ рдФрд░ рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ
  • рдбрд┐рд╕реНрдХ рднрдВрдбрд╛рд░рдг
  • рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рдорд░реНрдерди
  • рд╡рд┐рддрд░рд┐рдд рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди
  • рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ

рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Sberbank рдХреЗ рдирдП IT рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдИ рдЫреЛрдЯреЗ рд╕рд░реНрд╡рд░ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХрд▓ рдХреНрд▓рд╛рдЙрдб рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЗрдХрдЯреНрдареЗ рд╣реЛрддреЗ рд╣реИрдВред рд╕рднреА рдиреЛрдб рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рд╕рд╣рдХрд░реНрдореА рд╕реЗ рд╕рд╣рдХрд░реНрдореА, рднрдВрдбрд╛рд░рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдбреЗрдЯрд╛ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред

рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рддрдерд╛рдХрдерд┐рдд рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдПрдХ рд╕реЗрд▓ 8 рдиреЛрдбреНрд╕ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдореЗрдВ 4 рдиреЛрдб рд╣реЛрддреЗ рд╣реИрдВред


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

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

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

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

рдЕрджреНрдпрддрди рдЦреЛ рджрд┐рдпрд╛ рд╣реИ


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

рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред рдПрдХ рдХреИрд╢ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХреБрдВрдЬреА рдЦрд╛рддрд╛ рдЖрдИрдбреА рд╣реИ рдФрд░ рдореВрд▓реНрдп рдЦрд╛рддрд╛ рд╡рд╕реНрддреБ рд╣реИред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рджрд╕ рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢реБрд░реВ рдореЗрдВ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЦрд╛рддреЗ рдкрд░ $ 100 рдбрд╛рд▓реЗрдВрдЧреЗ (рддрд╛рдХрд┐ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛ)ред рддрджрдиреБрд╕рд╛рд░, рд╕рднреА рдЦрд╛рддреЛрдВ рдкрд░ рдХреБрд▓ рд╢реЗрд╖ $ 1,000 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред

CacheConfiguration<Integer, Account> cfg = new CacheConfiguration<>(CACHE_NAME); cfg.setAtomicityMode(CacheAtomicityMode.ATOMIC); try (IgniteCache<Integer, Account> cache = ignite.getOrCreateCache(cfg)) {   for (int i = 1; i <= ENTRIES_COUNT; i++)       cache.put(i, new Account(i, 100));   System.out.println("Accounts before transfers");   printAccounts(cache);   printTotalBalance(cache);   for (int i = 1; i <= 100; i++) {       int pairOfAccounts[] = getPairOfRandomAccounts();       transferMoney(cache, pairOfAccounts[0], pairOfAccounts[1]);   } } ... private static void transferMoney(IgniteCache<Integer, Account> cache, int fromAccountId, int toAccountId) {   Account fromAccount = cache.get(fromAccountId);   Account toAccount = cache.get(toAccountId);   int amount = getRandomAmount(fromAccount.balance);   if (amount < 1) {       return;   }   fromAccount.withdraw(amount);   toAccount.deposit(amount);   cache.put(fromAccountId, fromAccount);   cache.put(toAccountId, toAccount); } 


рдлрд┐рд░ рд╣рдо рдЗрди 10 рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ 100 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдордиреА рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $ 50 рдХреЛ рдЦрд╛рддрд╛ A рд╕реЗ рджреВрд╕рд░реЗ рдЦрд╛рддреЗ B рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдкреНрд░рдгрд╛рд▓реА рдмрдВрдж рд╣реИ, рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред рдХреБрд▓ рд╢реЗрд╖ $ 1000 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред


рд╣рдореЗрдВ рдХреБрд▓ рд╢реЗрд╖ рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдп рдорд┐рд▓рд╛ - $ 1000ред рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ - рдЪрд▓реЛ рдЗрд╕реЗ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХ рдмрдирд╛рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рд╣реА рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдПрдВ рдЬреЛ рдПрдХ рд╕рд╛рде рджрд╕ рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рдзрди рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░реЗрдВрдЧреЗред

 CacheConfiguration<Integer, Account> cfg = new CacheConfiguration<>(CACHE_NAME); cfg.setAtomicityMode(CacheAtomicityMode.ATOMIC); cfg.setCacheMode(CacheMode.PARTITIONED); cfg.setIndexedTypes(Integer.class, Account.class); try (IgniteCache<Integer, Account> cache = ignite.getOrCreateCache(cfg)) {  // Initializing the cache.  for (int i = 1; i <= ENTRIES_COUNT; i++)    cache.put(i, new Account(i, 100));  System.out.println("Accounts before transfers");  System.out.println();  printAccounts(cache);  printTotalBalance(cache);  IgniteRunnable run1 = new MyIgniteRunnable(cache, ignite,1);  IgniteRunnable run2 = new MyIgniteRunnable(cache, ignite,2);  List<IgniteRunnable> arr = Arrays.asList(run1, run2);  ignite.compute().run(arr); } ... private void transferMoney(int fromAccountId, int toAccountId) {  Account fromAccount = cache.get(fromAccountId);  Account toAccount = cache.get(toAccountId);  int amount = getRandomAmount(fromAccount.balance);  if (amount < 1) {      return;  }  int fromAccountBalanceBeforeTransfer = fromAccount.balance;  int toAccountBalanceBeforeTransfer = toAccount.balance;  fromAccount.withdraw(amount);  toAccount.deposit(amount);  cache.put(fromAccountId, fromAccount);  cache.put(toAccountId, toAccount); } 



рдХреБрд▓ рд╢реЗрд╖ $ 1296 рд╣реИред рдЧреНрд░рд╛рд╣рдХ рдЦреБрд╢ рд╣реЛрддреЗ рд╣реИрдВ, рдмреИрдВрдХ рдХреЛ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реБрдЖ?



рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рджреЛ рдХрд╛рд░реНрдп рдПрдХ рд╕рд╛рде рдЦрд╛рддреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдХрд╛рд░реНрдп рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рддреБрд░рдВрдд рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рд╕рдВрдЧрддрд┐ рдХреЛ рдЧреБрдо рдЕрджреНрдпрддрди рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ ACID рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрд╕реАрдЖрдИрдбреА тАЛтАЛрдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИред



  • A - рдкрд░рдорд╛рдгреБ, рдкрд░рдорд╛рдгреБред рдпрд╛ рддреЛ рд╕рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд░рдг 3 рдФрд░ 6 рдХреЗ рдмреАрдЪ рд╡рд┐рдлрд▓рддрд╛ рдереА, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рд╕реА - рд╕рдВрдЧрддрд┐, рдЕрдЦрдВрдбрддрд╛ред рд▓реЗрди-рджреЗрди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдП рдФрд░ рдмреА рдХрд╛ рдпреЛрдЧ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреБрд▓ рд╢реЗрд╖ $ 1000 рд╣реИред
  • рдореИрдВ - рдЕрд▓рдЧрд╛рд╡, рдЕрд▓рдЧрд╛рд╡ред рд▓реЗрди-рджреЗрди рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдПрдХ рд▓реЗрдирджреЗрди рдПрдХ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдЪрд░рдг 3 рдФрд░ рдЪрд░рдг 6 рддрдХ рдЦрд╛рддрд╛ рдП рдФрд░ рдмреА рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╕реЛрдЪрддреА рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реЗ рдХрдо рдкреИрд╕рд╛ рд╣реИред рдпрд╣рд╛рдВ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдмрд╛рдж рдореЗрдВ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред
  • рдбреА - рд╕реНрдерд╛рдпрд┐рддреНрд╡ рд▓реЗрди-рджреЗрди рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЦреЛрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рд▓рд┐рдП, рдЯреНрд░рд╛рдВрд╕рдлрд░ рдореЗрдиреА рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рд▓реЗрди-рджреЗрди рдХреЗ рднреАрддрд░ рдзрди рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░реЗрдВрдЧреЗред

 private void transferMoney(int fromAccountId, int toAccountId) {  try (Transaction tx = ignite.transactions().txStart()) {      Account fromAccount = cache.get(fromAccountId);      Account toAccount = cache.get(toAccountId);      int amount = getRandomAmount(fromAccount.balance);      if (amount < 1) {          return;      }      int fromAccountBalanceBeforeTransfer = fromAccount.balance;      int toAccountBalanceBeforeTransfer = toAccount.balance;          fromAccount.withdraw(amount);      toAccount.deposit(amount);          cache.put(fromAccountId, fromAccount);      cache.put(toAccountId, toAccount);          tx.commit();  } catch (Exception e){      e.printStackTrace();  } } 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред


рд╣рдореНрдоред рд▓реЗрди-рджреЗрди рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред рдХреБрд▓ рд╢реЗрд╖ $ 6951 рд╣реИ! рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдЯреЛрдорд┐рдХ рдХреИрд╢ рдкреНрд░рдХрд╛рд░ рдЪреБрдирд╛, рдЕрд░реНрдерд╛рддред рдмрд┐рдирд╛ ACID рд▓реЗрдирджреЗрди рд╕рдорд░реНрдерди:

 CacheConfiguration<Integer, Account> cfg = new CacheConfiguration<>(CACHE_NAME); cfg.setAtomicityMode(CacheAtomicityMode.TOMIC); 

рджреВрд╕рд░реЗ, txStart рдкрджреНрдзрддрд┐ рдореЗрдВ enum рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛: рд▓реЙрдХ рд╡рд┐рдзрд┐ (Apache рдЗрдЧреНрдирд╛рдЗрдЯ рдореЗрдВ рдХрдВрд╕реАрдбрд░ рдореЛрдб) рдФрд░ рдЖрдЗрд╕реЛрд▓реЗрд╢рди рд╕реНрддрд░ред рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рд▓реЗрдирджреЗрди рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдореЗрдВ, рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:

 try (Transaction tx = ignite.transactions().txStart( ,  )) { Account fromAccount = cache.get(fromAccountId); Account toAccount = cache.get(toAccountId); ...  tx.commit(); } 

рдЖрдк LOCK METHOD рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ PESSIMISTIC (рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рд▓реЙрдХ) рдпрд╛ OPTIMISTIC (рдЖрд╢рд╛рд╡рд╛рджреА рд▓реЙрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рддрддреНрдХрд╛рд▓ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред PESSIMISTIC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рддрд╛рд▓рд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдкрд░ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓реЗрдирджреЗрди рдХреЗ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдиреЗ рддрдХ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рд▓реЙрдХ рдХреЗ рд╕рд╛рде рд▓реЗрди-рджреЗрди рдЦрд╛рддрд╛ рдП рд╕реЗ рдЦрд╛рддрд╛ рдмреА рдореЗрдВ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рд▓реЗрдирджреЗрди рддрдм рддрдХ рдЗрди рдЦрд╛рддреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдирджреЗрди рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрджрд┐ рдЕрдиреНрдп рд▓реЗрдирджреЗрди рдП рдФрд░ рдмреА рдЦрд╛рддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд▓реЗрдирджреЗрди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЖрд╡реЗрджрди рдХреЗ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдЖрд╢рд╛рд╡рд╛рджреА рд▓реЙрдХрд┐рдВрдЧ рдЕрдиреНрдп рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд▓рд┐рдП рд▓реЗрдирджреЗрди рдХреА рддреИрдпрд╛рд░реА рдХреЗ рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди (рддреИрдпрд╛рд░ рдЪрд░рдг, рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ 2PC рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ), рдПрдХ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдПрдЧреА - рдХреНрдпрд╛ рдЕрдиреНрдп рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ? рдФрд░ рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ, рддреЛ рд▓реЗрдирджреЗрди рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, OPTIMISTIC рддреЗрдЬреА рд╕реЗ рдЪрд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрдиреНрд╕реБрд▓реЗрд╢рди рд╕реНрддрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд▓реЗрдирджреЗрди рдХреЗ рдЕрд▓рдЧрд╛рд╡ рдХреА рдбрд┐рдЧреНрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред SQL ANSI / ISO рдорд╛рдирдХ 4 рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд▓рдЧрд╛рд╡ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рд▓реЗрди-рджреЗрди рдкрд░рд┐рджреГрд╢реНрдп рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред

  • READ_UNCOMMITED рдиреНрдпреВрдирддрдо рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рд╣реИред рд▓реЗрди-рджреЗрди рдХреЛ "рдЧрдВрджреЗ" рдЕрдкреНрд░рдпреБрдХреНрдд рдбреЗрдЯрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
  • READ_COMMITTED - рдЬрдм рдХреЛрдИ рд▓реЗрди-рджреЗрди рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рджреЗрдЦрддрд╛ рд╣реИ
  • REPEATABLE_READ - рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рд▓реЗрди-рджреЗрди рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рд░реАрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд░реАрдб рдХреЛ рд░рд┐рдкреАрдЯреЗрдмрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдЕрдиреБрдХреНрд░рдорд┐рдХ - рдпрд╣ рд╕реНрддрд░ рд▓реЗрдирджреЗрди рдЕрд▓рдЧрд╛рд╡ рдХреА рдЕрдзрд┐рдХрддрдо рдбрд┐рдЧреНрд░реА рдорд╛рдирддрд╛ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИрдВред рд╕рдорд╛рдирд╛рдВрддрд░ рд▓реЗрдирджреЗрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдо рдореЗрдВ (рдХреНрд░рдо рдореЗрдВ) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рде рдЙрдЪреНрдЪ рд╢реНрд░реЗрдгреА рдХреЗ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрдореА рдЖрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рдЗрд╕ рд╕реНрддрд░ рдХреА рдкрд╕рдВрдж рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрдИ рдЖрдзреБрдирд┐рдХ DBMS (Microsoft SQL Server, PostgreSQL рдФрд░ Oracle) рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЗрд╕реЛрд▓реЗрд╢рди рд╕реНрддрд░ READ_COMMITTED рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдШрд╛рддрдХ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдЦреЛрдП рд╣реБрдП рдЕрдкрдбреЗрдЯ рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рдПрдЧрд╛ред рдкрд░рд┐рдгрд╛рдо рд╡рд╣реА рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рд╣рдордиреЗ рд▓реЗрди-рджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред



рдЕрдкрд╛рдЪреЗ рд╕реЗ рд▓реЗрди-рджреЗрди рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреНрд░рдЬреНрд╡рд▓рд┐рдд рдХрд░реЗрдВ , рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд▓реЙрдХ рд╡рд┐рдзрд┐ рдФрд░ рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ:

  • PASSIMISTIC REPEATABLE_READ - рд▓реЙрдХ рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдкрд╣рд▓реЗ рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдкрд░ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • PESSIMISTIC SERIALIZABLE - PESSIMISTIC REPEATABLE_READ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ
  • рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрдиреБрдХреНрд░рдорд┐рдХ - рдкрд╣рд▓реЗ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА рдХреЗ рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдЕрд▓рдЧ рд╣реИ (рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓реЗрдирджреЗрди рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рддреЛ рд▓реЗрдирджреЗрди рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдЗрдП рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред


 private void transferMoney(int fromAccountId, int toAccountId) { try (Transaction tx = ignite.transactions().txStart(OPTIMISTIC, SERIALIZABLE)) { Account fromAccount = cache.get(fromAccountId); Account toAccount = cache.get(toAccountId); int amount = getRandomAmount(fromAccount.balance); if (amount < 1) { return; } int fromAccountBalanceBeforeTransfer = fromAccount.balance; int toAccountBalanceBeforeTransfer = toAccount.balance; fromAccount.withdraw(amount); toAccount.deposit(amount); cache.put(fromAccountId, fromAccount); cache.put(toAccountId, toAccount); tx.commit(); } catch (Exception e){ e.printStackTrace(); } } 


рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рд╣реБрд░реНрд░реЗ рдХреЛ $ 1,000 рдорд┐рд▓реЗред рддреАрд╕рд░реЗ рдкреНрд░рдпрд╛рд╕ рдкрд░ред

рд▓реЛрдб рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг


рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдмрдирд╛рдПрдВрдЧреЗ - рд╣рдо рд▓реЛрдб рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд░реНрд╡рд░ рдиреЛрдб рдЬреЛрдбрд╝реЗрдВред рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдХрд░рдг рд╣реИрдВ, Sberbank рдореЗрдВ рд╣рдо HP рдкреНрд░рджрд░реНрд╢рди рдХреЗрдВрджреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ 50 рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдмрдбрд╝реА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдкреИрд╕рд╛ рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ JMeter рдкрд░ рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрд╛ - рдпрд╣ рдореБрдлрд╝реНрдд рд╣реИ рдФрд░ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ 100% рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ JSR223 рдирдореВрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдПрдХ JAR рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗред рдХреИрд╢ рдмрдирд╛рдиреЗ рдФрд░ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CreateCache рдХреНрд▓рд╛рд╕ рдЪрд▓рд╛рдПрдВред рдХреИрд╢ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк JMeter рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рдм рдХреБрдЫ рд╢рд╛рдВрдд рд╣реИ, $ 1,000 рдорд┐рд▓рд╛ рд╣реИред

рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдб рдЖрдкрд╛рддрдХрд╛рд▓реАрди рд╢рдЯрдбрд╛рдЙрди


рдЕрдм рд╣рдо рдЕрдзрд┐рдХ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╣реЛрдВрдЧреЗ: рдХреНрд▓рд╕реНрдЯрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рд╣рдо рджреЛ рд╕рд░реНрд╡рд░ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рджреЗрдВрдЧреЗред рд╡рд┐рдЬрд╝реЛрд░ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬрд┐рд╕реЗ рдЧреНрд░рд┐рдбреЗрди рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдирдореВрдиреЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред SQL рд╡реНрдпреВрдЕрд░ рдЯреИрдм рдореЗрдВ, рд╕рднреА рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред


рдпрд╣ рдХреНрдпрд╛ рд╣реИ? 553 рдбреЙрд▓рд░ рд╣реИред рдЧреНрд░рд╛рд╣рдХ рднрдпрднреАрдд рд╣реИрдВ, рдмреИрдВрдХ рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреА рд╣рд╛рдирд┐ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░ рд╣рдордиреЗ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИ?

рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдореЗрдВ рдХреИрд╢ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • рд╡рд┐рднрд╛рдЬрди - рдПрдХ рдпрд╛ рдХрдИ рдмреИрдХрдЕрдк рдкреНрд░рддрд┐рдпрд╛рдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ
  • рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреИрд╢ - рд╕рднреА рд╡рд┐рднрд╛рдЬрди (рдХреИрд╢ рдХреЗ рд╕рднреА рдЯреБрдХрдбрд╝реЗ) рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рднреАрддрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреИрд╢ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ - рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕реНрдерд╛рдиреАрдп - рд╕рднреА рдПрдХ рдиреЛрдб рдкрд░



рд╣рдо рдЕрдХреНрд╕рд░ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдмрджрд▓ рд▓реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рд╡рд┐рднрд╛рдЬрд┐рдд рдХреИрд╢ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреИрдХрдЕрдк рдЬреЛрдбрд╝реЗрдВрдЧреЗред рдпрд╣реА рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рдХреА рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреА - рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рдмреИрдХрдЕрдкред

 CacheConfiguration<Integer, Account> cfg = new CacheConfiguration<>(CACHE_NAME); cfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL); cfg.setCacheMode(CacheMode.PARTITIONED); cfg.setBackups(1); 

рд╣рдордиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ $ 1000 рд╣реИрдВред рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд╣рдо рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ "рдмреБрдЭрд╛" рджреЗрддреЗ рд╣реИрдВ


Visor рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ, рд╣рдо $ 1000 рдХрд╛ рдХреБрд▓ рдмреИрд▓реЗрдВрд╕ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП SQL рдХреНрд╡реЗрд░реА рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдорд╣рд╛рди рдХрд╛рдо рдХрд┐рдпрд╛!

рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ


рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╣рдо рдирдП Sberbank IT рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рдереЗред рдХрд┐рд╕реА рддрд░рд╣ рд╣рдо рдЕрдкрдиреЗ рдПрд╕реНрдХреЙрд░реНрдЯ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рдкрд╛рд╕ рдЧрдП рдФрд░ рдкреВрдЫрд╛: рдХреНрдпрд╛ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ? рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдЬрд╡рд╛рдм рджрд┐рдпрд╛: рд╕рдм рдХреБрдЫ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг! рдмреЗрд╢рдХ, рдпрд╣ рдЬрд╡рд╛рдм рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ред рд╣рдо рдПрдХ рд╕рд╛рде рдмреИрда рдЧрдП, рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдЖрдБрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдПрдХ рдиреЛрдб рд╡рд┐рдлрд▓рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд░реИрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, JVM рдХреНрд░реИрд╢, OS рдХреНрд░реИрд╢ рдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рдлрд▓рддрд╛ред



рд╣рдордиреЗ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЛ 4 рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

  1. рдЙрдкрдХрд░рдг
  2. рдиреЗрдЯрд╡рд░реНрдХ
  3. рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
  4. рдЕрдиреНрдп

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



рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ: рдЙрдкрдХрд░рдг


рдЗрд╕ рд╕рдореВрд╣ рдореЗрдВ рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдмрд┐рдЬрд▓реА рдХреА рд╡рд┐рдлрд▓рддрд╛
  • рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдкреВрд░рд╛ рдиреБрдХрд╕рд╛рди
  • рдПрдХ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд╣реБрдВрдЪ рдкрде рдХреА рд╡рд┐рдлрд▓рддрд╛
  • рд╕реАрдкреАрдпреВ, рд░реИрдо, рдбрд┐рд╕реНрдХ, рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдб

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

рдФрд░ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╕реЗрд▓ рдореЗрдВ рд░реИрдХ рдХрд╛ рдиреБрдХрд╕рд╛рдиред



рд╕реЗрд▓ рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реИрдХ рдореЗрдВ рд╣реИрдВред рдпрд╛рдиреА рд░реИрдХ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд┐рдлрд▓рддрд╛ рдпрд╛ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд╛рд░ рдХреА рддреАрди рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреАред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо рдкреВрд░реЗ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдХреЛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рднреА рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЪрд╛рд░ рдореЗрдВ рд╕реЗ рджреЛ рдФрд░ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реИрдВред

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

рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ: рдиреЗрдЯрд╡рд░реНрдХ


рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рдЦрдВрдбрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдорд▓реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо iptables рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ NetEm рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ:

  • рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рджреЗрд░реА рдХрд░рддрд╛ рд╣реИ
  • рдкреИрдХреЗрдЯ рдЦреЛрдирд╛
  • рдкреИрдХреЗрдЯ рд░рд┐рдЯреНрд░реА
  • рдкреИрдХреЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдирд╛
  • рдкреИрдХреЗрдЯ рд╡рд┐рд░реВрдкрдг

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


рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓, рдПрдХ рдЙрддреНрдЦрдирди рджреНрд╡рд╛рд░рд╛ рдлрд╛рдЗрдмрд░ рдСрдкреНрдЯрд┐рдХ рдХреЗрдмрд▓ рдХреЛ рдиреБрдХрд╕рд╛рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдЯреЛрд╣рдХрд╛, рдУрдЯреНрд░реАрдЯреА рдФрд░ рд░реЙрдХреЗрдЯрдмреИрдВрдХ рдХреЗ рдмреИрдВрдХреЛрдВ рдХреЗ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдХрдИ рдШрдВрдЯреЛрдВ рддрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд▓реЗрдирджреЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдиреЗ рдХрд╛рд░реНрдб рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдП рдФрд░ рдПрдЯреАрдПрдо рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рднрд╛рдЬрд┐рдд рдорд╕реНрддрд┐рд╖реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЧреНрд░рд┐рдб рдПрдХ рд╡рд┐рднрд╛рдЬрд┐рдд рдорд╕реНрддрд┐рд╖реНрдХ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЖрдзрд╛ рд░реАрдб рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЖрдзрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдзрд┐рдХ рдЬреАрд╡рд┐рдд рдиреЛрдб рд╣реИрдВ рдпрд╛ рд╕рдордиреНрд╡рдпрдХ рд╕реНрдерд┐рдд рд╣реИ (рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рдиреЛрдб)ред

рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ: рд╕реЙрдлреНрдЯрд╡реЗрдпрд░


рдпреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдорд▓реЗ рд╣реИрдВ:

  • рдбреАрдкреАрдПрд▓ рдУрдЖрд░рдПрдо - рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдореЙрдбреНрдпреВрд▓, рдЬреИрд╕реЗ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдУрдЖрд░рдПрдо
  • рдЗрдВрдЯрд░рдореЙрдбреНрдпреВрд▓рд░ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ - рдореЙрдбреНрдпреВрд▓ (рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ) рдХреЗ рдмреАрдЪ рдореИрд╕реЗрдЬрд┐рдВрдЧ
  • рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо
  • рдкрд╣реБрдВрдЪ рдкреНрд░рдгрд╛рд▓реА
  • рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдХреНрд▓рд╕реНрдЯрд░
  • ...

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

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



рдЕрдиреНрдп рдорд╛рдорд▓реЗ


рдпреЗ рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рддреАрди рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдЗрдирдореЗрдВ рд╡реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдмрдбрд╝реА рджреБрд░реНрдШрдЯрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ рд░рд┐рдХрд╡рд░реА рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ рдпрд╛ рдЬрдм рдбреЗрдЯрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  • рдбреЗрдЯрд╛ рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ (рдмреИрдХрдЕрдк) рдмрдирд╛рдиреЗ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ - рдкреВрд░реНрдг рдФрд░ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдгред
  • рд╕рдордп рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рдВрджреБ рдкрд░ рд░рд┐рдХрд╡рд░реА - PITR (рдкреЙрдЗрдВрдЯ-рдЗрди-рдЯрд╛рдЗрдо рд░рд┐рдХрд╡рд░реА) рддрдВрддреНрд░ред

рдЧрд▓рддреА рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ


рдореБрдЭреЗ рдЕрдкрдиреА рд░рд┐рдкреЛрд░реНрдЯ рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд▓рд┐рдВрдХ рдпрд╛рдж рд╣реИред рдЖрдк Apache рдЗрдЧреНрдирд╛рдЗрдЯ рд╡рд┐рддрд░рдг рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - Apache рдЗрдЧреНрдирд╛рдЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб ред рдФрд░ рдЕрдм рдореИрдВ рдЙрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо Sberbank рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред

рдЪреМрдЦрдЯреЗ:


рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди:


рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ:


рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг:


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

Source: https://habr.com/ru/post/hi433468/


All Articles