[เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹] เปเบšเบšโ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹เบเบฐโ€‹เบ—เบนเป‰โ€‹เบ—เบนเบ”โ€‹

เบเบฒเบ™เปเบ›เบšเบปเบ”เบ„เบงเบฒเบก: เบฎเบนเบšเปเบšเบšเบเบฒเบ™เปƒเบชเปˆเบเบฐเบ—เบนเป‰ Envoy - https://blog.envoyproxy.io/envoy-threading-model-a8d44b922310

เบ‚เป‰เบญเบเบžเบปเบšเบงเปˆเบฒเบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ, เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ Envoy เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบฅเบทเป‰เบญเบเป†เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ "istio" เบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบฑเบ™ "เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก ingress" เบ‚เบญเบ‡ kubernetes, เบ„เบปเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบกเบฑเบ™, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด. เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Nginx เบซเบผเบท Haproxy. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบ•เบ, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบˆเบฒเบเบžเบฒเบเปƒเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเปเบ›เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบฅเบฑเบ”เป€เบŠเบเบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบฅเบงเบกเบ—เบฑเบ‡เบ„เปเบฒเบชเบฑเบšเบžเบดเป€เบชเบ”; เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบˆเบฑเบšเบ›เบงเบ”เบ—เบตเปˆเบˆเบฐเป€เบšเบดเปˆเบ‡เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ›เบฐเป„เบงเป‰เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบขเบนเปˆเปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบš. เบเบดเบ™เบ”เบตเบ•เป‰เบญเบ™เบฎเบฑเบš cat.

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

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

เบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰

[เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹] เปเบšเบšโ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹เบเบฐโ€‹เบ—เบนเป‰โ€‹เบ—เบนเบ”โ€‹

Envoy เปƒเบŠเป‰เบชเบฒเบกเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบชเบฒเบเบ™เป‰เปเบฒ:

  • เบซเบผเบฑเบ: เบเบฐเบ—เบนเป‰เบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบขเบธเบ”เป€เบŠเบปเบฒ, เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ API XDS (xDiscovery Service), เบฅเบงเบกเบ—เบฑเบ‡ DNS, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบš, เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบธเปˆเบกเบ—เบปเปˆเบงเป„เบ›เปเบฅเบฐเป€เบงเบฅเบฒเปเบฅเปˆเบ™, เบชเบฐเบ–เบดเบ•เบดเบเบฒเบ™เบ›เบฑเบšเปƒเบซเบกเปˆ, เบเบฒเบ™เบšเปเบฅเบดเบซเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบปเปˆเบงเป„เบ› - Linux signals hot restart, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบเบฐเบ—เบนเป‰เบ™เบตเป‰เปเบกเปˆเบ™ asynchronous เปเบฅเบฐ "เบšเปเปˆเบชเบฐเบเบฑเบ”". เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบเบฐเบ—เบนเป‰เบซเบผเบฑเบเบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ CPU เบˆเปเบฒเบ™เบงเบ™เบซเบผเบงเบ‡เบซเบผเบฒเบ. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ„เบงเบšเบ„เบธเบกเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ–เบทเบเบ‚เบฝเบ™เบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฐเบ—เบนเป‰เบ”เบฝเบง.
  • เบ„เบปเบ™เบ‡เบฒเบ™: เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, Envoy เบชเป‰เบฒเบ‡เบเบฐเบ—เบนเป‰เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเบปเบงเบ‚เปเป‰เบฎเบฒเบ”เปเบงเปƒเบ™เบฅเบฐเบšเบปเบš, เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. --concurrency. เปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ loop เป€เบซเบ”เบเบฒเบ™ "เบšเปเปˆเบ•เบฑเบ™", เป€เบŠเบดเปˆเบ‡เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŸเบฑเบ‡เปเบ•เปˆเบฅเบฐเบ„เบปเบ™; เปƒเบ™เป€เบงเบฅเบฒเบ‚เบฝเบ™ (29 เบเปเบฅเบฐเบเบปเบ” 2017) เบšเปเปˆเบกเบตเบเบฒเบ™ sharding เบ‚เบญเบ‡เบœเบนเป‰เบŸเบฑเบ‡, เบเบญเบกเบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบซเบกเปˆ, instantiating stack เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบชเปเบฒเบฅเบฑเบš. เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹, เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™ / เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” (IOโ€‹) เปƒเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹. เบญเบตเบเป€เบ—เบทเปˆเบญ เปœเบถเปˆเบ‡, เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ–เบทเบเบ‚เบฝเบ™เบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฐเบ—เบนเป‰เบ”เบฝเบง.
  • File flusher: เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆ Envoy เบ‚เบฝเบ™, เบชเปˆเบงเบ™เปƒเบซเบเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบšเบฑเบ™เบ—เบถเบ, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบตเบเบฐเบ—เบนเป‰เบชเบฐเบเบฑเบ”เป€เบญเบเบฐเบฅเบฒเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบเบฒเบ™เบ‚เบฝเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เป‚เบ”เบเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ O_NONBLOCK เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบฐเบเบฑเบ” (sigh). เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เปƒเบชเปˆเป„เบŸเบฅเปŒ, เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบ—เบตเปˆ buffer เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบ flushed เบœเปˆเบฒเบ™เบเบฐเบ—เบนเป‰เปƒเบ™เบ—เบตเปˆเบชเบธเบ”. เบฅเป‰เบฒเบ‡เป„เบŸเบฅเปŒ. เบ™เบตเป‰เปเบกเปˆเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ—เบฒเบ‡เบงเบดเบŠเบฒเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเบเบฑเบ” lock เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆ buffer เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ.

เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ

เบ”เบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบเปˆเบฒเบงโ€‹เบกเบฒโ€‹เป‚เบ”เบโ€‹เบซเบเปเป‰โ€‹เบ‚เป‰เบฒเบ‡โ€‹เป€เบ—เบดเบ‡โ€‹เบ™เบตเป‰, เบเบฐโ€‹เบ—เบนเป‰โ€‹เปเบฎเบ‡โ€‹เบ‡เบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เปเบปเบ”โ€‹เบฅเป‰เบงเบ™โ€‹เปเบ•เปˆโ€‹เบฎเบฑเบšโ€‹เบŸเบฑเบ‡โ€‹เบœเบนเป‰โ€‹เบŸเบฑเบ‡โ€‹เบ—เบฑเบ‡โ€‹เปเบปเบ”โ€‹เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เปเบเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, kernel เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡ sockets เบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเป„เบ›เบซเบฒเบเบฐเบ—เบนเป‰เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™. kernels เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบ”เบตเบซเบผเบฒเบ, เบžเบงเบเป€เบ‚เบปเบฒเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบŠเบฑเปˆเบ™ input / output (IO) เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบเบฒเบ™เบŠเบธเบเบเบนเป‰เป€เบžเบทเปˆเบญเบžเบฐเบเบฒเบเบฒเบกเบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเบเบฐเบ—เบนเป‰เบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ threads เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบเบฑเบ‡เบŸเบฑเบ‡เบขเบนเปˆเปƒเบ™เป€เบ•เบปเป‰เบฒเบฎเบฑเบšเบ”เบฝเบงเบเบฑเบ™, เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰ round robin. locking (Spinlock) เป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบ•เปˆเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป.
เป€เบกเบทเปˆเบญเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ–เบทเบเบเบญเบกเบฎเบฑเบšเปƒเบ™เบเบฐเบ—เบนเป‰เบ„เบปเบ™เบ‡เบฒเบ™, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบญเบญเบเบˆเบฒเบเบเบฐเบ—เบนเป‰เบ™เบฑเป‰เบ™. เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบˆเบฑเบ”เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเปƒเบ”เป†.

เบ™เบตเป‰โ€‹เบกเบตโ€‹เบœเบปเบ™โ€‹เบชเบฐโ€‹เบ—เป‰เบญเบ™โ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹:

  • เบชเบฐเบฅเบญเบเบ™เป‰เบณเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ Envoy เปเบกเปˆเบ™เบ–เบทเบเบกเบญเบšเปเบฒเบเปƒเบซเป‰เบเบฑเบšเบเบฐเบ—เบนเป‰เบ„เบปเบ™เบ‡เบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ HTTP / 2 เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเปเบ•เปˆเบฅเบฐ host upstream เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบง, เบ–เป‰เบฒเบกเบตเบชเบตเปˆ threads เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™, เบˆเบฐเบกเบตเบชเบตเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ HTTP / 2 เบ•เปเปˆ host upstream เบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡.
  • เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆ Envoy เป€เบฎเบฑเบ”เบงเบฝเบเบงเบดเบ—เบตเบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเป‚เบ”เบเบเบฒเบ™เบฎเบฑเบเบชเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบนเปˆเปƒเบ™เบเบฐเบ—เบนเป‰เบ„เบปเบ™เบ”เบฝเบง, เป€เบเบทเบญเบšเบฅเบฐเบซเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ‚เบฝเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบเบฑเบ”เปเบฅเบฐเบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฐเบ—เบนเป‰เบ”เบฝเบง. เบเบฒเบ™เบญเบญเบเปเบšเบšเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบซเบผเบฒเบเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เป„เบ”เป‰เบ”เบต incredibly เป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบเบทเบญเบšเบšเปเปˆเบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™.
  • เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบญเบปเบฒเบกเบฒเบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฒเบเบชเบฐเบ™เบธเบเป€เบเบตเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเบˆเบธเบ”เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐ configure เป„เบ”เป‰. --concurrency. เบเบฒเบ™เบกเบตเบเบฐเบ—เบนเป‰เบ„เบปเบ™เบ‡เบฒเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบˆเบฐเป€เบชเบเบ„เบงเบฒเบกเบˆเปเบฒ, เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ, เปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบญเบฑเบ”เบ•เบฒเบเบฒเบ™เบฅเบงเบกเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบขเบนเปˆ Lyft, เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต sidecar เบ—เบนเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเปˆเบ™เบ”เป‰เบงเบเบชเบฐเบเบธเบ™เป€เบ‡เบดเบ™เบ—เบตเปˆเบ•เปเปˆเบฒเบซเบผเบฒเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบปเบ‡เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ™เบฑเปˆเบ‡เบขเบนเปˆเบ„เบฝเบ‡เบ‚เป‰เบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ Envoy เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบšเบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบชเบนเบ‡เบชเบธเบ”.

เบเบฒเบ™เบšเปเปˆเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเปเบ™เบงเปƒเบ”?

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

Envoy เปƒเบŠเป‰เบเบฒเบ™เบฅเบฑเบญเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเบฒเบงเบซเบผเบฒเบ:

  • เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบชเบปเบ™เบ—เบฐเบ™เบฒเบเบฑเบ™เปเบฅเป‰เบง, เป€เบกเบทเปˆเบญเบ‚เบฝเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, เบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ—เบฑเบ‡เปเบปเบ”เป„เบ”เป‰เบฎเบฑเบš lock เบ”เบฝเบงเบเบฑเบ™เบเปˆเบญเบ™เบ—เบตเปˆ buffer log in-memory เบˆเบฐเป€เบ•เบฑเบกเป„เบ›. เป€เบงเบฅเบฒเบ–เบท lock เบ„เบงเบ™เบˆเบฐเบ•เปˆเปเบฒเบซเบผเบฒเบ, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ lock เบ—เบตเปˆเบˆเบฐเปเบ‚เปˆเบ‡เบ‚เบฑเบ™เปƒเบ™ concurrency เบชเบนเบ‡เปเบฅเบฐ throughput เบชเบนเบ‡.
  • Envoy เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบชเบฐเบ–เบดเบ•เบดเบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰. เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบเบฒเบ™เบ•เบญเบšเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบเปˆเบฒเบงเป€เบ–เบดเบ‡เบชเบฑเป‰เบ™เป†เบงเปˆเบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบชเบฐเบ–เบดเบ•เบดเบเบฐเบ—เบนเป‰เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบกเบฒเบฅเบฑเบญเบเบขเบนเปˆเปƒเบ™ "เบฎเป‰เบฒเบ™เบชเบฐเบ–เบดเบ•เบด". เบเบฒเบ™เบฅเบฑเบญเบเบ™เบตเป‰เบšเปเปˆเบ„เบงเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบเบฒเบ™.
  • เบเบฐเบ—เบนเป‰เบซเบผเบฑเบเปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบเบฑเบšเบเบฐเบ—เบนเป‰เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™ "เป€เบœเบตเบเปเบœเปˆ" เบˆเบฒเบเบเบฐเบ—เบนเป‰เบซเบผเบฑเบเป„เบ›เบซเบฒเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™, เปเบฅเบฐเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบˆเบฒเบเบเบฐเบ—เบนเป‰เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบเบฐเบ—เบนเป‰เบ•เบปเป‰เบ™เบ•เป. เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบ–เบทเบเป€เบœเบตเบเปเบœเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบˆเบฑเบ”เบ„เบดเบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡. locks เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบ„เบงเบ™เบˆเบฐเบ–เบทเบเป‚เบ•เป‰เปเบเป‰เบ‡เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบฐเบเบฑเบ”เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™.
  • เป€เบกเบทเปˆเบญ Envoy เบ‚เบฝเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš (เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™), เบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบš lock เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบง, เบเบฒเบ™เบฅเบฑเบเบฅเบญเบšเบ•เบฑเบ”เป„เบกเป‰เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡ Envoy เปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบ‚เบตเป‰เบฎเป‰เบฒเบเบˆเบฒเบเบˆเบธเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™, เบชเบฐเบ™เบฑเป‰เบ™ เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบกเบฑเบ™.
  • เบกเบตเบเบฒเบ™เบฅเบฑเบญเบเปเบšเบšเบชเบธเปˆเบกเบญเบตเบเบˆเบณเบ™เบงเบ™เปœเบถเปˆเบ‡, เปเบ•เปˆเบšเปเปˆเบกเบตเบญเบฑเบ™เปƒเบ”เบญเบฑเบ™เปƒเบ”เบ—เบตเปˆเบชเบณเบ„เบฑเบ™ เปเบฅเบฐเบšเปเปˆเบ„เบงเบ™เบ–เบทเบเบ—เป‰เบฒเบ—เบฒเบ.

เบเบฐเบ—เบนเป‰เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™ Envoy เปเบเบเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบ•เบปเป‰เบ™เบ•เปเบญเบญเบเบˆเบฒเบเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™, เบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ›เบธเบ‡เปเบ•เปˆเบ‡เบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เบเบฐเบ—เบนเป‰เบซเบผเบฑเบเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ concurrently. เบžเบฒเบเบชเปˆเบงเบ™เบ™เบตเป‰เบญเบฐเบ—เบดเบšเบฒเบเป€เบ–เบดเบ‡ Envoy Thread Local Storage (TLS) เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡. เปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบธเปˆเบก.
[เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹] เปเบšเบšโ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹เบเบฐโ€‹เบ—เบนเป‰โ€‹เบ—เบนเบ”โ€‹

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

เบฅเบฐเบšเบปเบš TLS เบ‚เบญเบ‡ Envoy (Thread local storage) เป€เบฎเบฑเบ”เบงเบฝเบเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบซเบผเบฑเบเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบชเบฑเบ™เบŠเปˆเบญเบ‡เบชเบฝเบš TLS เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™, เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เป€เบ›เบฑเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบตเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ vector, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ O(1).
  • เบเบฐเบ—เบนเป‰เบ•เบปเป‰เบ™เบ•เปเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‚เปเป‰เบกเบนเบ™ arbitrary เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเปˆเบญเบ‡เบ‚เบญเบ‡เบ•เบปเบ™. เป€เบกเบทเปˆเบญเบญเบฑเบ™เบ™เบตเป‰เบชเบณเป€เบฅเบฑเบ”เปเบฅเป‰เบง, เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ–เบทเบเป€เบœเบตเบเปเบœเปˆเปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เป€เบ›เบฑเบ™เป€เบซเบ”เบเบฒเบ™ loop เป€เบซเบ”เบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบด.
  • เบเบฐเบ—เบนเป‰เบ„เบปเบ™เบ‡เบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เบˆเบฒเบเบŠเปˆเบญเบ‡ TLS เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ เปเบฅเบฐเบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™ thread-local เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เบ™เบฑเป‰เบ™.

เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เบตเปˆโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เปเบฅเบฐโ€‹เบกเบตโ€‹เบญเปเบฒโ€‹เบ™เบฒเบ” incredibly, เบกเบฑเบ™โ€‹เบ„เป‰เบฒเบโ€‹เบ„เบทโ€‹เบเบฑเบ™โ€‹เบซเบผเบฒเบโ€‹เบเบฑเบšโ€‹เปเบ™เบงโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เบ‚เบญเบ‡ RCU (Read-Copy-Updateโ€‹) เบเบฒเบ™โ€‹เบ›เบดเบ”โ€‹. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบšเปเปˆเป€เบ„เบตเบเป€เบซเบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ”เป†เปƒเบ™เบŠเปˆเบญเบ‡ TLS เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป€เบฎเบฑเบ”เบงเบฝเบ. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป„เบฅเบเบฐเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบดเบ”เบˆเบฐเบเปเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ.

Envoy เปƒเบŠเป‰เบชเบดเปˆเบ‡เบ™เบตเป‰เปƒเบ™เบชเบญเบ‡เบงเบดเบ—เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™:

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

เบเบฐเบ—เบนเป‰เบญเบฑเบšเป€เบ”เบ”เบเบธเปˆเบก

เปƒเบ™เบžเบฒเบเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™ TLS (Thread local storage) เบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบก. เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบกเบฅเบงเบกเบกเบต xDS API เปเบฅเบฐ/เบซเบผเบท DNS processing, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš.
[เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹] เปเบšเบšโ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹เบเบฐโ€‹เบ—เบนเป‰โ€‹เบ—เบนเบ”โ€‹

เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบเบธเปˆเบกเบ›เบฐเบเบญเบšเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบš เปเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. Cluster Manager เป€เบ›เบฑเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบžเบฒเบเปƒเบ™ Envoy เบ—เบตเปˆเบ„เบธเป‰เบกเบ„เบญเบ‡เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบ‚เบญเบ‡ cluster upstreams, Cluster Discovery Service (CDS) API, the Secret Discovery Service (SDS) เปเบฅเบฐ Endpoint Discovery Service (EDS) APIs, DNS, เปเบฅเบฐ active external checking. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ—เบฑเบ”เบชเบฐเบ™เบฐ "เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบชเบญเบ”เบ„เปˆเบญเบ‡" เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบเบธเปˆเบกเบ•เบปเป‰เบ™เบ™เป‰เปเบฒ, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบกเบตเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบ—เบตเปˆเบ„เบปเป‰เบ™เบžเบปเบšเป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบชเบธเบ‚เบฐเบžเบฒเบš.
  2. เบœเบนเป‰เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเป€เบฎเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™ เปเบฅเบฐเบฅเบฒเบเบ‡เบฒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบ–เบฒเบ™เบฐเบชเบธเบ‚เบฐเบžเบฒเบšเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบก.
  3. CDS (Cluster Discovery Service) / SDS (Secret Discovery Service) / EDS (Endpoint Discovery Service) / DNS เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบ›เบฑเบ™เบชเบฐเบกเบฒเบŠเบดเบเบเบธเปˆเบก. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบฅเบฑเบ”เปเบกเปˆเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบก.
  4. เปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ loop เป€เบซเบ”เบเบฒเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡.
  5. เป€เบกเบทเปˆเบญเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบกเบเบณเบ™เบปเบ”เบงเปˆเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบกเป„เบ”เป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบกเบฑเบ™เบˆเบฐเบชเป‰เบฒเบ‡เบžเบฒเบšเบ–เปˆเบฒเบเปƒเปเปˆเบ—เบตเปˆเบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบก เปเบฅเบฐ เบชเบปเปˆเบ‡เบกเบฑเบ™เป„เบ›เบซเบฒเปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™.
  6. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบ‡เบฝเบšเบชเบฐเบซเบ‡เบปเบšเบ•เปเปˆเป„เบ›, เบเบฐเบ—เบนเป‰เบ„เบปเบ™เบ‡เบฒเบ™เบˆเบฐเบญเบฑเบšเป€เบ”เบ”เบฎเบนเบšเบ–เปˆเบฒเบเปƒเบ™เบŠเปˆเบญเบ‡ TLS เบ—เบตเปˆเบˆเบฑเบ”เบชเบฑเบ™เป„เบงเป‰.
  7. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบซเบ”เบเบฒเบ™ I/O เบ—เบตเปˆเบ„เบงเบ™เบˆเบฐเบเปเบฒเบ™เบปเบ”เป‚เบฎเบ”เปƒเบ™เบเบฒเบ™เป‚เบซเบผเบ”เบเบญเบ”เป€เบ‡เบดเบ™, เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบˆเบฐเบฎเป‰เบญเบ‡เบ‚เปเบŠเปˆเบญเบ‡เปƒเบชเปˆ TLS (Thread local storage) เป€เบžเบทเปˆเบญเบ‚เปเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบฎเบ”. เบ™เบตเป‰เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบต locks. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ TLS เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบเบฐเบ•เบธเป‰เบ™เป€เบซเบ”เบเบฒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เป†เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบฅเปˆเปเบ„เบ”, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบเบฒเบ™เบ•เบญเบšเบ™เบตเป‰, เปเบ•เปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ•เปˆเบฒเบ‡เป†เปƒเบ™เบฅเบฐเบซเบฑเบ”.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, Envoy เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบธเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบเบฑเบ”เปƒเบ”เป† (เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰). เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” TLS เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒ multithreading เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เป€เบ›เบฑเบ™เบเบฐเบ—เบนเป‰เบ”เบฝเบง. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบ‚เบฝเบ™เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ‚เบถเป‰เบ™.

เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰ TLS

TLS (Thread local storage) เปเบฅเบฐ RCU (Read Copy Update) เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปƒเบ™ Envoy.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™ เบ™เบณ เปƒเบŠเป‰:

  • เบเบปเบ™เป„เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”: เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™เบ„เบดเบ”เป„เบฅเปˆเบขเบนเปˆเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ•เบปเป‰เบ™เบ•เป. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบžเบฒเบšเบ–เปˆเบฒเบเปเบšเบšเบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ RCU semantics.
  • เบเบฒเบ™เบ›เปˆเบฝเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡: เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เป‚เบ”เบ RDS (Route Discovery Service), เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ•เบปเป‰เบ™เบ•เป. เบžเบฒเบšเบ–เปˆเบฒเบเปเบšเบšเบญเปˆเบฒเบ™เบขเปˆเบฒเบ‡เบ”เบฝเบงเบˆเบฐเบ–เบทเบเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡เป‚เบ”เบเปƒเบŠเป‰ RCU (Read Copy Update) semantics. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบน.
  • HTTP header caching: เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบซเบฑเบ™เบญเบญเบ, เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบชเปˆเบงเบ™เบซเบปเบง HTTP เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป (เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเปเบฅเปˆเบ™ ~ 25K + RPS เบ•เปเปˆเบซเบผเบฑเบ) เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปเบžเบ‡. Envoy เบชเบนเบ™เบเบฒเบ‡เบ„เบดเบ”เป„เบฅเปˆเบชเปˆเบงเบ™เบซเบปเบงเบ›เบฐเบกเบฒเบ™เบ—เบธเบเป†เป€เบ„เบดเปˆเบ‡เบงเบดเบ™เบฒเบ—เบตเปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบกเบฑเบ™เปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เป‚เบ”เบเบœเปˆเบฒเบ™ TLS เปเบฅเบฐ RCU.

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

เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบ

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

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

เบชเบฐเบซเบผเบธเบš

เบฎเบนเบšเปเบšเบšเบเบฒเบ™เปƒเบชเปˆเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡ Envoy เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เป‚เบ”เบเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบชเบนเบ™เป€เบชเบเป„เบ›เบ–เป‰เบฒเบšเปเปˆเป„เบ”เป‰เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบฎเบนเบšเปเบšเบšเบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ”เบตเบซเบผเบฒเบเปƒเบ™เบˆเปเบฒเบ™เบงเบ™ thread เบชเบนเบ‡เบซเบผเบฒเบเปเบฅเบฐ throughput.
เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเบชเบฑเป‰เบ™เป†เปƒเบ™ Twitter, เบเบฒเบ™เบญเบญเบเปเบšเบšเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบฎเบนเบšเปเบšเบšเบœเบนเป‰เปƒเบŠเป‰เปเบšเบšเป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบšเป€เบŠเบฑเปˆเบ™ DPDK (Data Plane Development Kit), เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบˆเบฑเบ”เบเบฒเบ™เบซเบผเบฒเบเบฅเป‰เบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป€เบ•เบฑเบก L7. เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ›เบตเบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒ.
เบ„เปเบฒเป€เบซเบฑเบ™เบชเบฑเป‰เบ™เป†เบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบ: เบ‚เป‰เบญเบเบ–เบทเบเบ–เบฒเบกเบซเบผเบฒเบเบ„เบฑเป‰เบ‡เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบ C ++ เบชเปเบฒเบฅเบฑเบš Envoy. เป€เบซเบ”เบœเบปเบ™เบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆเบงเปˆเบฒเบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบžเบฒเบชเบฒเบŠเบฑเป‰เบ™เบฎเบฝเบ™เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒเบ—เบตเปˆเปƒเบŠเป‰เบเบฑเบ™เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เป€เบŠเบดเปˆเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰. C ++ เปเบ™เปˆเบ™เบญเบ™เบšเปเปˆ เป€เปเบฒเบฐ เบชเบปเบกเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡ เปเบปเบ” เบซเบผเบทเบซเบผเบฒเบเป‚เบ„เบ‡เบเบฒเบ™, เปเบ•เปˆ เบชเบณ เบฅเบฑเบšเบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเปƒเบŠเป‰เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ”เบฝเบงเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบซเป‰เบชเบณเป€เบฅเบฑเบ”.

เบฅเบดเป‰เบ‡เบซเบฒเบฅเบฐเบซเบฑเบ”

เบฅเบดเป‰เบ‡เบซเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆ เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปˆเบงเบ™เบซเบปเบงเบ—เบตเปˆเบชเบปเบ™เบ—เบฐเบ™เบฒเปƒเบ™เป‚เบžเบชเบ™เบตเป‰:

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

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