เบเบฒเบ™เบ›เปˆเบญเบเบเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ ErgoFramework 2.2

เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ•เปเปˆเป„เบ›เบ‚เบญเบ‡ ErgoFramework 2.2 เป„เบ”เป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบ›เบฐเบ•เบดเบšเบฑเบ” stack เป€เบ„เบทเบญเบ‚เปˆเบฒเบ Erlang เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” OTP เบ‚เบญเบ‡เบกเบฑเบ™เปƒเบ™เบžเบฒเบชเบฒ Go. เป‚เบ„เบ‡เบฎเปˆเบฒเบ‡เบเบฒเบ™เปƒเบซเป‰เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบˆเบฒเบเป‚เบฅเบ Erlang เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเปเบˆเบเบขเบฒเบเปƒเบ™เบžเบฒเบชเบฒ Go เป‚เบ”เบเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบญเบญเบเปเบšเบšเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก gen.Application, gen.Supervisor เปเบฅเบฐ gen.Server, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เบžเบดเป€เบชเบ” - gen. เบ‚เบฑเป‰เบ™เบ•เบญเบ™ (เบเบฒเบ™เปเบˆเบเบขเบฒเบ pub/sub), gen.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป‚เบ„เบ‡เบฎเปˆเบฒเบ‡เบเบฒเบ™เปƒเบซเป‰เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ•เบปเบงเปเบ—เบ™เบ”เป‰เบงเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปเบšเบš end-to-end, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™ Erlang/OTP เปเบฅเบฐ Elixir. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบฒเบชเบฒ Go เบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเป‚เบ”เบเบเบปเบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ Erlang, เบเบญเบšเปƒเบŠเป‰ goroutines เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบš gen.Server เบ—เบตเปˆเบกเบต wrapper "เบเบนเป‰เบ„เบทเบ™" เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT.

stack เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ ErgoFramework เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบชเบฐเป€เบžเบฒเบฐ DIST เบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™ Erlang. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ‚เบฝเบ™เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ ErgoFramework เป€เบฎเบฑเบ”เบงเบฝเบเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ”เป†เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Erlang เบซเบผเบท Elixir (เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบš Erlang node). เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบญเบญเบเปเบšเบš gen.Stage เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡ Elixir GenStage เปเบฅเบฐเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบกเบฑเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”).

เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบกเปˆ:

  • เป€เบžเบตเปˆเบกเปเบกเปˆเปเบšเบšเปƒเปเปˆเปเบฅเป‰เบง
    • gen.Web เป€เบ›เบฑเบ™ Web API Gateway (เป€เบญเบตเป‰เบ™เบเบฑเบ™เบงเปˆเบฒ Backend For Frontend) เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบญเบญเบเปเบšเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡.
    • gen.TCP เป€เบ›เบฑเบ™เปเบกเปˆเปเบšเบšเบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡.
    • gen.UDP - เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเปเบกเปˆเปเบšเบš gen.TCP, เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเป‚เบ›เป‚เบ•เบ„เบญเบ™ UDP. เบ•เบปเบงเบขเปˆเบฒเบ‡.
  • เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™เปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบตเบ”เป‰เบงเบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบปเบ”เป€เบกเป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบžเบฒเบเปƒเบ™ node, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบเบปเบ™เป„เบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เป€เบซเบ”เบเบฒเบ™ (pub / sub) เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ›เบฐเป€เบžเบ”, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ serialization / deserialization เบ‚เปเป‰เบ„เบงเบฒเบกเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™ Golang เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ etf.TermIntoStruct เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบš. เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบฅเบฐเบซเบงเปˆเบฒเบ‡เป‚เบซเบ™เบ”เบ—เบตเปˆเปเบˆเบเบขเบฒเบเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™