เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เบฑเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบˆเบเบขเบฒเบ. เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เบตโ€‹เบชเบญเบ‡โ€‹

เปเบˆเป‰เบ‡เบเบฒเบ™

เป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™, เปƒเบ™เบเบฒเบ‡เบฅเบฐเบ”เบนเบฎเป‰เบญเบ™, เบ‚เป‰เบญเบเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ›เปˆเบญเบเบšเบปเบ”เบ„เบงเบฒเบกเบญเบตเบเบŠเบธเบ”เบซเบ™เบถเปˆเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบญเบญเบเปเบšเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เบˆเบฑเบ”เปเบ–เบง: "เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡ VTrade" - เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบเบญเบšเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เป‰เบฒ. เบŠเบธเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบเบงเบ”เบชเบญเบšเบ—เบดเบ”เบชเบฐเบ”เบตเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™, เบเบฒเบ™เบ›เบฐเบกเบนเบ™เปเบฅเบฐเบฎเป‰เบฒเบ™เบ„เป‰เบฒ. เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เปเป€เบŠเบทเป‰เบญเป€เบŠเบตเบ™เบ—เปˆเบฒเบ™เปƒเบซเป‰เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡เบชเปเบฒเบฅเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบชเบธเบ”.

เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เบฑเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบˆเบเบขเบฒเบ. เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เบตโ€‹เบชเบญเบ‡โ€‹

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบชเบธเบ”เบ—เป‰เบฒเบเปƒเบ™เบŠเบธเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ reactive เปเบˆเบเบขเบฒเบเปƒเบ™ Erlang / Elixir. IN เบšเบปเบ”เบ„เบงเบฒเบกเบ—เปเบฒเบญเบดเบ” เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบดเบ”เบชเบฐเบ”เบตเบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ reactive. เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเบชเบญเบ‡ เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เปเบฅเบฐโ€‹เบเบปเบ™โ€‹เป„เบโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹.

เบกเบทเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบปเบเบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›.

เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™

เปƒเบ™เบŠเบตเบงเบดเบ”เบˆเบดเบ‡, เป€เบกเบทเปˆเบญเบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบ—เปˆเบฒเบ™เบกเบฑเบเบˆเบฐเบ•เป‰เบญเบ‡เบชเบปเบกเบ—เบปเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เบซเบผเบฒเบเบฎเบนเบšเปเบšเบšเปƒเบ™เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบซเบ™เบถเปˆเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบœเบนเป‰เปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบœเบนเป‰เปƒเบŠเป‰เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เบ•เป‰เบญเบ‡เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป req-resp เปเบฅเบฐเบฅเบฒเบเบ‡เบฒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒเบœเปˆเบฒเบ™ pub-sub. เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ: เบซเบฅเบฑเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบกเบตเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบซเบ”เบœเบปเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐเป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡.

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ—เบตเปˆเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”. เปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡:

  1. เบ”เบฝเบงเบ™เบตเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เบงเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบขเบนเปˆเปƒเบ™ 5 nodes cluster,
  2. เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™,
  3. เปเบฅเบฐเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบฅเบฒเบเบเบฒเบ™เบชเบฐเปเบฑเบเบชเบฐเบกเบฒเบŠเบดเบเปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบเบชเบณเบฅเบฑเบšเบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เป‚เบ›เบฃเป„เบŸเบฅเปŒ.

เบ„เบณ เป€เบซเบฑเบ™: เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เปเบฅเบฐเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบ‚เปเป‰เบกเบนเบ™. เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เปเบฅเบฐเบฅเบฐเบšเบปเบšเบกเบตเบŠเบฑเป‰เบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰, เปเบฅเบฐเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบกเบตเบเบปเบ™เป„เบเปƒเบ™เบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบกเบฑเบ™.

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ. เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบ„เบงเบฒเบก. เป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบขเบนเปˆเปƒเบ™เบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™ req-resp.

เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบงเบฝเบเบ‡เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบฅเบทเป‰เบญเบเป†. เปƒเบ™เบœเบนเป‰เปƒเบŠเป‰, เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบญเบเบฐเบชเบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบกเบฑเบ™เบ•เบดเบกเบตเป€เบ”เบเบ—เบตเปˆเบ”เบฒเบงเป‚เบซเบผเบ”, เบซเบผเบท synchronizing เบ‚เปเป‰เบกเบนเบ™เบเบฑเบšเบชเบทเปˆเบกเบงเบ™เบŠเบปเบ™เบชเบฑเบ‡เบ„เบปเบก. เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบโ€‹. เบงเบฝเบเบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบ somehow เบžเบฒเบเปƒเบ™เบเบธเปˆเบกเปเบฅเบฐเบ„เบงเบฒเบกเบ„เบทเบšเบซเบ™เป‰เบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚: เบšเปเปˆเบงเปˆเบฒเบˆเบฐเปƒเบŠเป‰เปเบกเปˆเปเบšเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบซเบผเบท, เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ‚เบฝเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบงเบฝเบเบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡เบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบชเบฐเบ™เบธเบเป€เบเบตเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเปƒเบ™เปเบšเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบˆเบธเบ”เบ—เบต 3 เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเปเบกเปˆเปเบšเบš pub-sub. เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบชเป‰เบฒเบ‡เบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™ pub-sub, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบˆเบธเบ”เบ™เบตเป‰เบžเบฒเบเปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ„เบทเบเบฑเบšเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเบฒเบ™เบˆเบญเบ‡เปเบฅเบฐเบเบฒเบ™เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบˆเบญเบ‡เบˆเบฒเบเบŠเบฑเป‰เบ™เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบ™เบปเปˆเบฒเป€เบ›เบทเปˆเบญเบเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบง 5 เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบ™ nodes เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเบชเป‰เบฒเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก - pub-sub controller, เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบซเบกเบฑเบ.
เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ 5 handlers, เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบžเบฝเบ‡เปเบ•เปˆเปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบขเบนเปˆเปƒเบ™เบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบฑเบเบ™เป‰เบญเบเบ•เปเปˆเบกเบฒ.
เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก: เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก pub-sub เปเบฅเบฐเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบงเบฝเบเบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบชเปเบฒเป€เบ™เบปเบฒเบ”เบฝเบง. เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก, เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบปเบ™เป„เบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบทเบญเบเบœเบนเป‰เบ™เปเบฒ.

เบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบเบœเบนเป‰เบ™เปเบฒ

เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบ, เบเบฒเบ™เป€เบฅเบทเบญเบเบ•เบฑเป‰เบ‡เบœเบนเป‰เบ™เปเบฒเปเบกเปˆเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เปเบ•เปˆเบ‡เบ•เบฑเป‰เบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ”เบฝเบงเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบเบฒเบ™เปเบˆเบเบขเบฒเบเบเบฒเบ™เป‚เบซเบผเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡.

เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ•เปเปˆเบเบฒเบ™เป€เบ›เบฑเบ™เบชเบนเบ™เบเบฒเบ‡, เบฅเบฐเบšเบปเบšเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเป€เบซเบฑเบ™เบ”เบตเป€เบซเบฑเบ™เบžเป‰เบญเบก, เป€เบŠเบฑเปˆเบ™ paxos เบซเบผเบท raft, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.
เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปเบกเปˆเบ™เบ™เบฒเบเบซเบ™เป‰เบฒเปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบนเบ™เบเบฒเบ‡, เบกเบฑเบ™เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” - เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบœเบนเป‰เบ™เปเบฒ. เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปเบ•เปˆเบ‡เบ•เบฑเป‰เบ‡เบœเบนเป‰เบ™เปเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡.

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™, เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบฅเบฐเบšเบปเบš #'$leader'{exchange = ?EXCHANGE, pid = LeaderPid, servers = Servers}. เบ–เป‰เบฒ LeaderPid เบเบปเบ‡เบเบฑเบš pid เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเปเบ•เปˆเบ‡เบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เบœเบนเป‰เบ™เปเบฒ, เปเบฅเบฐเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ Servers เบ›เบฐเบเบญเบšเบกเบต nodes เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบญเบฑเบ™เปƒเบซเบกเปˆเบ›เบฐเบเบปเบ”เบ‚เบถเป‰เบ™เปเบฅเบฐ node cluster เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ–เบทเบเบ•เบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบฎเบฑเบš #'$slave_up'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts} ะธ #'$slave_down'{exchange = ?EXCHANGE, pid = SlavePid, options = SlaveOpts} respectively

เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰, เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบฎเบฑเบšเบฎเบนเป‰เป€เบ–เบดเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเบฐเบเบธเปˆเบกเปเบกเปˆเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบกเบตเบœเบนเป‰เบ™เปเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเปƒเบ”เบเปเปˆเบ•เบฒเบก.

เบœเบนเป‰เป„เบเปˆเป€เบเปˆเบ

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบˆเบเบขเบฒเบเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบกเบฑเบ™เบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบเบฒเบ‡.
เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐเปเบเป‰เป„เบ‚, เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบซเบผเบทเบ‚เปเป‰เบ„เบงเบฒเบกเบšเบฑเบ™เบ—เบถเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เปƒเบŠเป‰เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ•เบปเบงเปเบ—เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ„เบฅเบฒเบชเบชเบดเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš pub-sub เปเบกเปˆเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเปเบˆเบเบขเบฒเบเบ—เบตเปˆเบกเบตเบซเบผเบฑเบเบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เป€เบซเบ”เบเบฒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฒเบ„เบฒเปƒเบ™เบ•เบฐเบซเบผเบฒเบ”เปเบฅเบฐเบŠเบฑเป‰เบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ - N servers เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡ websocket API เบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒเป€เบงเบฑเบš.
เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบซเบปเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบฅเบนเบเบ„เป‰เบฒเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

  • เบฅเบนเบเบ„เป‰เบฒเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป€เบงเบ—เบต. เบขเบนเปˆเบ‚เป‰เบฒเบ‡เป€เบŠเบตเบšเป€เบงเบตเบ—เบตเปˆเบขเบธเบ”เบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบ›เบตเบ”เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ™เบตเป‰.
  • เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบกเบฑเบเบเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบˆเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบซเบปเบงเบ‚เปเป‰.
  • เป€เบกเบทเปˆเบญเป€เบซเบ”เบเบฒเบ™เปƒเบ” เปœเบถเปˆเบ‡ เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™เปเบเปˆเบ™, เบกเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต 50000 เบœเบนเป‰เบ•เบดเบ”เบ•เบฒเบกเบซเบปเบงเบ‚เปเป‰ "เบ‚เปˆเบฒเบง". เบœเบนเป‰เบˆเบญเบ‡เป„เบ”เป‰เบ–เบทเบเปเบˆเบเบขเบฒเบเบขเปˆเบฒเบ‡เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เปƒเบ™เบ—เบปเปˆเบง 5 เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡, เบกเบฒเบฎเบญเบ”เบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™, เบˆเบฐเบ–เบทเบ replicated 50000 เป€เบ—เบทเปˆเบญ: 10000 เบ„เบฑเป‰เบ‡เปƒเบ™เปเบ•เปˆเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบญเบตเบ‡เบ•เบฒเบกเบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เบˆเบญเบ‡เบขเบนเปˆเปƒเบ™เบกเบฑเบ™. เบšเปเปˆเปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบ, เปเบกเปˆเบ™เบšเป?
เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™, เปƒเบซเป‰เปเบ™เบฐเบ™เปเบฒเบ•เบปเบงเปเบ—เบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™. เบœเบนเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบŠเบทเปˆเบ—เบปเปˆเบงเป‚เบฅเบเบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบเบฑเบšเบ„เบทเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเปƒเบเป‰เบ„เบฝเบ‡เบ—เบตเปˆเบชเบธเบ”เป‚เบ”เบเบŠเบทเปˆ, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™.

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เบ•เบปเบงเบžเบฃเบฑเบญเบเบŠเบตเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบŠเบฑเป‰เบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, เปเบฅเบฐเบ—เบธเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ websocket api เบˆเบฐเบชเบฐเปเบฑเบเปƒเบŠเป‰เบกเบฑเบ™, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™ pub-sub เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปƒเบ™ kernel. เบžเบฃเบฑเบญเบเบŠเบตเบชเบฐเปเบฑเบเปƒเบŠเป‰เบซเบผเบฑเบเบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเปเบฅเบฐ replicates เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เบˆเบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”.
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, 5 เบ‚เปเป‰เบ„เบงเบฒเบกเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ kernel เปเบฅเบฐเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ 50000.

เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡

Req-Resp

เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™, เบกเบต 7 เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เปเบˆเบเบขเบฒเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป:

  • default. เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบ—เบฑเบ‡เบซเบกเบปเบ”.
  • round-robin. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปเบกเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบ™เบฑเบšเปเบฅเบฐเปเบˆเบเบขเบฒเบเบฎเบญเบšเบงเบฝเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก.
  • consensus. เบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบœเบนเป‰เบ™เปเบฒเปเบฅเบฐเบชเปเบฒเบฅเบญเบ‡. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปเบกเปˆเบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบœเบนเป‰เบ™เปเบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.
  • consensus & round-robin. เบเบธเปˆเบกเบกเบตเบœเบนเป‰เบ™เปเบฒ, เปเบ•เปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ”เป‰เบ–เบทเบเปเบˆเบเบขเบฒเบเปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบฐเบกเบฒเบŠเบดเบเบ—เบฑเบ‡เบซเบกเบปเบ”.
  • sticky. เบŸเบฑเบ‡เบŠเบฑเบ™ hash เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเปเบฅเบฐเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐ. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเป„เบ›เบ—เบตเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™เบ™เบตเป‰เป„เบ›เบซเบฒเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™.
  • sticky-fun. เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™, เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ hash เบชเปเบฒเบฅเบฑเบš sticky เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡.
  • fun. เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš sticky-fun, เบžเบฝเบ‡เปเบ•เปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เบ›เบฐเบ•เบดเป€เบชเบ”เบซเบผเบท pre-process เบกเบฑเบ™.

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เปเบˆเบเบขเบฒเบเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบกเบทเปˆเบญเบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡, เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบ—เบฑเบเบซเบ™เปˆเบงเบเบ‡เบฒเบ™. เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ tags เปƒเบ™เบฅเบฐเบšเบปเบš:

  • เปเบ—เบฑเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบกเบตเบ›เบธเปˆเบกเบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.
  • เบ›เป‰เบฒเบเบšเปเบฅเบดเบเบฒเบ™. เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบงเบกเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เป€เบ›เบฑเบ™เบเบธเปˆเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ”เบฝเบงเปเบฅเบฐเบ‚เบฐเบซเบเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡. เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบš req-resp, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบกเปˆเบ™เป€เบชเบฑเป‰เบ™เบŠเบทเปˆ. เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเป„เบ›เบซเบฒเบšเปเบฅเบดเบเบฒเบ™. เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบเบเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบญเบญเบเป€เบ›เบฑเบ™เบเบธเปˆเบกเบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เปเบเบเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เปเบ—เบฑเบ. เป€เบกเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เปเบ—เบฑเบ, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบเบธเปˆเบกเบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบชเบฐเป€เบžเบฒเบฐ.
  • เบ‚เปเปเบ—เบฑเบ. เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบˆเปเบฒเปเบ™เบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เปเบฒเบ•เบญเบš. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™ asynchronous, เป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธ RequestTag เปƒเบ™เป€เบงเบฅเบฒเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป. เบˆเบฒเบเบกเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบกเบฒเบซเบฒเบžเบงเบเป€เบฎเบปเบฒ.

เบฎเป‰เบฒเบ™เบเปˆเบญเบ

เบชเปเบฒเบฅเบฑเบš pub-sub เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเป€เบฅเบฑเบเบ™เป‰เบญเบ. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบ—เบตเปˆเบ‚เปเป‰เบ„เบงเบฒเบกเบ–เบทเบเป€เบœเบตเบเปเบœเปˆ. เบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ™เบšเบฑเบ™เบ”เบฒเบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป„เบ”เป‰เบˆเบญเบ‡เบฅเบฐเบซเบฑเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ (เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบซเบปเบงเบ‚เปเป‰).

เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เปเบฅเบฐโ€‹เบ„เบงเบฒเบกโ€‹เบ—เบปเบ™โ€‹เบ—เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹

เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เบ‚เบญเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบกเปˆเบ™โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เบ‚เบญเบ‡โ€‹เบŠเบฑเป‰เบ™โ€‹เปเบฅเบฐโ€‹เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ‚เบญเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹:

  • เบšเปเบฅเบดเบเบฒเบ™เบ–เบทเบเบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบก nodes เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบชเปˆเบเบธเปˆเบกเบ—เบตเปˆเบกเบตเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ™เบตเป‰. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเบ™เบฐเป‚เบเบšเบฒเบเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”.
  • เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบžเบฒเบเปƒเบ™ cluster เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบˆเบฐเบ–เบทเบเบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เป‚เบ”เบเบเบฒเบ™เบเป‰เบฒเบเบˆเบธเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบ—เบตเปˆเป‚เบซเบฅเบ”เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเป„เบ›เบซเบฒ nodes cluster เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบซเบผเบทเป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบปเบงเปเบ—เบ™เปƒเบซเป‰เบเบฑเบšเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเป‚เบซเบฅเบ”เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡ cluster.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ›เบฑเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปเบฅเบฐเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบงเบกเบเบธเปˆเบกเบšเบธเบเบ„เบปเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบปเปˆเบงเป„เบ›.

เบ„เบงเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบกเบฑเบเบˆเบฐเบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”. เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ™เบชเบฐเบšเบฑเบšเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบ•เบตเบšเป‚เบ•เบžเป‰เบญเบกเบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฒเบ”เบเบธเปˆเบกเบ‚เบญเบ‡ 50-60 เป€เบ„เบทเปˆเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบซเบฑเบ™เป„เบ›เบซเบฒเบชเบฐเบซเบฐเบžเบฑเบ™. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบชเบฐเบซเบฐเบžเบฑเบ™เปเบกเปˆเบ™เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰.

เบเบฒเบ™เบˆเบญเบ‡

เป€เบกเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบŠเป‰เปเบฒเบŠเป‰เบญเบ™เบ‚เบญเบ‡เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบเบฑเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ‡เบงเบ™. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ‚เบญเบ‡ node เบซเบผเบทโ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบ‚เบฑเบ”โ€‹, เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบ„เบงเบ™โ€‹เบˆเบฐโ€‹เบŸเบทเป‰เบ™โ€‹เบ•เบปเบงโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹, เปเบฅเบฐโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบชเบฑเป‰เบ™โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹.

เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ‚เป‰เบญเบเปƒเบŠเป‰เบ‚เปเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเป€เบญเบปเบฒเบเบฒเบ™เป‚เบซเบผเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡. Erlang เบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฎเบนเบšเปเบšเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ OTP. เบฎเบนเบšเปเบšเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเป‚เบ”เบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบงเปƒเบ™เป‚เบซเบ™เบ”เบญเบทเปˆเบ™เบ—เบตเปˆเป€เบ›เบตเบ”เบ•เบปเบงเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบตเบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบช; เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเบเป‰เบฒเบเป„เบ›เบซเบฒเป‚เบซเบ™เบ”เบฅเบปเป‰เบกเป€เบซเบฅเบงเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰ เบ—เบตเปˆเบ™เบตเป‰.

เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™

เปƒเบซเป‰เบžเบฐเบเบฒเบเบฒเบกเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบ›เบฝเบšเบ—เบฝเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ rabbitmq เปเบฅเบฐเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปเบšเบšเบเปเบฒเบ™เบปเบ”เป€เบญเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.
เบ‚เป‰เบญเบโ€‹เป„เบ”เป‰โ€‹เบžเบปเบš เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™ เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš rabbitmq เบˆเบฒเบเบ—เบตเบกเบ‡เบฒเบ™ openstack.

เปƒเบ™เบงเบฑเบเบ—เบต 6.14.1.2.1.2.2. เป€เบญเบเบฐเบชเบฒเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡ RPC CAST:
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เบฑเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบˆเบเบขเบฒเบ. เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เบตโ€‹เบชเบญเบ‡โ€‹

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ•เปเปˆเบเบฑเบš OS kernel เบซเบผเบท erlang VM เบฅเปˆเบงเบ‡เปœเป‰เบฒ. เป€เบ‡เบทเปˆเบญเบ™โ€‹เป„เบ‚โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹:

  • erl opts: +A1 +sbtu.
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบžเบฒเบเปƒเบ™ node erlang เบ”เบฝเบงเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‚เบ™เบ”เบšเบธเบเบ—เบตเปˆเบกเบต i7 เป€เบเบปเปˆเบฒเปƒเบ™เบชเบฐเบšเบฑเบšเบกเบทเบ–เบท.
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบธเปˆเบกเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเป€เบ„เบทเบญเบ‚เปˆเบฒเบ 10G.
  • เบฅเบฐเบซเบฑเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™ docker containers. เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™เป‚เปเบ” NAT.

เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš:

req_resp_bench(_) ->
  W = perftest:comprehensive(10000,
    fun() ->
      messaging:request(?EXCHANGE, default, ping, self()),
      receive
        #'$msg'{message = pong} -> ok
      after 5000 ->
        throw(timeout)
      end
    end
  ),
  true = lists:any(fun(E) -> E >= 30000 end, W),
  ok.

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ 1: เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เปเบกเปˆเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เปƒเบ™โ€‹เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบตโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบกเบทโ€‹เบ–เบท i7 เป€เบเบปเปˆเบฒโ€‹. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบซเบ™เบถเปˆเบ‡ node เปƒเบ™เบซเบ™เบถเปˆเบ‡ Docker container:

Sequential 10000 cycles in ~0 seconds (26987 cycles/s)
Sequential 20000 cycles in ~1 seconds (26915 cycles/s)
Sequential 100000 cycles in ~4 seconds (26957 cycles/s)
Parallel 2 100000 cycles in ~2 seconds (44240 cycles/s)
Parallel 4 100000 cycles in ~2 seconds (53459 cycles/s)
Parallel 10 100000 cycles in ~2 seconds (52283 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (49317 cycles/s)

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ 2: 3 nodes เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบžเบฒเบเปƒเบ•เป‰ docker (NAT).

Sequential 10000 cycles in ~1 seconds (8684 cycles/s)
Sequential 20000 cycles in ~2 seconds (8424 cycles/s)
Sequential 100000 cycles in ~12 seconds (8655 cycles/s)
Parallel 2 100000 cycles in ~7 seconds (15160 cycles/s)
Parallel 4 100000 cycles in ~5 seconds (19133 cycles/s)
Parallel 10 100000 cycles in ~4 seconds (24399 cycles/s)
Parallel 100 100000 cycles in ~3 seconds (34517 cycles/s)

เปƒเบ™เบ—เบธเบเบเปเบฅเบฐเบ™เบต, เบเบฒเบ™เปƒเบŠเป‰ CPU เบšเปเปˆเป„เบ”เป‰เป€เบเบตเบ™ 250%

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเบงเบปเบ‡เบˆเบญเบ™เบ™เบตเป‰เบšเปเปˆเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบˆเบดเบ”เปƒเบˆเปเบฅเบฐเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบ•เปเปˆเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบˆเบเบขเบฒเบเปเบฅเบฐเบ™เบฑเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบœเบนเป‰เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเปเบˆเบเบขเบฒเบเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบฅเบฐเบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒ Erlang / Elixir เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆ. , เปเบ•เปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเบปเบ‡โ€‹เปƒเบชโ€‹เปเบกเปˆเบ™โ€‹เบกเบฑเบ™โ€‹เบกเบตโ€‹เบ„เปˆเบฒ ...

เบเบฒเบ™โ€‹เบ–เปˆเบฒเบโ€‹เบฎเบนเบš @chuttersnap

เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšเบเบฐเบฅเบธเบ™เบฒ.

เบซเบปเบงเบ‚เปเป‰เปƒเบ”เปเบ”เปˆเบ—เบตเปˆเบ‚เป‰เบญเบเบ„เบงเบ™เบเบงเบกเป€เบญเบปเบฒเปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบŠเบธเบ”เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡ VTrade?

  • เบ—เบดเบ”เบชเบฐเบ”เบต: เบ•เบฐเบซเบผเบฒเบ”, เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบฅเบฐเป€เบงเบฅเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ: DAY, GTD, GTC, IOC, FOK, MOO, MOC, LOO, LOC

  • เบ›เบทเป‰เบกโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹. เบ—เบดเบ”เบชเบฐเบ”เบตเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ›เบทเป‰เบกเบ—เบตเปˆเบกเบตเบเบธเปˆเบก

  • Visualization of trading: Ticks, bars, เบเบฒเบ™เปเบเป‰เป„เบ‚. เบงเบดเบ—เบตเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบเบฒเบง

  • เบซเป‰เบญเบ‡เบเบฒเบ™เบซเบผเบฑเบ‡. เบเบฒเบ™เบงเบฒเบ‡เปเบœเบ™ เปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เบžเบฐโ€‹เบ™เบฑเบโ€‹เบ‡เบฒเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบชเบทเบšโ€‹เบชเบงเบ™โ€‹เป€เบซเบ”โ€‹เบเบฒเบ™โ€‹

  • API. เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบญเบญเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบงเบเบกเบฑเบ™

  • เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™: PostgreSQL, Timescale, Tarantool เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เป‰เบฒ

  • เบ›เบฐเบ•เบดเบเบดเบฅเบดเบเบฒเปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เป‰เบฒ

  • เบญเบทเปˆเบ™เป†. เบ‚เป‰เบญเบเบˆเบฐเบ‚เบฝเบ™เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™

6 เบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 4 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

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