рдиреЗрдЯрд╡рд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдлреНрд░реЗрдорд╡рд░реНрдХрдХреЛ рд░рд┐рд▓реАрдЬ ErgoFramework 2.2

ErgoFramework 2.2 рдХреЛ рдЕрд░реНрдХреЛ рд╡рд┐рдореЛрдЪрди рднрдпреЛ, рдкреВрд░реНрдг Erlang рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреНрдпрд╛рдХ рд░ рдпрд╕рдХреЛ OTP рдкреБрд╕реНрддрдХрд╛рд▓рдп Go рднрд╛рд╖рд╛рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджреИред рдврд╛рдБрдЪрд╛рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓рд╛рдИ рдПрд░реНрд▓рд╛рдЩреНрдХреЛ рд╕рдВрд╕рд╛рд░рдмрд╛рдЯ рддрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рдбрд┐рдЬрд╛рдЗрди рдврд╛рдБрдЪрд╛рд╣рд░реВ gen.Application, gen.Supervisor рд░ gen.Server, рд╕рд╛рдереИ рд╡рд┐рд╢реЗрд╖реАрдХреГрддрд╣рд░реВ - gen рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Go рднрд╛рд╖рд╛рдорд╛ рд╡рд┐рддрд░рд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд▓рдЪрд┐рд▓реЛ рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рд╕реНрдЯреЗрдЬ (рд╡рд┐рддрд░рд┐рдд рдкрдм/рд╕рдм), рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдЧрд╛ (рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрдирд╣рд░реВ, рд╕рд╛рдЧрд╛ рдбрд┐рдЬрд╛рдЗрди рдврд╛рдБрдЪрд╛рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди) рд░ gen.Raft (рд░рд╛рдлреНрдЯ рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди)ред

рдердк рд░реВрдкрдорд╛, рдлреНрд░реЗрдорд╡рд░реНрдХрд▓реЗ рдПрдиреНрдб-рдЯреБ-рдЗрдиреНрдб рдЗрдиреНрдХреНрд░рд┐рдкреНрд╕рдирдХреЛ рд╕рд╛рде рдкреНрд░реЛрдХреНрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдЬреБрди Erlang/OTP рд░ Elixir рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫреИрдиред рдЧреЛ рднрд╛рд╖рд╛рдорд╛ рдПрд░реНрд▓рд╛рдЩреНрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рдПрдирд╛рд▓рдЧ рдирднрдПрдХреЛрд▓реЗ, рдлреНрд░реЗрдорд╡рд░реНрдХрд▓реЗ рдЕрдкрд╡рд╛рдж рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди "рд░рд┐рдХрднрд░" рд░реНрдпрд╛рдкрд░рдХреЛ рд╕рд╛рде gen.Server рдХреЛ рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рдЧреЛрд░рд╛рдЙрдЯрд┐рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб MIT рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫред

ErgoFramework рдорд╛ рд╕рдЮреНрдЬрд╛рд▓ рд╕реНрдЯреНрдпрд╛рдХ рдкреВрд░реНрдг рд░реВрдкрдорд╛ Erlang рдкреНрд░реЛрдЯреЛрдХрд▓ рдХреЛ DIST рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдПрд░реНрдЧреЛрдлреНрд░реЗрдорд╡рд░реНрдХрдХреЛ рдЖрдзрд╛рд░рдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд╣рд░реВрд▓реЗ рдПрд░реНрд▓рд╛рдЩреНрдЧ рд╡рд╛ рдПрд▓рд┐рдХреНрд╕рд┐рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВрдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдХреБрдиреИ рдкрдирд┐ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд╣рд░реВрд╕рдБрдЧ рдиреЗрдЯрд┐рдн рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫрдиреН (рдПрд░реНрд▓рд╛рдЩ рдиреЛрдбрд╕рдБрдЧрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдЙрджрд╛рд╣рд░рдг)ред рдпреЛ рдкрдирд┐ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫ рдХрд┐ gen.Stage рдбрд┐рдЬрд╛рдЗрди рдврд╛рдБрдЪрд╛ Elixir GenStage рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдпрд╕рдХреЛ рд╕рд╛рде рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЙрдкрдпреБрдХреНрдд рдЫ (рд▓рд╛рдЧреВ рдЙрджрд╛рд╣рд░рдг)ред

рдирдпрд╛рдБ рд░рд┐рд▓реАрдЬ рдорд╛:

  • рдирдпрд╛рдБ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ рдердкрд┐рдпреЛ
    • gen.Web рд╡реЗрдм API рдЧреЗрдЯрд╡реЗ рд╣реЛ (рдЬрд╕рд▓рд╛рдИ рдмреНрдпрд╛рдХрдЗрдиреНрдб рдлрд░ рдлреНрд░рдиреНрдЯрдПрдиреНрдб рдкрдирд┐ рднрдирд┐рдиреНрдЫ) рдбрд┐рдЬрд╛рдЗрди рдврд╛рдБрдЪрд╛ рд╣реЛред рдЙрджрд╛рд╣рд░рдгред
    • gen.TCP рдПрдЙрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЛрдб рд▓реЗрдЦрдирдорд╛ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдорд╛ TCP рдЬрдбрд╛рди рд╕реНрд╡реАрдХрд╛рд░рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдкреВрд▓ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгред
    • gen.UDP - gen.TCP рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬрд╕реНрддреИ, UDP рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ред рдЙрджрд╛рд╣рд░рдгред
  • рдПрдХ рдиреЛрдб рднрд┐рддреНрд░ рд╕рд╛рдзрд╛рд░рдг рдШрдЯрдирд╛ рдмрд╕ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдВрдЧ рдПрдХ рдирдпрд╛рдБ рдШрдЯрдирд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реБ рдмреАрдЪ рдШрдЯрдирд╛рд╣рд░реБ (pub/sub) рдХреЛ рдЖрджрд╛рди рдкреНрд░рджрд╛рди рдХреЛ рд▓рд╛рдЧреА рд╕рдВрдпрдиреНрддреНрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгред
  • рдЯрд╛рдЗрдк рд░реЗрдЬрд┐рд╖реНрдЯреНрд░реЗрд╕рдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рд╕реНрд╡рджреЗрд╢реА Golang рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░рдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд░рдорд┐рдХрдХрд░рдг/рдбрд┐рд╕реЗрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╕рдирд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдиреНрджреЗрд╢рдХреЛ рд▓рд╛рдЧрд┐ etf.TermIntoStruct рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рджрд░реНрддрд╛ рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рд╣реБрдиреЗрдЫрдиреН, рдЬрд╕рд▓реЗ рд╡рд┐рддрд░рд┐рдд рдиреЛрдбрд╣рд░реВ рдмреАрдЪ рд╕рдиреНрджреЗрд╢ рдЖрджрд╛рдирдкреНрд░рджрд╛рдирдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдЧрддрд┐ рджрд┐рдиреНрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди