
рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ (RabbitMQ, Crossbar.io, Nats.io, Nginx, рдЖрджрд┐) рдХреА рддреБрд▓рдирд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЗ рдмреАрдЪ RPC рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдПред
рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд▓реНрдЯреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдЯреЗрд╕реНрдЯ рдЕрдиреБрдЪреНрдЫреЗрдж 2019-12-15 рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛рд╕рд╛рд░рд╛рдВрд╢ ред рдХреНрд▓рд╛рд╕рд┐рдХ рдПрдордХреНрдпреВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЖрд░рдкреАрд╕реА рдХреЙрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдХрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдШрд╛рд╡ (рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде) рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЙрд▓рдЯрд╛ рдЬрд╕рди рдПрдХ рд╣рд▓реНрдХрд╛ рдХрд╛рд░реНрдп рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ "рдИрдорд╛рдирджрд╛рд░" рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЖрд░рдкреАрд╕реА рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЧреНрд░рд╛рд╣рдХ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрдЯреЗ рдЬреМрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ), рдЬреЛ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди (RabbitMQ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 7 рдЧреБрдирд╛ рддреЗрдЬ) рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ http рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рд╣реЛрддрд╛ рд╣реИред , рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА http рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдВрд╕реЛрд▓ рд╕реЗ рдХрд░реНрд▓ рднреАред
1. рдЯреЗрд╕реНрдЯ
рд╕рднреА рдЙрдкрдХрд░рдг 3 рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВ:
- "рдбрд╛рдпрд░реЗрдХреНрдЯ рдХрдиреЗрдХреНрд╢рди" - рдЬрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдзреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢реНрд░рдорд┐рдХреЛрдВ / рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП "рд╕реНрдорд╛рд░реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рдд рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдВ (рдпрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЙрдХреНрд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ), рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрдо рд╕реЗ рдХрдо рд▓реЛрдб рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред
- "рдкреНрд░реЙрдХреНрд╕реА рдХрдиреЗрдХреНрд╢рди" - рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд╕реНрдХрд░рдг, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреНрд░рд╛рд╣рдХ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╢реНрд░рдорд┐рдХреЛрдВ / рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХреЛрдВ рдХреА рдУрд░ рд░рд╣рддреА рд╣реИрдВ - рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛, рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдХреЗ рдкрддреЗ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдг рдЕрдХреНрд╕рд░ рдЗрд╕ рдкреВрд░реЗ рдЦреЗрдд рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред
- "рдЗрдирд╡рд░реНрдЯреЗрдб рдХрдиреЗрдХреНрд╢рди" - рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╡рд░реНрдХрд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЧрд▓ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ (рдЬрд┐рд╕реЗ рдИрдПрд╕рдмреА рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рд╕рдмрд╕реЗ рд╕рд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрдЕрдкред
- рдореЗрдореЛрд░реА рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ `рдбреЙрдХрдЯрд░ рдЖрдБрдХрдбрд╝реЗ` рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
- "2-рдХреЛрд░" рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдмреНрд░реЗрдХрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 2 рдХреЛрд░ рддрдХ рд╕реАрдорд┐рдд рд╣реИ (рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдорд▓реНрдЯреА-рдХреЛрд░ рдЯреЗрд╕реНрдЯ)
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ред
2. рдПрдордХреНрдпреВ рдпрд╛ рдЖрд░рдкреАрд╕реА
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпреЗ 2 рд╕рдВрдЪрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрд▓рдЧ рд╣реИрдВ, рдХрднреА-рдХрднреА рдкрд╣рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реЗ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреЗ рдмрдЬрд╛рдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕реАрдорд╛рдУрдВ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- RPC (рд╕рдордХрд╛рд▓рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓) - рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдХреЛ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдереЛрдбрд╝реЗ рд╕рдордп рдореЗрдВ), рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ (рд╕рдордп-рд╕рдордп рдкрд░), рддреЛ рдЗрд╕ рдЙрддреНрддрд░ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ " рдЕрдиреБрд░реЛрдз тАЭ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдХреНрд╕рд░ рдПрдордХреНрдпреВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдмрдирд╛рддреЗ рд╣реИрдВ - рдЖрдк RPC рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП MQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред - рдПрдордХреНрдпреВ (рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓) - рдЬрдм рдЙрддреНрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рддреБрд░рдВрдд), рдЬрдм рдЖрдкрдХреЛ рдЕрдВрдд рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдпрд╛ рдмрд╕ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрддреНрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдордХреНрдпреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ
3. RabbitMQ рдкрд░ RPC
RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ RPC рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди MQ рд╕рд┐рд╕реНрдЯрдо рдХреА рддрд░рд╣ рдпрд╣ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд╣реЗрдб рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рдЙрддреНрдкрд╛рджрдХ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдЖрд░рдкреАрд╕реА рдХреЗ рд▓рд┐рдП "рдХрддрд╛рд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЪреИрдирд▓реЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЧрд┐рд░ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдЗрд╕ рд╕рдордп рд╕рднреА рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗ рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рд╡реНрдпрд░реНрде рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдерд╛ред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рднрд▓реЗ рд╣реА рдЧреНрд░рд╛рд╣рдХ рдкрд╣рд▓реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реЛ, рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЪреИрдирд▓ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╡рд╣ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рдЬрд╡рд╛рдмреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ RabbitMQ рдореЗрдВ рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рдЪреИрдирд▓ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕реА рд╕рдордп рдкреНрд░рджрд░реНрд╢рди рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рдкреЛрд░реНрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЬреАрд╡рд┐рдд рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЪреИрдирд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЖрд░рдкреАрд╕реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
4. рдЙрд▓рдЯрд╛ рдЬрд╕рди
рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдордХреНрдпреВ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реЗ рдЬреЙрдм рд╕рд░реНрд╡рд░ (рдЖрд░рдкреАрд╕реА) рдирд╣реАрдВ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЧрд┐рдпрд░рдореИрди / рдХреНрд░реЙрд╕рдмрд╛рд░.рдЖрдИрдУ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдХреНрд╕рд░ рдЖрд░рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдПрдордХреНрдпреВ рд╕рд┐рд╕реНрдЯрдо рд▓реЗрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП,
рдЙрд▓рдЯрд╛ JSON (iJson) рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдПрдХ HTTP рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдЬрд╣рд╛рдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╡рд░реНрдХрд░реНрд╕ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ: [рдХреНрд▓рд╛рдЗрдВрдЯ] -> [рдЗрдиреНрд╡рд░реНрдЯреЗрдб Json] <- [рдХрд╛рд░реНрдпрдХрд░реНрддрд╛], рдЬреЛ C / C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдкреЛрд▓, рд╕реНрдЯреЗрдЯ рдорд╢реАрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЬрд╕рди рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкрд╛рд░реНрд╕рд░, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдмрдЬрд╛рдп рд╕реНрд▓рд╛рдЗрд╕ *, рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рдЖрджрд┐ред
рдЦрд░рдЧреЛрд╢реЛрдВ рдкрд░ рдЙрд▓рдЯреЗ JSON рдХреЗ рдлрд╛рдпрджреЗ:- рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЪреИрдирд▓реЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ
- рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛рдЯрддрд╛ рд╣реИ рддреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рддреБрд░рдВрдд рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА (рдПрдХ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде)
- рдЖрд╕рд╛рди рдПрдкреАрдЖрдИ - рдмрд╕ рдПрдХ http рдЕрдиреБрд░реЛрдз (рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдФрд░ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ)
- рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╛рджрджрд╛рд╢реНрдд рдХрдо рдХрд░рддрд╛ рд╣реИ
- рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЖрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрддрд╛рд░ рдореЗрдВ рдХрдИ рд╢реНрд░рдорд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)
рдЕрдиреНрдп рдЙрд▓рдЯреЗ Json рдЬрд╛рдирдХрд╛рд░реА- рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рд╕рд┐рд░реНрдл рдирд╛рдо рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реБрдЭрд╛ рд╕рдХрддрд╛ рд╣реИ)
- рдЖрдИрдбреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЬреАрд╡рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЙрд▓рдЯрд╛ рдЬрд╕рди рдмрд╕ рдЧреНрд░рд╛рд╣рдХ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╕реАрдзреЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
- рдХрдИ рдХрдорд╛рдВрдб (рдЪреИрдирд▓) рдХреЛ "рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм" рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛ рдПрдХ рдкреИрдЯрд░реНрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб / *) рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВред
- рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреЗрд╡рд▓ 2.6 рдПрдордмреА (рдкрддрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг) рд╣реИ
- рдХрд░реНрдиреЗрд▓ рдЙрд▓рдЯрд╛ Json рдХреЗрд╡рд▓ ~ 1400 рд▓рд╛рдЗрдиреЛрдВ рдХреА рдХреЛрдб (v0.3), рдХрдо рдХреЛрдб - рдХрдо рдХреАрдбрд╝реЗ;)
- рдЙрд▓рдЯрд╛ JSON рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп (рдирд┐рдХрд╛рдп) рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рд╣реИ рдЙрд╕реЗ рднреЗрдЬрддрд╛ рд╣реИред
5. 3 рдорд┐рдирдЯ рдореЗрдВ рдЙрд▓рдЯреЗ Json рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ
рдЕрдЧрд░ рдЖрдкрдиреЗ
рдбреЛрдХрд░ рдФрд░
рдХрд░реНрд▓ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрднреА рдЙрд▓реНрдЯреЗ Json рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЪрд┐рддреНрд░ рд╕реЗ рд╡рд┐рд╡рд░рдг:
1) рдкреЛрд░реНрдЯ 8001 рдкрд░
рдЙрд▓реНрдЯреЗ рдЬреЛрдВрд╕ рдХреА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛, 47 рдЖрд╡рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐:
$ docker run -it -p 8001:8001 lega911/ijson --log 47
2) "рдХреИрд▓реНрдХ / рдпреЛрдЧ" рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рдФрд░ рдХрд╛рд░реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ "рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ", рдЕрд░реНрдерд╛рдд - рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
$ curl localhost/calc/sum -H 'type: get'
3) рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдЖрд░рдкреАрд╕реА рдХреИрд▓реНрдХ / рд░рд╛рд╢рд┐ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ:
$ curl localhost/calc/sum -d '{"id": 15, "data": "2+3"}'
4) рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдХрд╛рд░реНрдп {{"id": 15, "рдбреЗрдЯрд╛": "2 + 3"} рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ - рдбреЗрдЯрд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИ, рдЕрдм рдЖрдкрдХреЛ рдЙрд╕реА рдЖрдИрдбреА рдкрд░ рд░рд┐рдЬрд▓реНрдЯ рднреЗрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЯрд╛рдЗрдк рдХрд░реЗрдВ "рдкрд░рд┐рдгрд╛рдо":
$ curl localhost -H 'type: result' -d '{"id": 15, "result": 5}'
... рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
`{"id": 15, "result": 5}`
5.1ред JsonRPC
JsonRPC 2 рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрд╢рд┐рд╖реНрдЯрддрд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ (url / rpc / call):
{"jsonrpc": "2.0", "method": "calc/sum", "params": [42, 23], "id": 1}
рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ:
{"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found"}, "id": null}
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдорд╛рдВрдЧ рд╣реИ, рддреЛ JsonRPC рд╕рдорд░реНрдерди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
5.2ред рдЕрдЬрдЧрд░ рдЧреНрд░рд╛рд╣рдХ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЙрджрд╛рд╣рд░рдг
рдФрд░ рдпрд╣рд╛рдВ рдЖрдк "рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЛрдб" рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред
6. рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░
- Crossbar.io : рдЕрдЬрдЧрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрддрдирд╛ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИ рдФрд░ GIL рдХреЗ рдХрд╛рд░рдг рдХрдИ рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рд░реИрдмрд┐рдЯрдореНрдпреВрдХреНрдпреВ : рдПрдордкреАрд╕реА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЖрд░рдкреАрд╕реА, рдЬреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд╣реЗрдб рд▓рдЧрд╛рддрд╛ рд╣реИред рдмрдврд╝рддреЗ рднрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рддреАрд╡реНрд░ рдЧрд┐рд░рд╛рд╡рдЯ (рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ)ред
- рдирдЯ : рдПрдХ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрд╡рд░ рдЬрд╕рди рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрд╡рд░ MQ рдкрд░ RPC рдХреА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реЛрдВрдЧреАред
- рдЙрд▓рдЯрд╛ рдЬрд╕рди : рдиреЗрдЯрд╡рд░реНрдХ рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ (рдпрд╛рдиреА рд╡рд┐рднрд┐рдиреНрди рдХреЛрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдВ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдХреБрд▓ рдореЗрдВ рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ), рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдореЗрдореЛрд░реА рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдирдЧрдиреЗрдХреНрд╕ : рдЬрдм рдкреНрд░реЙрдХреНрд╕реА-рдкрд╛рд╕, рдкреНрд░рджрд░реНрд╢рди рдЬрд▓реНрджреА рд╕реЗ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдХреА-рд▓рд┐рд╡рд┐рдВрдЧ рдореЛрдб рдЪрд╛рд▓реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ), рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХрдо рд╕рдордп рдореЗрдВ рдХрдИ рд╕реЙрдХреЗрдЯ рдХреЛ рдЦреЛрд▓рдиреЗ / рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ (рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред
- рдЯреНрд░реИрдлрд┐рдХ : рдмрд╣реБрдд рд╣реА рдкреНрд░рдЪрдВрдб , рдЧрддрд┐ рдореЗрдВ рд╕реАрдкреАрдпреВ рдХреЗ 600% рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдЧрддрд┐ рдореЗрдВ nginx рд╕реЗ рд╣реАрди
- uvloop ( asyncio рдХреЗ рддрд╣рдд) - рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ RPC рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ C / C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛, ZeroMQ рд╕реЗ рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рд╣реИ
- ZeroMQ - рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЦреБрдж рдкрд╛рдЗрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░реАрдХреНрд╖рдг 100% рд╕реЗ рдЕрдзрд┐рдХ рд╕реАрдкреАрдпреВ рдХреА рдЦрдкрдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬреАрд░реЛрдореЗрдХ рдЦреБрдж рд╣реА CIL ++ рдореЗрдВ рдмрд┐рдирд╛ GIL рдХреИрдкреНрдЪрд░ рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл, рдЕрдЧрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдл a + b рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг RPC рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рдЖрдПрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рднреА рдХреЛрд░ рдорд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред
- ZeroRPC : ZeroMQ рдкрд░ рдПрдХ рд╣рд▓реНрдХреЗ рдЖрд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, ZeroMQ рд╕реЗ 95% рдкреНрд░рджрд░реНрд╢рди рдЦреЛ рдЧрдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рд╣рд▓реНрдХрд╛ рдирд╣реАрдВ рд╣реИред
- рдЬреАрдЖрд░рдкреАрд╕реА : рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкрд╛рдпрдерди рдХреЛрдб рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкреНрд░реЛрд╕реЗрд╕рд░ рднрд╛рд░реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рд╕реАрдкреАрдпреВ рдкрд░ рд░рд╣рддрд╛ рд╣реИ, рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
- 2-рдХреЛрд░ рдФрд░ рдорд▓реНрдЯреА-рдХреЛрд░ рдкрд░реАрдХреНрд╖рдг, рдорд▓реНрдЯреА-рдХреЛрд░ рдореЗрдВ рдХреБрдЫ рд╕рдВрдХреЗрддрдХ рдХрдо рд╣реЛ рдЧрдП, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдЯреЗрд╕реНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реАрдкреАрдпреВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рджреВрд╕рд░реА рдУрд░, рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдиреЗ рд╢рд╛рдирджрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рджрд┐рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд┐рдХ, рдЬрд┐рд╕рдиреЗ 600% рд╕реАрдкреАрдпреВ рдЦрд╛рдпрд╛
7. рдирд┐рд╖реНрдХрд░реНрд╖
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝реА рдХрдВрдкрдиреА рдФрд░ рдХрдИ рдХрд░реНрдордЪрд╛рд░реА рд╣реИрдВ, рддреЛ рдЖрдк рдЦреБрдж рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЗ рдмреАрдЪ рд╕реАрдзреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЬрдЯрд┐рд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рднрд╛рд╡реА рд╕рдВрдЪрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЫреЛрдЯреА рдХрдВрдкрдирд┐рдпреЛрдВ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкреНрд╕ рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯреА рдЯреАрдо рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрд▓реНрдЯреЗ рдЬрд╕рди рд╕рдордп рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрд▓реНрдЯреЗ рдЬреЛрдВрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрдмрд╕реВрдм, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдФрд░ рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдпрджрд┐ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдпрд╛ рдХреЗрд╡рд▓ рд▓реЗрдЦрдХ рдХреА рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
рдЬреАрдердм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдзрдиреНрдпрд╡рд╛рджред
рдкреБрдирд╢реНрдЪ:
- рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЗрдирд╡рд░реНрдЯреЗрдб рдЬреЛрдВрд╕ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рдереЗ
- рдЙрд▓рдЯреЗ рдЬреЛрдВрд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рднреА рд▓рд┐рдЦрд╛ рдерд╛ 1. рдЕрдЬрдЧрд░ + рдЕрд╕рд┐рдирд╕рд┐рдпреЛ + рдЙрд╡рд▓реЛрдк, 2. рдЧреЛрдЖрдВрдЧ рдореЗрдВ
- рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЧрдИред
- "рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдмрдЬрд╛рдп рд╕реНрд▓рд╛рдЗрд╕" - рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм http / json рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреЙрдкреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЛрдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЖрд╡рдВрдЯрди рдФрд░ рдореЗрдореЛрд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рд╣реИред
- рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ - рдЕрдЬрдЧрд░ рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИ, pycurl рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдЗрд╕ рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдпрд╣рд╛рдВ рд╣реИ
- рдпрд╣рд╛рдВ рдХреЗ рд╕реВрддреНрд░