Node.JS рдФрд░ Redis рдкрд░ рд╡рд┐рддрд░рд┐рдд рдЪреИрдЯ

рдкрд░рд┐рдгрд╛рдо "рдХрдмреВрддрд░ рдореЗрд▓" рдзреЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрд╝реЗрджрд╛рд░ рддрд╕реНрд╡реАрд░ рд╣реИ


рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреНрд░рд╢реНрди / рдЙрддреНрддрд░:


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


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


рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


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


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдХ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреБрдЦреНрдпрд╛рдд рд░реАрдпрд▓рдЯрд╛рдЗрдо, рдпрд╣ рдПрдХ рдЪреИрдЯ рд╣реИ ! рдХрдмреВрддрд░ рдореЗрд▓ рд╡рд┐рддрд░рдг рдирд╣реАрдВред


рд░реВрд╕реА рдкреЛрд╕реНрдЯ % рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ % рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдордЬрд╛рдХ


рд╣рдо Node.JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИред рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП, рд╕реЙрдХреЗрдЯ рд▓реЗ рд▓реЛред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд▓рд┐рдЦреЗрдВред


рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


  1. рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХреЗрдВ
  2. рдЬрд╛рдирд┐рдП рдХреМрди рд╣реИ рдСрдирд▓рд╛рдЗрди / рдСрдлрд▓рд╛рдЗрди

рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


рдПрдХрд▓ рд╕рд░реНрд╡рд░


рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд╕рдВрджреЗрд╢ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ:


interface Message{ roomId: string,//    message: string,//    } 

рд╕рд░реНрд╡рд░ рдкрд░:


 io.on('connection', sock=>{ //    sock.on('join', (roomId:number)=> sock.join(roomId)) //    //         sock.on('message', (data:Message)=> io.to(data.roomId).emit('message', data)) }) 

рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░, рдХреБрдЫ рдЗрд╕ рддрд░рд╣:


 sock.on('connect', ()=> { const roomId = 'some room' //      sock.on('message', (data:Message)=> console.log(`Message ${data.message} from ${data.roomId}`)) //   sock.emit('join', roomId) //    sock.emit('message', <Message>{roomId: roomId, message: 'Halo!'}) }) 

рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдСрдирд▓рд╛рдЗрди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 io.on('connection', sock=>{ //         // ,        - //      sock.on('auth', (uid:string)=> sock.join(uid)) //,     , //          //   sock.on('isOnline', (uid:string, resp)=> resp(io.sockets.clients(uid).length > 0)) }) 

рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдкрд░:


 sock.on('connect', ()=> { const uid = 'im uid, rly' //  sock.emit('auth', uid) //     sock.emit('isOnline', uid, (isOnline:boolean)=> console.log(`User online status is ${isOnline}`)) }) 

рдиреЛрдЯ: рдХреЛрдб рдирд╣реАрдВ рдЪрд▓рд╛, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ

рдЬрд▓рд╛рдК рд▓рдХрдбрд╝реА рдХреА рддрд░рд╣, рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдХрдорд░реЗ рдХреЗ рдкреНрд░рдмрдВрдзрди (рд╕рдВрджреЗрд╢ рдЗрддрд┐рд╣рд╛рд╕, рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ) рдФрд░ рд▓рд╛рдн рдХреЛ рд╕реНрдкрд┐рди рдХрд░рддреЗ рд╣реИрдВред


рд▓реЗрдХрд┐рди! рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рд╢реНрд╡ рд╢рд╛рдВрддрд┐ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд░реБрдХрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рд╣рдо рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ:


рдиреЛрдб.рдЬреЗрдПрд╕ рдХреНрд▓рд╕реНрдЯрд░


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


рдмрд╛рдВрдЯреЛ рдФрд░ рдмрд╛рдЗрдХ рджреЛ


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


1549140775997


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


рдлрд┐рдиред


... рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ?)


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


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


1549048945334


рдиреЛрдб рдЙрдарддрд╛ рд╣реИ, рдорд╛рд╕реНрдЯрд░ рдХреЛ рдЙрд╕рдХреЗ рдЬрд╛рдЧрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЕрдиреНрдп рд╕рдХреНрд░рд┐рдп рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ, рд╣рдо рдЙрдирд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рддреИрдпрд╛рд░ рд╣реИред рдорд╛рд╕реНрдЯрд░ рдХрд╛рдВрд╕рд▓ рдпрд╛ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рд╕рд╛рдЗрдХрд┐рд▓ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдорд╛рд╕реНрдЯрд░ рдХреЛ рд╕реНрд╡-рдирд┐рд░реНрдорд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдорд╣рд╛рди, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╕реНрдХрд╛рдИрдиреЗрдЯ рд╣реИ! рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЪреИрдЯ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рдЪрд▓реЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ:


  1. рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдХрд┐рд╕рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ, рдпрд╛рдиреА, рдХрдорд░реЗ рдореЗрдВ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдЬрдм рд╣рдо рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджреЗрд╢ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
  3. рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдм рдХреМрди рд╕рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдирд▓рд╛рдЗрди рд╣реИред
  4. рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдСрдирд▓рд╛рдЗрди рд╕реНрдерд┐рддрд┐ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдВ, рддрд╛рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд╡реЗ рдЗрд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВ

рдЪрд▓реЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдорд╛рд╕реНрдЯрд░ рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдиреЛрдб рдХрд┐рд╕ рдиреЛрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рд╕реНрдерд┐рддрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


1549237952673


рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рднрд┐рдиреНрди рдиреЛрдбреНрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред рдЧреБрд░реБ рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ, рдиреЛрдбреНрд╕ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдХреНрдпрд╛ рдЬрд╛рдирддрд╛ рд╣реИред рдЬрдм UserB рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ, рддреЛ Node2 рдорд╛рд╕реНрдЯрд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ "рдпрд╛рдж рд░рдЦрддрд╛ рд╣реИ" рдХрд┐ UserB Node2 рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдЬрдм UserA рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдорд┐рд▓рддрд╛ рд╣реИ:


1549140491881


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


1549139768940


1549139882747


рд▓реЗрдХрд┐рди рдЯреНрд░реЗрдб рдСрдл рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рд╕реВрдЪреА рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рд╣рд╛рд▓рд╛рдВрдХрд┐, "рдпреВрдЬрд░ рдЖрдИрдбреА -> [рд╣реЛрд╕реНрдЯ рдХрдиреЗрдХреНрд╢рди]" рдХрд╛ рдПрдХ рдЕрдиреБрдкрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд╛рдЯрдирд╛ - рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╛рдЗрдХрд┐рд▓ рдЙрджреНрдпреЛрдЧ рдХреА рд╕реНрдореИрдХ рд╣реИред рдЕрдзрд┐рдХ рдХреЛрдб, рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВред рд╢рд╛рдпрдж рд╣рдо рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдлреНрд░реАрдЬ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рд╣реИ рдЙрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ:


рд╕рдВрджреЗрд╢ рджрд▓рд╛рд▓реЛрдВ


рд╡рд╣ рдЗрдХрд╛рдИ рдЬреЛ "рдмрд╕" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд "рдордзреНрдпрд╡рд░реНрддреА рд▓рд┐рдВрдХ"ред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рд╣рдо, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдирдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред


рд╡рд╣рд╛рдБ рд╕рд╛рдмрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ RabbitMQ рдФрд░ Kafka: рд╡реЗ рд╕рд┐рд░реНрдл рд╡рд╣реА рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рд╕рдВрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ - рдпрд╣ рдЙрдирдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ, рдЧрд░реНрджрди рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде crammedред рдЙрдирдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдПрдХ рд╕рдВрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЪрд╛рд╣реЗ рдЬреЛ рднреА рд╣реЛред


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


... рдФрд░ рдЖрдкрдХреЛ рдпрд╣реА рдЪрд╛рд╣рд┐рдП!


рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рд╕рд┐рд░реНрдл рдЪреИрдЯ рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдордиреА рд╕рд░реНрд╡рд┐рд╕ рдпрд╛ рд╕реНрдкреЗрд╕ рдлреНрд▓рд╛рдЗрдЯ рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗрдВрдЯрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ ... рд╕рд┐рд░реНрдл рдПрдХ рдЪреИрдЯред рдЬреЛрдЦрд┐рдо рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рд▓ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕рд╢рд░реНрдд рдкреАрдЯ рдХреЛ рдПрдХ рд╣рдЬрд╛рд░ рдореЗрдВ рд╕реЗ рдПрдХ рднреА рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдЙрд╕реЗ рдЙрдкреЗрдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдмрджрд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рджрд┐рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЙрд╕рдХреЗ рд╕рднреА рдорд╣рд┐рдорд╛ рдореЗрдВ рд╡реНрдпрд╛рдкрд╛рд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЖрдк рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдЗрддрд┐рд╣рд╛рд╕ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреЗрдЯреА рдЕрднреА рднреА рдкреЗрдЬ / рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдорд┐рд╕реНрдб рд╕рдВрджреЗрд╢ рдХреЛ рджреЗрдЦреЗрдЧрд╛ред рдЗрд╕реАрд▓рд┐рдП рд╣рдо Redis pub / sub, рдпрд╛ рдпреЛрдВ рдХрд╣реЗрдВ: SocketIO рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд╛рдЗрдЯ ред


рддреЛ рдпрд╣ рдХреНрдпрд╛ рд╣реИ?


рд░реЗрдбрд┐рд╕ рдПрдбрд╛рдкреНрдЯрд░


https://github.com/socketio/socket.io-redis


рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдХреБрдЫ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдЗрд╢рд╛рд░реЛрдВ рдХреА рдПрдХ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рддрд░рд┐рдд рдЪреИрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ! рд▓реЗрдХрд┐рди рдХреИрд╕реЗ? рдпрджрд┐ рдЖрдк рдЕрдВрджрд░ рджреЗрдЦрддреЗ рд╣реИрдВ - рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐ рдЖрдзрд╛ рд╕реМ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИред


рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рд╣рдо рдПрдХ рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ


 io.emit("everyone", "hello") 

рдпрд╣ рдореВрд▓реА рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реА рдЪреИрдЯ рдХреЗ рдЕрдиреНрдп рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реЙрдХреЗрдЯреНрд╕ рдкрд░ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ


1549232309776


рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ рддреЛ рднреА рд╕рдВрджреЗрд╢ рд╕рднреА рдиреЛрдбреНрд╕ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


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


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


рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдо рдпрд╣рд╛рдБ рд░реБрдХ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ:


  1. рдПрдХ рд╣реА рдореВрд▓реА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмреЛрддрд▓ рдЧрд░реНрджрди
  2. рдЕрддрд┐рд░реЗрдХ, рдореИрдВ рдиреЛрдбреНрд╕ рдХреЛ рдХреЗрд╡рд▓ рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд╣рд┐рдП

рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдПрдХ рдХреА рдХреАрдордд рдкрд░, рдРрд╕реА рдЪреАрдЬрд╝ рдХреЛ рджреЗрдЦреЗрдВ:


рд░реЗрдбрд┐рд╕ рдХреНрд▓рд╕реНрдЯрд░


рдпрд╣ рдХрдИ рдореВрд▓реА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡реЗ рдкреВрд░реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╣ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ? рд╣рд╛рдВ, рдЗрд╕ рддрд░рд╣:


1549233023980


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


1549231953897


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


рдЧрд▓рдд рд░рд╛рд╕реНрддрд╛ рдореЛрдбрд╝реЛ


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


1549239818663


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


рдЖрдк рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдПрдХ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ, рдЬреЛ рдиреЛрдбреНрд╕ рдкрд░ рднрд╛рд░ рдХрдо рдХрд░ рджреЗрдЧрд╛, рдФрд░ рд╕рдм рдХреБрдЫ рдзрдХреНрдХрд╛ рджреЗрдЧрд╛:


1549239361416


рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛ рджреВрд╕рд░рд╛ рд░рд╛рд╕реНрддрд╛ рдмрди рдЧрдпрд╛ рд╣реИ: рдиреЛрдбреНрд╕ рд╢рд╛рдВрдд рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореВрд▓реА рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реЛрдб рдмрдврд╝ рдЧрдпрд╛ рд╣реИред рдпрд╣ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрд╛рдЗрдХ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ-рд░реЗрдбрд┐рд╕ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдХреЗрд▓реЗ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╢рд╛рдВрдд рд╣реИ, рд╣рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдо рдореВрд▓реА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:


 //  : const pub = new RedisClient({host: 'localhost', port: 6379})//  const sub = new RedisClient({host: 'localhost', port: 6379})//   //    interface Message{ roomId: string,//    message: string,//    } 

рд╣рдорд╛рд░реА рд╕рдВрджреЗрд╢ рдкреНрд░рдгрд╛рд▓реА рд╕реЗрдЯ рдХрд░реЗрдВ:


 //     sub.on('message', (channel:string, dataRaw:string)=> { const data = <Message>JSON.parse(dataRaw) io.to(data.roomId).emit('message', data)) }) //   sub.subscribe("messagesChannel") //    sock.on('join', (roomId:number)=> sock.join(roomId)) //   sock.on('message', (data:Message)=> { //   pub.publish("messagesChannel", JSON.stringify(data)) }) 

рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рд╕реЙрдХреЗрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ редio-redis: рд╣рдо рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред


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


 //     sub.on('message', (channel:string, message:string)=> { io.to(channel).emit('message', message)) }) let UID:string|null = null; sock.on('auth', (uid:string)=> { UID = uid //   -   //  UID  sub.subscribe(UID) //   sock.join(UID) }) sock.on('writeYourself', (message:string)=> { //  ,        UID if (UID) pub.publish(UID, message) }) 

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


1550174595491


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


1550174092066


1550174943313


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


  1. рдХреБрд▓ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЛ рд╕рдореВрд╣реЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ / рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рд╣рдо рдХреЗрд╡рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдореВрд╣реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдмрдВрдзрди (рд╕рджрд╕реНрдпрддрд╛) рд╕реНрд╡рдпрдВ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рд╕рджрд╕реНрдпрддрд╛ рдмрдврд╝ рд░рд╣реА рд╣реИ, рддреЛ рд╣рдо рд╕рдореВрд╣реЛрдВ рдХреЗ рднреАрддрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред

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


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


1550233610561


рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдЗрд╕ рджреЛрд╕реНрдд рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ:


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╕реНрдерд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рджреМрд░ рдХреА рдпрд╛рддреНрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЧрд▓рдд рджрд┐рд╢рд╛ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдЪрд╛рд╣рд┐рдП ...


рд╣реИрд╢ рдХреА рддрд╛рдХрдд


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


 function hash(val:string):number{/**/}// -,   const clients:RedisClient[] = []//   const uid = "some uid"//  //,            //      const selectedClient = clients[hash(uid) % clients.length] 

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


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


рдЧрд┐рддреБрдм рдкрд░ рднрдВрдбрд╛рд░ рднрд░ рджрд┐рдпрд╛ред


рдпрд╣ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЖрдП рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдорд░реЗ (рд╕рдВрд╡рд╛рдж) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рд╣реИред


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рд╕рдВрддреБрд╖реНрдЯ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


рдЖрдк рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ, рдФрд░ рд╡реЗ рдкрд░рд┐рдорд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрд╢реНрддреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╣рдордиреЗ рдЗрд╕ рдмрд╛рдд рдХреА рдкреВрд░реА рдЕрдирджреЗрдЦреА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреИрд╕реЗ рдареЛрд╕ рдпрд╛ рдХрдо рдареЛрд╕ рдкреИрдЯрд░реНрди рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред

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


All Articles