рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдкрд░рддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 5 рд╕реЗ 2 рддрдХ рдХрдо рдХрд░реЗрдВ


рдХрдИ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рджрд┐рди рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдорд▓реНрдЯреА-рд▓реЗрдпрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рднрд╛рд░реА рдкрд░рддреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреАред рдпрд╣ рдПрдХ рдордЬреЗрджрд╛рд░ рдЕрдиреБрднрд╡ рдерд╛ рдЬреЛ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореЗрд░рд╛ рдХреЛрдб рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ: github.com/tarantool/nginx_upstream_module ред рдЖрдк рдЗрд╕реЗ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕ рд▓рд┐рдВрдХ рд╕реЗ рдбреЙрдХрд░ рдЗрдореЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: hub.docker.com/r/tarantool/tarantool-nginx ред

рдПрдЬреЗрдВрдбреЗ рдореЗрдВ:

  • рдкрд░рд┐рдЪрдп рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрддред
  • рдЗрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
  • рдкреНрд░рджрд░реНрд╢рди рд░реЗрдЯрд┐рдВрдЧред
  • рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХред

рдкрд░рд┐рдЪрдп рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд




рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдорд╛рдирдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд╡рд░реНрдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз nginx рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрд╡рд░ рдкрд░ рдЖрддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рдкрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред

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

рдЗрд╕реЗ рдкрд░рддреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ:

рдкрд╣рд▓реА рдкрд░рдд - рдирдЧреНрдиреЗрдХреНрд╕ред
2 рдкрд░рдд - рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрд╡рд░ред
3 рдкрд░рдд - рдХреИрд╢ред
4 рдкрд░рдд - рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░реЙрдХреНрд╕реАред рдпрд╣ рдкреНрд░реЙрдХреНрд╕реА рдЧрд▓рддреА рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░рдВрддрд░ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
5 рд╡реАрдВ рдкрд░рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рд╣реИред

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



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



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

рдЖрдк рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдФрд░ рдиреЗрдЧрдиреЗрдХреНрд╕ рдореЙрдбреНрдпреВрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд▓рд┐рдВрдХ рдХрд╛ рднреА рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЖрдкрдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдбреЙрдХрд░ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ docker pull tarantool/tarantool-nginx )ред

рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ: hub.docker.com/r/tarantool/tarantool

рдЯрд╛рд░рдирдЯреВрд▓ NginX рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЙрдбреНрдпреВрд▓

рдмрд╛рдЗрдирд░реА рдкреИрдХреЗрдЬ: рдЯрд╛рд░реЗрдВрдЯреВрд▓ - рдбрд╛рдЙрдирд▓реЛрдб

рд╕реНрд░реЛрдд рдХреЛрдб: рдЯрд╛рд░реЗрдВрдЯреВрд▓

tarantool / nginx_upstream_module

рдЗрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ


рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг nginx.conf рдлрд╝рд╛рдЗрд▓ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрдкрд╕реНрдЯреНрд░реАрдо рдирдЧрдиреЗрдХреНрд╕ рд╣реИред рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ tnt_pass , рдЬреЛ рд╕реАрдзреЗ nginx рдХреЛ tnt_pass рд╣реИ рдХрд┐ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдХреЛ рдЕрдВрджрд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред

nginx-tnt.conf
 http { # upstream upstream tnt { server 127.0.0.1:3301; keepalive 1000; } server { listen 8081; # gateway location /api/do { tnt_pass_http_request parse_args; tnt_pass tnt; } } } 

рдпрд╣рд╛рдБ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╣реИрдВ:

nginx.org/en/docs/http/ngx_http_upstream_module.html
github.com/tarantool/nginx_upstream_module/blob/master/README.md

рдирдЧреАрдирдХреНрд╕ рдФрд░ рдЯрд╛рд░рдирдЯреВрд▓ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рдХреНрдпрд╛? рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ "app.lua" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ред

рдЯрд╛рд░рдирдЯреБрд▓ рдкреНрд░рд▓реЗрдЦрди рдХреА рдПрдХ рдХрдбрд╝реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: tarantool.io/en/doc/1.9/book/box/data_model/#index

 -- Bootstrap Tarantool box.cfg { listen='*:3301' } -- Grants box.once('grants', function() box.schema.user.grant('guest', 'read,write,execute', 'universe') end) -- Global variable hello_str = 'Hello' -- function function api(http_request) local str = hello_str if http_request.method == 'GET' then str = 'Goodbye' end return 'first', 2, { str .. 'world!' }, http_request.args end 

рдЕрдм Lua рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╣рдорд╛рд░рд╛ Box.cfg {} рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдХреЛ рдкреЛрд░реНрдЯ 3301 рдкрд░ рд╕реБрдирдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

Box.once рдПрдХ рдмрд╛рд░ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдХреЛ рдХрд╣рддрд╛ рд╣реИред

function api () рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдФрд░ рдЗрд╕реЗ "app.lua" рдирд╛рдо рджрд┐рдпрд╛ред рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЯрд╛рд░реЗрдВрдЯреВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

$> tarantool app.lua

рд╣рдо рдПрдХ GET рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП "wget" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, "wget" рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ "рдмрд┐рд▓реНрд▓реА" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

 $ wget '0.0.0.0:8081/api/do?arg_1=1&arg_2=2' $ cat do* { тАЬidтАЭ:0, # тАФ unique identifier of the request тАЬresultтАЭ: [ # тАФ is what our Tarantool function returns [тАЬfirstтАЭ], [2], [{ тАЬrequestтАЭ:{тАЬarg_2тАЭ:тАЭ2",тАЭarg_1":тАЭ1"} тАЬ1тАЭ:тАЭGoodbye world!тАЭ }] ]} 

рдкреНрд░рджрд░реНрд╢рди рд░реЗрдЯрд┐рдВрдЧ


рдореВрд▓реНрдпрд╛рдВрдХрди рдЙрддреНрдкрд╛рджрди рд╕реЗ рдбреЗрдЯрд╛ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрдирдкреБрдЯ рдПрдХ рдмрдбрд╝реА JSON рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдРрд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдФрд╕рдд рдЖрдХрд╛рд░ 2 Kb рд╣реИред рд╕рд┐рдВрдЧрд▓ рд╕рд░реНрд╡рд░, 4-рдХреЛрд░ рд╕реАрдкреАрдпреВ, 90 рдЬреАрдмреА рд░реИрдо, рдУрдПрд╕ рдЙрдмрдВрдЯреВ 14.04.1 рдПрд▓рдЯреАрдПрд╕ред

рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдПрдХ nginx рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░рд╛рдЙрдб-рд░реЙрдмрд┐рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдПрдХ рдмреИрд▓реЗрдВрд╕рд░ рд╣реИред рдпрд╣ рджреЛ рдЯрд╛рд░рдирдЯреВрд▓ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рд▓реЛрдб рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреИрдирд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпреЗ рд░реЗрдЦрд╛рдВрдХрди рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд░реАрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдКрдкрд░реА рдЧреНрд░рд╛рдл рджреЗрд░реА (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ) рджрд┐рдЦрд╛рддрд╛ рд╣реИред



рдФрд░ рдпреЗ рдЧреНрд░рд╛рдл рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдКрдкрд░реА рдЧреНрд░рд╛рдл рджреЗрд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИ (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ)



рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА!

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ REST рдФрд░ JSON RPC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рд▓реЗрдЦ рдХрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг: hackernoon.com/shrink-the-number-of-tiers-in-a-multitier-Healthecture-from-5-to-2-c59b7bf46c86

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


All Articles