Infa JS рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ Node.js рдФрд░ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рд░ рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдЬрд╛рдирдмреВрдЭрдХрд░ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо (рд╡реЗрдм-рд╕рд░реНрд╡рд░) рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреА рд╣рд╛рд▓рд┐рдпрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░рд┐рдпрд╛рдВ рд╣реИрдВред
Node.js. рдХреИрд╕реЗ рд╣реИ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ: рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ Node.js. рдореЗрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ GitHub рдкрд░ рдХрд╣реАрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╕рдордХрд╛рд▓рд┐рдХ рдХреЛрдб рд╕реЗ рдХреНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ?

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рдЕрдореВрд░реНрдд рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдПрдХ рд░рд╛рдЙрдЯрд░ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕ рд░рд╛рдЙрдЯрд░ рдкрд░ рдПрдХ рдЖрд╡рдХ рдЕрдиреБрд░реЛрдз рдЖрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЖрдЧреЗ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реЗрдВ, рдФрд░ рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред рддрджрдиреБрд╕рд╛рд░, рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп, рд╕рд░реНрд╡рд░ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЖрд╡рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рди рд╣реА рдпрд╣ рдЕрдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХрд░реЗрдЧрд╛ред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ?
- рдмрд╣реБ рд╕реВрддреНрд░рдг
- рдЧреИрд░ рдЕрд╡рд░реЛрдзрдХ I / O
рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк (рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ) рдХреЗ рд▓рд┐рдП Apache рдмрдирд╛рдо Nginx рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред

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

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

рдЖрд░реЗрдЦ рдХреЗ рдКрдкрд░реА рднрд╛рдЧ рдореЗрдВ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдЗрд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рджреЗрдВ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╡реЗрдВрдЯ рдбреЗрдореВрд▓рд┐рдкреНрд▓реЗрдХреНрд╕рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕рдВрд╕рд╛рдзрди рдпрд╣рд╛рдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ), рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдХреЙрд▓рдмреИрдХред рдИрд╡реЗрдВрдЯ рдбреЗрдореВрд▓рд┐рдкреНрд▓реЗрдХреНрд╕рд░ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реАрдзреЗ рдЖрд╡реЗрджрди рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИ - рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдЬрдм рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕ рдХрддрд╛рд░ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдмреИрдХ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЖрдЧреЗ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ) рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз I / O рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, Node.js рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ (рдЖрдорддреМрд░ рдкрд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП) рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ I / O рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рдЬрдм рдЕрд╡рд╕рд░ рдкреИрджрд╛ рд╣реБрдЖ, рд░рдпрд╛рди рдбрд╛рд╣рд▓, рдПрдХ Node.js рдбреЗрд╡рд▓рдкрд░, рдиреЗрдЧреНрдиреЗрдХреНрд╕ рдЕрдиреБрднрд╡ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛, рдЬрд┐рд╕рдиреЗ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ I / O рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЪ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдереА, рд╡рд╣ рдПрдХ рдЗрд╡реЗрдВрдЯ рдбреАрдореВрд▓рд┐рдкреНрд▓реЗрдХреНрд╕рд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рджреЛрд╕реНрддреЛрдВ рдХреЛ "рдордВрдЪ рдмрдирд╛рдиреЗ" рдХреЗ рд▓рд┐рдП рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдбреЗрдореВрд▓рд┐рдкреНрд▓реЗрдХреНрд╕рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЖрд╡рд░рдг рд▓рд┐рдЦрдирд╛ рдерд╛, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рд▓рд┐рдмрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛ред рдпрд╣ рд╕реАред рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдЗрди рдЗрд╡реЗрдВрдЯ рдбреЗрдореВрд▓рд┐рдкреНрд▓реЗрдХреНрд╕рд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рд▓рд┐рдмреБрд╡ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реБрд╡рд┐рдзрд╛рдПрдБ

рд▓рд┐рдирдХреНрд╕ рдореЗрдВ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рд╕рдордп, рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдСрдкрд░реЗрд╢рди рдЕрд╡рд░реБрджреНрдз рд╣реИрдВред рдпрд╣реА рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдареАрдХ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдЕрднреА рднреА рдЕрд╡рд░реБрджреНрдз рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ libuv рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз I / O рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред 4 рдзрд╛рдЧреЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпрджрд┐ рд╣рдо рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдХреБрдЫ 4 рднрд╛рд░реА рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдЕрдкрдиреЗ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрдВрдЧреЗ (рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╣реИ, рдЕрдиреНрдп рдУрдПрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред

рдЗрд╕ рд╕реНрд▓рд╛рдЗрдб рдкрд░, рд╣рдо Node.js. рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рджреЗрдЦрддреЗ рд╣реИрдВред рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реА рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд▓рд┐рдмрд╡ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Google V8 рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ Node.js рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рд╕рдм рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА, Node.js рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ 4 рдШрдЯрдХ Node.js. рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдИрд╡реЗрдВрдЯ рд▓реВрдк рддрдВрддреНрд░ рд╕реНрд╡рдпрдВ рд▓рд┐рдмрд╛рд╡ рдореЗрдВ рд╣реИред
рдШрдЯрдирд╛ рдкрд╛рд╢

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

рд╡рд╣рд╛рдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдПрдХ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдПрдХ рдИрд╡реЗрдВрдЯ рд▓реВрдк рд╣реИ, рдФрд░ рдпрд╣ рдЕрдирдВрдд рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреБрдЫ рдХрд░рдирд╛ рд╣реИред Node.js рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЛ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред (рд╕реНрд▓рд╛рдЗрдб 8 рд╕реЗ рдЪрд░рдг 9 рд╕реНрд▓рд╛рдЗрдб рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред)

рдЪрд░рдг 1 - рдЯрд╛рдЗрдорд░
рдпрд╣ рдЪрд░рдг рд╕реАрдзреЗ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ uv_update_time рдХреЗ рд╕рд╛рде) - рдпрд╣рд╛рдВ рд╡рд╣ рд╕рдордп рдЬрдм рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдмрд╕ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
uv_run_timers - рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рдЕрдЧрд▓реА рдЯрд╛рдЗрдорд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдЯреИрдХ рд╣реИ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЯрд╛рдЗрдорд░ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛, рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХрддрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдЯрд╛рдЗрдорд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдИрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдХрдо рд╕рдордп рд╡рд╛рд▓рд╛ рдЯрд╛рдЗрдорд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЗрд╕ рдЯрд╛рдЗрдорд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ Node.js рдореЗрдВ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдФрд░ рд╡рд╣рд╛рдБ рд╕реЗрдЯ рдЗрдиреНрдЯрд░рд╡рд▓ рд╣реИред рд▓рд┐рдмреНрдпреВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдЪреАрдЬ рд╣реИ, рдХреЗрд╡рд▓ рд╕реЗрдЯрдЗрдВрдЯрд░рд╡рд▓ рдореЗрдВ рдЕрднреА рднреА рдПрдХ рджреЛрд╣рд░рд╛рд╡ рдЭрдВрдбрд╛ рд╣реИред
рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдЗрд╕ рдЯрд╛рдЗрдорд░ рдореЗрдВ рд░рд┐рдкреАрдЯ рдлрд╝реНрд▓реИрдЧ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЗрд╡реЗрдВрдЯ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрд╕реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪрд░рдг 2 - I / O-callbacks
рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд░реЗрдЦ рдкрд░ рд▓реМрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЬрдм рдЗрд╡реЗрдВрдЯ рдбреАрдореВрд▓рд┐рдкреНрд▓реЗрдХреНрд╕рд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл I / O-callback рд╕реНрдЯреЗрдЬ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреЙрд▓рдмреИрдХ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдпреЗ рдареАрдХ рд╡рд╣реА рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрди рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж рдпрд╛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╡реЗ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╕реНрд▓рд╛рдЗрдб 9 рдореЗрдВ, I / O-callback рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд▓рд╛рдЗрди 367 рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ: ran_pending = uv_run_pending (рд▓реВрдк)ред
3 рдЪрд░рдг - рдкреНрд░рддреАрдХреНрд╖рд╛, рддреИрдпрд╛рд░реА
рдпреЗ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдСрдкрд░реЗрд╢рди рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЪрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗред рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ редnextTick, рдЗрд╕рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛, рддреИрдпрд╛рд░реА рдЪрд░рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред process.nextTick рдХреЛ рдореМрдЬреВрджрд╛ рдЪрд░рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, process.nextTick рдмрд┐рд▓реНрдХреБрд▓ рдХрд┐рд╕реА рднреА рдЪрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ "рдкреНрд░рддреАрдХреНрд╖рд╛, рддреИрдпрд╛рд░реА" рдЪрд░рдг рдореЗрдВ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддреИрдпрд╛рд░ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИред
рд╕реНрд▓рд╛рдЗрдб 9 рдкрд░, рд▓рд╛рдЗрдиреЗрдВ 368, 369 рдЗрд╕ рдЪрд░рдг рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ:
uv_run_idle (рд▓реВрдк) - рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ;
uv_run_prepare (рд▓реВрдк) - рддреИрдпрд╛рд░реАред
4 рдЪрд░рдг - рд╕рд░реНрд╡реЗрдХреНрд╖рдг
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рд╕рднреА рдХреЛрдб рдЬрд┐рд╕реЗ рд╣рдо рдЬреЗрдПрд╕ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдЕрдиреБрд░реЛрдз рдпрд╣рд╛рдВ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ Node.js рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рднрд╛рд░реА рдЧрдгрдирд╛ рдСрдкрд░реЗрд╢рди рдпрд╣рд╛рдБ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдмрд╕ рд░реБрдХ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред
рд╕реНрд▓рд╛рдЗрдб 9 рдкрд░, рдорддрджрд╛рди рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЗрди 370: uv_io_poll (рд▓реВрдк, рдЯрд╛рдЗрдордЖрдЙрдЯ) рдкрд░ рд╣реИред
5 рдЪрд░рдг - рдЬрд╛рдВрдЪ
Node.js рдореЗрдВ рдПрдХ рд╕реЗрдЯрд┐рдорд┐рдЯреЗрдб рдЯрд╛рдЗрдорд░ рд╣реИ, рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдЗрд╕рдХреЗ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ, рдпрд╣ рд▓рд╛рдЗрди 371: uv_run_check (рд▓реВрдк) рд╣реИред
6 рдЪрд░рдг (рдЕрдВрддрд┐рдо) - рдХреЙрд▓рдмреИрдХ рдИрд╡реЗрдВрдЯ рдмрдВрдж рдХрд░реЗрдВ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЛ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдЗрд╕ рдШрдЯрдирд╛ рдХрд╛ рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ, рдпрд╣ рд▓рд╛рдЗрди 372: uv_run_closing_handless (рд▓реВрдк) рд╣реИред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЗрд╡реЗрдВрдЯ рд▓реВрдк Node.js рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ

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

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рд╛рдЗрди рдореЗрдВ рдЯрд╛рдЗрдорд░ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рдХреЛрдИ I / O-callbacks рднреА рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рддреБрд░рдВрдд рдорддрджрд╛рди рдХреЗ рдЪрд░рдг рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛрдб рдХреЛ рдорддрджрд╛рди рдХреЗ рдЪрд░рдг рдореЗрдВ рд╢реБрд░реВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╣рдо script_start рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, setInterval рдХреЛ рдЯрд╛рдЗрдорд░ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред setTimeout рдХреЛ рдЯрд╛рдЗрдорд░ рдХрддрд╛рд░ рдореЗрдВ рднреА рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╡рд╛рджреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рд╡рд╛рджрд╛ 1 рдФрд░ рдлрд┐рд░ рд╡рд╛рджрд╛ 2ред
рдЕрдЧрд▓реЗ рдЯрд┐рдХ (рдИрд╡реЗрдВрдЯ рд▓реВрдк) рдореЗрдВ, рд╣рдо рдЯрд╛рдЗрдорд░ рдЪрд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рдХрддрд╛рд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 2 рдЯрд╛рдЗрдорд░ рд╣реИрдВ: setInterval рдФрд░ setTimeoutред рд╡реЗ рджреЛрдиреЛрдВ рдХреНрд░рдорд╢рдГ 0 рд╡рд┐рд▓рдВрдмрд┐рдд рд╣реИрдВ, рд╡реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред
SetInterval рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ), рдлрд┐рд░ setTimeout 1. рдХреЛрдИ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз I / O рдХреЙрд▓рдмреИрдХ рдирд╣реАрдВ рд╣реИрдВ, рдлрд┐рд░ рдПрдХ рдорддрджрд╛рди рдЪрд░рдг рд╣реЛрдЧрд╛, рд╡рд╛рджрд╛ 3 рдФрд░ рд╡рд╛рджрд╛ 4 рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдЯрд╛рдЗрдорд░ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЯрд┐рдХ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЕрдЧрд▓реЗ рдЯрд┐рдХ рдкрд░ рдЬрд╛рдПрдВред рдлрд┐рд░ рд╕реЗ рдЯрд╛рдЗрдорд░ рд╣реИрдВ, рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗрдЯрдЗрдВрдЯрд░рд╡рд▓ рдФрд░ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ 2 рд╣реИ, рдлрд┐рд░ 5 рд╡рд╛рджрд╛ рдФрд░ рд╡рд╛рджрд╛ 6 рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдФрд░ рдЕрдм рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдереНрд░реЗрдбрд┐рдВрдЧ - рдХрд╛рд░реНрдпрдХрд░реНрддрд╛_рдереНрд░реЗрдбреНрд╕ рдореЙрдбреНрдпреВрд▓
рдереНрд░реЗрдбрд┐рдВрдЧ 10.5 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛_рдереНрд░реЗрдбреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП Node.js рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реБрдЖ рд╣реИред рдФрд░ 10 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ - рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ-рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ 11 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред
Node.js рдореЗрдВ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЙрдбреНрдпреВрд▓ рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдереНрд░реЗрдб рдирд╣реАрдВ рдмрдврд╝рд╛рддрд╛ рд╣реИ - рдпрд╣ рдХрдИ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдорд╛рдкрдиреАрдпрддрд╛ рдЗрд╕рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп рд╣реИред

1 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИ:
1 Node.js рдкреНрд░рдХреНрд░рд┐рдпрд╛, 1 рдереНрд░реЗрдб, 1 рдЗрд╡реЗрдВрдЯ рд▓реВрдк, 1 V8 рдЗрдВрдЬрди рдФрд░ libuvред
рдпрджрд┐ рд╣рдо X рдереНрд░реЗрдб рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
1 рдиреЛрдб.рдЬреЗрдПрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдПрдХреНрд╕ рдереНрд░реЗрдбреНрд╕, рдПрдХреНрд╕ рдЗрд╡реЗрдВрдЯ рд▓реВрдкреНрд╕, рдПрдХреНрд╕ рд╡реА 8 рдЗрдВрдЬрди рдФрд░ рдПрдХреНрд╕ рд▓рд┐рдмрд╛рд╡ред
рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ

рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВред

рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡реЗрдм рд╕рд░реНрд╡рд░ред 2 рдорд╛рд░реНрдЧ рд╣реИрдВ - / рдФрд░ / рд╡рд╕рд╛-рд╕рдВрдЪрд╛рд▓рдиред
рд╡рд╣рд╛рдБ рднреА рдПрдХ рдЙрддреНрдкрдиреНрдиRRArr () рдлрд╝рдВрдХреНрд╢рди рд╣реИред рд╡рд╣ рд╕рд░рдгреА рдХреЛ рджреЛ рдорд┐рд▓рд┐рдпрди рд░рд┐рдХреЙрд░реНрдбреНрд╕ рд╕реЗ рднрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо / рд╡рд╕рд╛-рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЙрд╕ рд╕рдордп рдЬрдм рд╕рд░рдгреА рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдорд╛рд░реНрдЧ / рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд╡рд╛рдм рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕рд░рдгреА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рд┐рдВрдЧрд▓ рдереНрд░реЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЕрдм рд╣рдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛_рдереНрд░реЗрдбреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

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

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

рдореИрдВ рдЙрдкрдпреЛрдЧреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдФрд░ рд░рдпрд╛рди рдбрд╛рд╣рд▓ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рд▓рд┐рдВрдХ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╡реЗрдВрдЯ рд▓реВрдк (рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк) рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред
рдШрдЯрдирд╛ рдкрд╛рд╢
- Node.js рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж
- https://blog.risingstack.com/node-js-at-scale-understanding-node-js-event-loop/
- https://habr.com/ru/post/336498/
Worker_threads
- https://nodejs.org/api/worker_threads.html#worker_threads_worker_workerdata - API
- https://habr.com/ru/company/ruvds/blog/415659/
- https://nodesource.com/blog/worker-threads-nodejs/
- рд░рдпрд╛рди рдбрд╛рд╣рд▓ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ (рд╡реАрдкреАрдПрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рд╕реЗ рдореВрд▓ рд╕реНрд▓рд╛рдЗрдбреНрд╕