แกแขแแขแแแก แแแ แแแแแ:
แแ แแก แกแขแแขแแ แกแแแแแแ แกแแแแขแแ แแกแ แแแฉแแแแ แแ แ แแแแแ Envoy แงแแแแแแ แฎแจแแ แแ แแแแแแงแแแแแ แ แแแแ แช "istio"-แก แแแฌแแแ แแ แฃแแ แแแแ, แ แแแแ แช แแฃแแแ แแแขแแแแก "แจแแกแแแแก แแแแขแ แแแแ แ", แแแแแแแแแแแก แฃแแแขแแกแแแแก แแ แแฅแแก แแแแแ แแแ แแแแแ แ แฃแ แแแแ แแฅแแแแแแ แแแกแแแ, แ แแแแ แช, แแแแแแแแแ, แขแแแฃแ แแแ. Nginx แแ Haproxy แแแกแขแแแแชแแแแ. แแฃแแชแ, แแฃ แ แแแ แแแขแงแแแแ, แแแ แแ แแฅแแแแ แแแแก แแแแแแ, แแฃ แ แแแแ แแฃแจแแแแก แจแแแแแแแ. แแชแแแแแแแ แ แแช แจแแแซแแแแ แแแขแ แขแแฅแกแขแ แแแแแ แแแแ แ แฃแกแฃแแแ, แแแ แจแแ แแก แกแแแชแแแแฃแ แ แกแแขแงแแแแแช; แแแแแแแก, แแแกแแช แแแแก แงแฃแ แแแ แแขแแแแแแฃแแแ, แแ แแแแแแแแแ แคแ แฉแฎแแแแแจแ แแแแขแแแ. แแแแแแ แแงแแก แแฅแแแแ แแแแ แซแแแแแ แแแขแแจแ.
แแแแแแ แแแแแก แขแแฅแแแแฃแ แ แแแแฃแแแแขแแชแแ Envoy แแแแแแแก แแแแแกแแแแก แแแแแแแ แกแแแแแแ แแฌแแ แแ. แแแแก แแแแแกแแกแฌแแ แแแแแ แแแแแแแ แแแแ แแแกแขแแแแก แกแแ แแแก แแแแแแแแแก Envoy-แแก แกแฎแแแแแกแฎแแ แฅแแแกแแกแขแแแแแแก แจแแกแแฎแแ. แ แแแแแ แแก แแแ แแแแ แกแขแแขแแแ, แแแฎแแแ, แแแแแแแแแแแ แ แแก แคแแฅแ แแแ แแ แ แ แจแแแซแแแแ แแแแแแแขแแ แแกแแ แแแแแแแ แกแขแแขแแแแจแ.
แแ แ-แแ แแ แงแแแแแแ แแแแ แชแแแแแฃแแ แขแแฅแแแแฃแ แ แแแแฎแแ, แ แแแแแกแแช แแ แแแฆแแ Envoy-แแก แจแแกแแฎแแ, แแ แแก แแก, แ แแ แแแแฎแแแ แแแแแแ แแแแแก แแฆแฌแแ แแแแแแก แแแก แแแแ แแแแแงแแแแแฃแแ แซแแคแแแแก แแแแแแแก แจแแกแแฎแแ. แแ แแแกแขแจแ แแ แแฆแแฌแแ , แแฃ แ แแแแ แแกแแฎแแแก Envoy แแแแจแแ แแแก แซแแคแแแแแ, แแกแแแ แ แแแแ แช Thread Local Storage แกแแกแขแแแแก, แ แแแแแกแแช แแแ แแงแแแแแก แจแแแ แแแแแก แฃแคแ แ แแแ แแแแแฃแ แ แแ แแแฆแแแ แฎแแ แแกแฎแแก แแแกแแแแแแแแแ.
Threading แแแแแฎแแแแ
Envoy แแงแแแแแก แกแแ แกแฎแแแแแกแฎแแ แขแแแแก แแแแแแก:
- แแแแแแ แ: แแก แแแแ แแแแแขแ แแแแแก แแ แแชแแกแแก แแแฌแงแแแแก แแ แจแแฌแงแแแขแแก, XDS (xDiscovery Service) API-แก แงแแแแ แแแแฃแจแแแแแแก, แแแ แจแแ แแก DNS-แก, แฏแแแแ แแแแแแแก แจแแแแฌแแแแแก, แแแแกแขแแ แแแแก แแ แแฃแจแแแแแก แแ แแแก แแแแแฏแแแแขแก, แกแขแแขแแกแขแแแแก แแแแแขแแแ แแแแก, แแแแแแแกแขแ แแ แแแแก แแ แแ แแชแแกแแก แแแแแ แแแ แแแแก - Linux แกแแแแแแแแก. แชแฎแแแ แแแแแขแแแ แแแ แแ แ.แจ. แฎแแแแ แแ แแแแแจแ แแ แแก แแกแแแฅแ แแแฃแแ แแ "แแ แแแแแแแ แแแแแ". แแแแแแแ, แแแแแแ แ แแแแ แแแแ แแแแแชแแแก แฃแฌแแแก แงแแแแ แแ แแขแแแฃแ แคแฃแแฅแชแแแแแแฃแ แแ แแชแแกแก, แ แแแแแแช แแ แกแแญแแ แแแแก แแแแ แ แแแแแแแแแ CPU-แก แแแกแแจแแแแแ. แแก แกแแจแฃแแแแแแก แแซแแแแก แกแแแแแขแ แแแ แแแแแก แฃแแแขแแกแแแแก แแแแฌแแ แแก แแกแ, แแแแฅแแก แแก แแงแแก แแ แแ แฎแ แแฎแแแแแ.
- แแแแแแจแ แแแแแ: แแแแฃแแแกแฎแแแแแ, Envoy แฅแแแแก แแฃแจแ แซแแคแก แกแแกแขแแแแก แแแแแแฃแแ แขแแฅแแแแแก แซแแคแแกแแแแก, แแก แจแแแซแแแแ แแแแขแ แแแแแแแแแก แแคแชแแแก แแแแแงแแแแแแ
--concurrency
. แแแแแแฃแแ แแฃแจแ แแแแ แแฌแแ แแแแแก โแแ แแแแแแแแแแกโ แแแแแแแแก แชแแแแก, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ แแแแแแฃแแ แแกแแแแแแแก แแแกแแแแแแ; แฌแแ แแก แแ แแก (29 แฌแแแก 2017 แแแแแกแ) แแ แฎแแแแ แแกแแแแแแแก แแแแแฌแแแแแ, แแฎแแแ แแแแจแแ แแแแก แแแฆแแแ, แคแแแขแ แแก แแแกแขแแก แแแกแขแแแแชแแ. แแแแจแแ แ แแ แงแแแแ แจแแแแแแแ/แแแแแแแแแแ (IO) แแแแ แแชแแแแแก แแแแฃแจแแแแแ แแแแจแแ แแก แกแแชแแชแฎแแแก แแแแแแแแแแแจแ. แแแแแ แแ แแฎแแ, แแก แกแแจแฃแแแแแแก แแซแแแแก แแแแจแแ แแก แแแ แแแแก แแแแแแแก แฃแแแขแแกแแแแก แแแแฌแแ แแก แแกแ, แแแแฅแแก แแก แแงแแก แแ แแ แฎแ แแฎแแแแแ. - แคแแแแแแแก แแแแฌแแแแแ: แแแแแแฃแ แคแแแแก, แ แแแแแกแแช Envoy แฌแแ แก, แซแแ แแแแแแ แฌแแแแแแก แแฃแ แแแแแแก, แแแแแแแ แแฅแแก แแแแแฃแแแแแแแแ แแแแแแ แแแแก แแแแ. แแก แแแแแฌแแแฃแแแ แแแแ, แ แแ แคแแแแฃแ แ แกแแกแขแแแแก แแแแ แฅแแจแแ แแแฃแแ แคแแแแแแแก แฉแแฌแแ แ แแแแแงแแแแแแก แแ แแกแแช แแ
O_NONBLOCK
แจแแแซแแแแ แแแแฏแแ แแแแแแแแก (แแแแแกแ). แ แแแแกแแช แแฃแจแ แซแแคแแแก แกแญแแ แแแแแ แคแแแแจแ แฉแแฌแแ แ, แแแแแชแแแแแ แ แแแแฃแ แแ แแแแแแแแชแแแแแก แแแฎแกแแแ แแแแก แแฃแคแแ แจแ, แกแแแแช แแกแแแ แกแแแแแแแ แแจแแแแ แซแแคแจแ. แฉแแแแแแแแแ. แแก แแ แแก แแแแแก แแ แแ แกแคแแ แ, แกแแแแช แขแแฅแแแแฃแ แแ แงแแแแ แแฃแจแ แซแแคแก แจแแฃแซแแแ แแแแแแแแก แแ แแ แแ แแแแแ แกแแแแขแ แแแฎแกแแแ แแแแก แแฃแคแแ แแก แจแแแกแแแแก แแชแแแแแแแกแแก.
แแแแจแแ แแก แแแ แแแ
แ แแแแ แช แแแแแ แแแแแแฎแแแแ แแแแแแ, แงแแแแ แแฃแจแ แแแแ แฃแกแแแแก แงแแแแ แแกแแแแแแก แงแแแแแแแแ แ แแแจแแแก แแแ แแจแ. แแแ แแแแ, แแแ แแแ แแแแแแงแแแแแ แแฃแจแ แซแแคแแแแ แแแฆแแแฃแแ แกแแแแขแแแแก แแ แแชแแแแฃแแแ แแแกแแแแแแแแ. แแแแแแแแ แแแ แแแ แแแแแ, แ แแแแ แช แฌแแกแ, แซแแแแแ แแแ แแแ แแ แแแ แแแแจแ, แแกแแแ แแงแแแแแแ แคแฃแแฅแชแแแแก, แ แแแแ แแชแแ แจแแงแแแแแก/แแแแแกแแแแก (IO) แแ แแแ แแขแแขแแก แแแซแแแแ แแแ, แ แแแ แจแแแแกแแ แแแแ แกแแแฃแจแแแแ, แกแแแแ แแแแฌแงแแแแ แกแฎแแ แซแแคแแแแก แแแแแงแแแแแแก, แ แแแแแแแช แแกแแแ แฃแกแแแแแ แแแแแ แกแแแแขแก, แแ แแกแแแ แแ แแงแแแแแแ แแ แแแแ แ แแแแแก. แฉแแแแขแแ (Spinlock) แแแแแแฃแแ แแแแฎแแแแแก แแแกแแแฃแจแแแแแแแ.
แ แแแแ แช แแ แแแแจแแ แ แแแแฆแแแ แแฃแจแ แซแแคแแ, แแก แแ แแกแแแแก แขแแแแแก แแ แแแแแก. แแแแจแแ แแก แจแแแแแแแ แแแแฃแจแแแแแ แแแแแแแแ แแแแฎแแ แชแแแแแแแ แแฃแจแ แซแแคแจแ, แแแ แจแแ แแก แแแแแกแแแแ แ แแแแแแแกแแแแ แแแแแก แฅแชแแแ.
แแแแก แ แแแแแแแแ แแแแจแแแแแแแแแ แจแแแแแ แแฅแแก:
- แงแแแแ แแแแจแแ แแก แแฃแแ Envoy-แจแ แแแแแญแแแฃแแแ แแฃแจแ แซแแคแแ. แแกแ แ แแ, แแแฃแฎแแแแแแ แแแแกแ, แ แแ HTTP/2 แแแแจแแ แแก แแฃแแแแ แแฎแแ แชแแแแแแแ แแฎแแแแ แแ แ แแแแจแแ แก แแแแแแฃแ แแแแแ แแฃแ แฐแแกแขแแแ แแ แแแ แแฃแแแ, แแฃ แแ แแก แแแฎแ แแฃแจแ แซแแคแแแ, แแฅแแแแ แแแฎแ HTTP/2 แแแแจแแ แ แแแแ แแแแแ แ แฐแแกแขแแ แกแขแแแแแฃแ แแแแแแแ แแแแแจแ.
- แแแแแแ, แ แแก แแแแแช Envoy แแฃแจแแแแก แแ แแแแ, แแ แแก แแก, แ แแ แงแแแแแคแ แแก แแ แ แแฃแจแ แแแแแจแ แจแแแแฎแแแ, แแแแฅแแแก แงแแแแ แแแแ แจแแแซแแแแ แแแแฌแแ แแก แแแแแแแแแก แแแ แแจแ แแ แแแแฅแแก แแ แแ แแแแแแ แแงแแก. แแก แแแแแแแ แแแแแแแแแก แแแแ แ แแแแแก แแแฌแแ แแก แแ แฌแแ แแแฃแแแแแแแ แแแ แแแ แแแกแจแขแแแแแก แแฃแจแ แซแแคแแแแก แแแแฅแแแก แจแแฃแแฆแฃแแแแ แ แแแแแแแแแ.
- แแฃแแชแ, แแ แ-แแ แแ แแแแแแ แ แแแแแฏแ แแ แแก แแก, แ แแ แแแฎแกแแแ แแแแก แแฃแแแกแ แแ แแแแจแแ แแก แแคแแฅแขแฃแ แแแแก แแแแแกแแแ แแกแแ, แ แแแแฃแ แแ แซแแแแแ แแแแจแแแแแแแแแแ แแแแคแแแฃแ แแชแแแก แแแแคแแแฃแ แแชแแ.
--concurrency
. แกแแญแแ แแแ แแแขแ แแฃแจแ แซแแคแแแแก แฅแแแ แแแแแ แแแแก แแแฎแกแแแ แแแแก, แจแแฅแแแแก แแแข แฃแแแฅแแแแ แแแแจแแ แแแก แแ แจแแแแชแแ แแแก แแแแจแแ แแก แแแแ แแแแแแแแก แกแแฉแฅแแ แแก. Lyft-แจแ แฉแแแแ แแแกแแแแแก แแแแ แแแแ แแแ แแก แแแแขแแแแแ แแแ แแฃแจแแแแก แซแแแแแ แแแแแแ แแแแแฃแ แแแขแฃแแแแแ แแกแ, แ แแ แจแแกแ แฃแแแแ แฃแฎแแจแแ แแแแฎแแแแ แแ แกแแ แแแกแแแก, แ แแแแแแ แแแแ แแแ แแฏแแแก. แฉแแแ แแแแ แแแแ Envoy-แก, แ แแแแ แช edge proxy, แแฎแแแแ แแแฅแกแแแแแฃแ แ แแแแแฃแ แแแขแฃแแแแแกแแก.
แ แแก แแแจแแแแก แแแฃแแแแแแแ?
แขแแ แแแแ โแแ แแแแแแแ แแแแแโ แแฅแแแแ แแ แแแ แแฎแแ แแฅแแ แแแแแงแแแแแฃแแ, แ แแแแกแแช แแแแแฎแแแแแแแแ แแฃ แ แแแแ แแฃแจแแแแก แซแแ แแแแแ แแ แแฃแจแ แซแแคแแแ. แงแแแแ แแแแ แแฌแแ แแแ แแ แแแ แแฃแแแ, แ แแ แแ แแคแแ แ แแ แแ แแก แแแแแแแแแ. แแฃแแชแ, แแก แแ แแ แแก แแแแแ แกแแแแ แแแ (แ แแช แแ แแ แแก แแแแแ แกแแแแ แแแ?).
Envoy แแงแแแแแก แ แแแแแแแแ แฎแแแแ แซแแแแ แแ แแชแแกแแก แกแแแแขแก:
- แ แแแแ แช แแแแแแฎแแแแ, แฌแแแแแแก แแฃแ แแแแแก แฉแแฌแแ แแกแแก, แงแแแแ แแฃแจแ แแแแ แแซแแแก แแ แแกแ แแ แแแแแ แแแแแแแแแก, แกแแแแ แแแฎแกแแแ แแแแก แแฃแ แแแแแก แแฃแคแแ แ แจแแแแกแแแ. แกแแแแขแแก แแแญแแ แแก แแ แ แฃแแแ แแงแแก แซแแแแแ แแแแแแ, แแแแ แแ แจแแกแแซแแแแแแแ แกแแแแขแแก แฌแแแแแฆแแแแแแแ แแแฆแแแ แแแแแฃแ แแแขแฃแแแแแกแ แแ แแแฆแแแ แแแแขแแ แฃแแแ แแแแแแแก แแ แแก.
- Envoy แแงแแแแแก แซแแแแแ แ แแฃแ แกแแกแขแแแแก แกแขแแขแแกแขแแแแก แแแกแแแฃแจแแแแแแแ, แ แแแแแแช แแแแแแแแ แแแ แแแแแ. แแก แแฅแแแแ แชแแแแ แแแกแขแแก แแแแ. แแฃแแชแ, แแแแแแ แแฆแแแแจแแแ, แ แแ แซแแคแแแแก แกแขแแขแแกแขแแแแก แแแแแแฃแ แแ แแแแฃแจแแแแแแก แคแแ แแแแแจแ, แฎแแแแแฎแแ แกแแญแแ แแ แชแแแขแ แแแฃแ แ "stats store"-แแก แกแแแแขแแก แจแแซแแแ. แแก แฉแแแแขแแ แแ แแกแแ แแก แแ แฃแแแ แแงแแก แกแแญแแ แ.
- แแแแแแ แซแแคแก แแแ แแแแฃแแแ แกแญแแ แแแแ แแแแ แแแแแชแแ แงแแแแ แแฃแจแ แซแแคแแแ. แแก แแแแแแแ "แแแแแฅแแแงแแแแแ" แแแแแแ แ แซแแคแแแแ แแฃแจแ แซแแคแแแแแแ แแ แแแแฏแแ แแฃแจแ แซแแคแแแแแแ แแแแแแ แซแแคแแแแ. แแแแแแแแ แแแแแฎแแแก แแแแแแแแแก, แ แแแ แแแแแฅแแแงแแแแฃแแ แจแแขแงแแแแแแแ แจแแแซแแแแ แแแแแแก แ แแแจแ แแแแแแแแแแแ แแแฌแแแแแแกแแแแก. แแก แกแแแแขแแแ แแ แแกแแแแก แฃแแแ แแงแแก แกแแ แแแแฃแแแ แกแแแแแ, แแแแ แแ แแแแ แขแแฅแแแแฃแ แแ แแแแแแแแ แแแแแช แจแแกแแซแแแแแแแ.
- แ แแแแกแแช Envoy แฌแแ แก แแฃแ แแแแก แกแแกแขแแแแก แจแแชแแแแแแแก แแแแแแจแ (แกแขแแแแแ แขแฃแแ แจแแชแแแแ), แแก แแซแแแก แแแแแแแแแก แแแแ แแ แแชแแกแแ. แแแแแแแ, Envoy-แแก แแแแแแฃแ แ แฎแแแแ แจแแกแ แฃแแแแแก แแแแแกแแแ แแกแแ แกแแจแแแแแ แแแแแแแ, แแแแขแแ แแแก แแแฃแแฏแแแแกแแแแก แแแแ แงแฃแ แแแฆแแแ แแ แแฅแชแแแแ.
- แแ แแก แ แแแแแแแแ แกแฎแแ แจแแแแฎแแแแแแ แฉแแแแแขแ, แแแแ แแ แแ แชแแ แแ แแแแแแแ แแ แแ แแก แแ แแขแแแฃแแ แจแแกแ แฃแแแแแแ แแ แแ แแกแแแแก แฃแแแ แแงแแก แแแแแฌแแแฃแแ.
แแแแแก แแแแแแแแ แแแ แกแแชแแแ
แแแแก แแแแ, แ แแ แแแแแ แแแแแกแฎแแแแแแก แซแแ แแแแแ แซแแคแแก แแแกแฃแฎแแกแแแแแแแแแแก แแฃแจแ แซแแคแแก แแแกแฃแฎแแกแแแแแแแแแแแกแแแ, แแ แกแแแแแก แแแแฎแแแแ, แ แแ แ แแฃแแ แแแแฃแจแแแแแ แจแแแซแแแแ แแแแฎแแ แชแแแแแแก แแแแแแ แซแแคแแ แแ แจแแแแแ แแแแฌแแแแก แแแแแแฃแ แแฃแจแ แซแแคแก แฃแแฆแ แแกแแ แแ แแแ แแฃแแแ. แแก แแแแงแแคแแแแแ แแฆแฌแแ แก Envoy Thread Local Storage (TLS) แแแฆแแ แแแแแแ. แจแแแแแ แแแฌแแแจแ แแ แแฆแแฌแแ , แแฃ แ แแแแ แแแแแแงแแแแแ แแก แแแแกแขแแ แแก แแแ แแแแกแแแแก.
แ แแแแ แช แฃแแแ แแฆแแแแจแแแ, แแแแแแ แ แแแแ แแแฃแจแแแแแก แคแแฅแขแแแ แแแแ แแแ แแแแกแ แแ แแแแขแ แแแแก แกแแแ แขแงแแก แคแฃแแฅแชแแแแแ แแแแก Envoy-แแก แแ แแชแแกแจแ. แกแแแแแขแ แแแ แกแแแ แขแงแ แแฅ แชแแขแ แแแแแขแแแ แแฃแแแ, แแแแ แแ แ แแชแ แแแก แแแแแ Envoy-แแก แแ แแชแแกแจแ แฃแงแฃแ แแ แแ แแแแ แแ แแแแแแแกแแแแ แแแแแก, แ แแกแแช แแฃแจแ แซแแคแแแ แแแแแแแแ, แแแ แ แแฅแแก. แแแแแแ แฌแแกแแ, แ แแ แซแแ แแแแแ แซแแคแแแแก แแ แแชแแกแ แแแ แแแแฃแ แกแแแฃแจแแแก แแกแ แฃแแแแก แแ แจแแแแแ แแแก แกแญแแ แแแแ แแแแแแฃแแ แแฃแจแ แซแแคแแก แแแแแฎแแแแ แแ แกแแแฃแจแแแก แจแแแแแแก แแแฎแแแแแ. แแ แจแแแแฎแแแแแจแ, แแฃแจแ แซแแคแก แแ แกแญแแ แแแแ แกแแแแขแแก แแแแแแแแ แแแแแแฃแ แฌแแแแแแแ.
Envoy-แแก TLS (Thread local storage) แกแแกแขแแแ แแฃแจแแแแก แจแแแแแแแแแ แแ:
- แแแแแแ แซแแคแแ แแแจแแแแฃแ แแแแก แจแแฃแซแแแ แแแแแงแแก TLS แกแแแขแ แแแแแ แแ แแชแแกแแกแแแแก. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแก แแ แแก แแแกแขแ แแฅแขแฃแแ, แแ แแฅแขแแแแจแ แแก แแ แแก แแแแแฅแกแ แแแฅแขแแ แจแ, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก O(1) แฌแแแแแแก.
- แแแแแแ แแแแแก แจแแฃแซแแแ แแแแแแแแฃแ แ แแแแแชแแแแแแก แแแงแแแแแ แแแแแก แกแแแขแจแ. แ แแแแกแแช แแก แแแแแแแ, แแแแแชแแแแแ แฅแแแงแแแแแ แแแแแแฃแ แแฃแจแ แแแแแจแ, แ แแแแ แช แฉแแแฃแแแแ แแแ แแแแแแแแก แแแ แงแฃแแแก แแแแแแแ.
- แแฃแจแ แซแแคแแแก แจแแฃแซแแแแ แฌแแแแแแฎแแ แแแแแแแแ TLS แกแแแขแแแแ แแ แแแแซแแแ แแฅ แแ แกแแแฃแแ แแแแแกแแแแ แ แซแแคแแแแก แแแแแแแแ แแแ แแแแแชแแแแแ.
แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแก แแ แแก แซแแแแแ แแแ แขแแแ แแ แฌแแ แแแฃแแแแแแแ แซแแแแ แ แแแ แแแแแแ, แแก แซแแแแแ แฐแแแแก RCU (Read-Copy-Update) แแแแแแ แแแแก แแแแชแแคแชแแแก. แแ แกแแแแแแ, แแฃแจแแแ แซแแคแแแ แแ แแกแแแแก แฎแแแแแแ แแแแแชแแแแ แ แแแแ แชแแแแแแแแก TLS แกแแแขแแแจแ แแฃแจแแแแแก แแ แแก. แชแแแแแแแ แฎแแแแ แแฎแแแแ แกแแแฃแจแแ แแแแแแแแแก แจแแ แแก แแแกแแแแแแแก แแแ แแแแจแ.
Envoy แแงแแแแแก แแแแก แแ แ แแแแกแฎแแแแแแฃแแ แแแแ:
- แแแแแแฃแ แแฃแจแ แซแแคแแ แกแฎแแแแแกแฎแแ แแแแแชแแแแแแก แจแแแแฎแแแ, แแแแแชแแแแแแ แฌแแแแแ แจแแกแแซแแแแแแแ แงแแแแแแแแ แ แแแแแแแแแก แแแ แแจแ.
- แแแแแแแฃแ แแแแแชแแแแแแ แกแแแ แแ แแแฉแแแแแแแแก แจแแแแ แฉแฃแแแแแ แแฎแแแแ แฌแแแแแฎแแแก แ แแแแแจแ แแแแแแฃแ แแฃแจแ แซแแคแแ. แแแ แแแแ, แแแแแแฃแ แแฃแจแ แแแแแก แแฅแแก แแแแแชแแแแ แแแแแแแแแก แ แแแแแแแแ, แ แแแแแแช แแ แจแแแซแแแแ แจแแแชแแ แแแก แกแแแฃแจแแแก แจแแกแ แฃแแแแแกแแก. แแฎแแแแ แแแจแแ, แ แแแแกแแช แงแแแแ แแแแแแจแ แแแแแ แแแแจแแแแแแแ แแ แแขแแแ แแแแก แแฎแแ แแแแแแ แแแฃแ แแแแแชแแแแแก, แซแแแแ แแแแแชแแแแแ แแแแแแแฃแ แแแแ. แแก แแ แแก RCU-แก แแแแแขแฃแ แ.
แแแแกแขแแ แฃแแ แแแแแฎแแแแแก แแแแแขแแแ
แแ แแแแงแแคแแแแแแจแ แแ แแฆแแฌแแ , แแฃ แ แแแแ แแแแแแงแแแแแ TLS (Thread local storage) แแแแกแขแแ แแก แกแแแแ แแแแแ. แแแแกแขแแ แแก แแแ แแแ แแแแชแแแก xDS API แแ/แแ DNS แแแแฃแจแแแแแแก, แแกแแแ แฏแแแแ แแแแแแแก แจแแแแฌแแแแแก.
แแแแกแขแแ แฃแแ แแแแแแแก แแแ แแแ แแแแชแแแก แจแแแแแ แแแแแแแแแขแแแก แแ แกแแคแแฎแฃแ แแแก:
- Cluster Manager แแ แแก แแแแแแแแแขแ Envoy-แจแ, แ แแแแแแช แแแ แแแแก แงแแแแ แชแแแแแ แแแแกแขแแ แฃแ แแแแ แแแแแแก, Cluster Discovery Service (CDS) API, Secret Discovery Service (SDS) แแ Endpoint Discovery Service (EDS) API-แแแก, DNS-แก แแ แแฅแขแแฃแ แแแ แ แจแแแแฌแแแแแก. แฏแแแแ แแแแแแแก แจแแแแฌแแแแ. แแก แแแกแฃแฎแแกแแแแแแแแ แแแแแแฃแแ แแแแแ แแฃแแ แแแแกแขแแ แแก โแกแแแแแแแ แแแแแแแแแแ แฃแแโ แฎแแแแก แจแแฅแแแแแ, แ แแแแแแช แแแแชแแแก แแฆแแแฉแแแแ แแแกแแแแซแแแแก แแ แแกแแแ แฏแแแแ แแแแแแแก แแแแแแแ แแแแแก.
- แฏแแแแ แแแแแแแก แจแแแแแฌแแแแแแ แแฎแแ แชแแแแแแก แฏแแแแ แแแแแแแก แแฅแขแแฃแ แจแแแแฌแแแแแก แแ แแชแแแแแแก แฏแแแแ แแแแแแแก แแแแแแแ แแแแแก แชแแแแแแแแแก แแแแกแขแแ แแก แแแแแฏแแ แก.
- CDS (Cluster Discovery Service) / SDS (Secret Discovery Service) / EDS (Endpoint Discovery Service) / DNS แจแแกแ แฃแแแแฃแแแ แแแแกแขแแ แแก แฌแแแ แแแแก แแแกแแแแแแแ. แแแแแแแ แแแแแก แชแแแแแแแ แฃแแ แฃแแแแแ แแแแกแขแแ แแก แแแแแฏแแ แก.
- แแแแแแฃแแ แแฃแจแ แซแแคแ แแแแฃแฌแงแแแขแแแ แแฎแแ แชแแแแแแก แแแแแแแแก แชแแแแก.
- แ แแแแกแแช แแแแกแขแแ แแก แแแแแฏแแ แ แแแแแแก, แ แแ แแแแกแขแแ แแก แแแแแแแ แแแแ แจแแแชแแแแ, แแก แฅแแแแก แแแแกแขแแ แแก แแแแแแแ แแแแแก แแฎแแ แกแฃแ แแแก แแฎแแแแ แฌแแกแแแแแฎแแ แแ แแแแแแแแก แแแก แแแแแแฃแ แแฃแจแ แแแแแจแ.
- แแแแแแแแ แแจแแแแ แแแ แแแแแก แแแแแแแแแแแจแ, แแฃแจแ แแแแ แแแแแแฎแแแแก แกแแแแจแแขแก แแแแแงแแคแแ TLS แกแแแขแจแ.
- I/O แแแแแแแแก แแ แแก, แ แแแแแแแช แฃแแแ แแแแกแแแฆแแ แแก แฐแแกแขแ แแแแแแกแแก แฉแแกแแขแแแ แแแ, แแแขแแแ แแแแก แแแแแแกแแ แ แแแแแฎแแแก TLS (Thread local storage) แกแแแขแก แฐแแกแขแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แแแกแแฆแแแแ. แแก แแ แกแแญแแ แแแแก แกแแแแขแแแก. แแกแแแ แแแแแแแแแกแฌแแแแ, แ แแ TLS-แก แแกแแแ แจแแฃแซแแแ แแแแแฎแแแแแก แแแแแแแแแแก แแแแฅแขแแฃแ แแแ, แ แแแ แแแขแแแ แแแแก แแแแแแกแแ แแแแ แแ แกแฎแแ แแแแแแแแแขแแแแ แจแแซแแแ แฅแแจแแก, แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแแแก แแ แ.แจ. แแก แกแชแแแแแแ แแ แแแกแขแแก แคแแ แแแแแก, แแแแ แแ แแแแแแงแแแแแ แแแแแก แกแฎแแแแแกแฎแแ แแแแแแแก.
แแแแแแฆแแแจแแฃแแ แแ แแชแแแฃแ แแก แแแแแงแแแแแแ, Envoy-แก แจแแฃแซแแแ แแแแแฃแจแแแแก แงแแแแ แแแแฎแแแแ แงแแแแแแแแ แ แแแแแแแแแก แแแ แแจแ (แแแ แแ แแแแแ แแฆแฌแแ แแแแกแ). แแแ แแ แแแแแ TLS แแแแแก แกแแ แแฃแแแกแ, แแแแแก แฃแแแขแแกแแแแก แแ แกแญแแ แแแแ แแแแก แแแแแแ, แแฃ แ แแแแ แแฃแจแแแแก แแ แแแแแแแแแแฃแ แ แแ แจแแแซแแแแ แแแแฌแแ แแก แแ แแแแแแแแ. แแก แแแแแแแแแก แแแแแก แฃแแแขแแกแแแแก แแแฌแแ แแก แฃแแแฆแแแกแ แจแแกแ แฃแแแแแก แแแ แแ.
แกแฎแแ แฅแแแกแแกแขแแแแแ, แ แแแแแแแช แแงแแแแแแ TLS-แก
TLS (Thread local storage) แแ RCU (Read Copy Update) แคแแ แแแ แแแแแแงแแแแแ Envoy-แจแ.
แแแแแงแแแแแแก แแแแแแแแแแ:
- แจแแกแ แฃแแแแแก แแ แแก แคแฃแแฅแชแแแแแ แแแแก แจแแชแแแแก แแแฅแแแแแแ: แฉแแ แแฃแแ แคแฃแแฅแชแแแแแก แแแแแแแแ แ แกแแ แแแแแแแแแแแ แแแแแแ แแแแแจแ. แจแแแแแ แแแแแแฃแ แแฃแจแ แซแแคแก แแซแแแแ แแฎแแแแ แฌแแแแแฎแแแก แกแฃแ แแแ RCU แกแแแแแขแแแแก แแแแแงแแแแแแ.
- แแแ แจแ แฃแขแแแแก แชแฎแ แแแแแแก แจแแชแแแ: RDS-แแก (Route Discovery Service) แแแแ แแแฌแแแแแฃแแ แแแ แจแ แฃแขแแแแก แชแฎแ แแแแแแกแแแแก, แแแ แจแ แฃแขแแแแก แชแฎแ แแแแแ แแฅแแแแแ แแแแแแ แแแแแจแ. แแฎแแแแ แฌแแแแแฎแแแแ แกแแแแจแแขแ แจแแแแแแแจแ แแแแฌแแแแแ แแแแแแฃแ แแฃแจแ แแแแแก RCU (Read Copy Update) แกแแแแแขแแแแก แแแแแงแแแแแแ. แแก แฎแแแก แแแ แจแ แฃแขแแแแก แชแฎแ แแแแแแก แจแแชแแแแก แแขแแแฃแ แแ แแคแแฅแขแฃแ แ.
- HTTP แกแแแแฃแ แแก แฅแแจแแ แแแ: แ แแแแ แช แแ แแแแแ, HTTP แกแแแแฃแ แแก แแแแแแแแ แแแแแแฃแแ แแแแฎแแแแแกแแแแก (แแแแ แแแ แแแแ ~25K+ RPS-แแก แแแจแแแแแกแแก) แกแแแแแแ แซแแแ แแ. Envoy แชแแแขแ แแแแแแแฃแแแ แแแแแแก แกแแแแฃแ แก แแแแฎแแแแแแ แงแแแแ แแแฎแแแแ แฌแแแจแ แแ แแฌแแแแก แแแก แแแแแแฃแ แแฃแจแแแก TLS แแ RCU แกแแจแฃแแแแแแ.
แแ แแก แกแฎแแ แจแแแแฎแแแแแแ, แแแแ แแ แฌแแแ แแแแแแแแแแ แแแ แแแ แฃแแแ แแแแกแแแแแก, แแฃ แ แแกแแแแก แแแแแแงแแแแแ TLS.
แชแแแแแแ แจแแกแ แฃแแแแแก แฎแแ แแแแแแ
แแแฃแฎแแแแแแ แแแแกแ, แ แแ Envoy แกแแแแแแ แแแ แแแ แแฃแจแแแแก แแแแแแแแแแจแ, แแ แแก แ แแแแแแแแ แแแแจแแแแแแแแแ แกแคแแ แ, แ แแแแแแช แแแแแฎแแแก แงแฃแ แแแฆแแแแก, แ แแแแกแแช แแก แแแแแแงแแแแแ แซแแแแแ แแแฆแแแ แแแแแฃแ แแแขแฃแแแแแแ แแ แแแแขแแ แฃแแแ แแแแแแแ:
- แ แแแแ แช แแฆแฌแแ แแแแ แแ แกแขแแขแแแจแ, แแแแแแแ แงแแแแ แแฃแจแ แซแแคแแแ แแแแแแแแ แฌแแแแแแก แแฃแ แแแแแก แแแฎแกแแแ แแแแก แแฃแคแแ แจแ แฉแแฌแแ แแกแแก. แแแฆแแแ แแแแแฃแ แแแขแฃแแแแแกแ แแ แแแฆแแแ แแแแขแแ แฃแแแ แแแแแแแก แแ แแก, แแฅแแแ แแแแญแแ แแแแแ แฌแแแแแแก แแฃแ แแแแแแแก แฏแแฃแคแฃแ แ แจแแแ แแแ แแแแแแฃแแ แแฃแจแ แซแแคแแกแแแแก, แกแแแแแแ แคแแแแแ แฉแแฌแแ แแกแแก แแฌแงแแแ แแแแ แแแแแกแฃแแ แแแฌแแแแแแก แฎแแ แฏแแ. แแแขแแ แแแขแแฃแแแ, แจแแแแซแแแแ แจแแฅแแแแ แชแแแแ แฌแแแแแแก แแฃแ แแแแ แแแแแแฃแแ แแฃแจแ แซแแคแแกแแแแก.
- แแแฃแฎแแแแแแ แแแแกแ, แ แแ แกแขแแขแแกแขแแแ แฃแแฆแ แแกแแ แแแขแแแแแแ แแแฃแแแ, แซแแแแแ แแแฆแแแ แแแแแฃแ แแแขแฃแแแแแกแ แแ แแแแขแแ แฃแแแ แแแแแแแก แแ แแก, แกแแแแ แแฃแแแ, แแฅแแแแ แแขแแแฃแ แ แแแแแแ แชแแแแแฃแ แกแขแแขแแกแขแแแแแ. แแ แแ แแแแแแแก แแแแแฌแงแแแขแ แแ แแก แแ แแชแฎแแแแแแ แแแแ แแฃแจแ แซแแคแแ แชแแแขแ แแแฃแ แ แแ แแชแฎแแแแแแแก แแแ แแแแฃแแ แแแแแขแแแ แแแแ. แแแแก แจแแกแแฎแแ แแแแแแแแ แแแกแขแจแ แแฅแแแแ แแแแฎแแแฃแแ.
- แแแแแแแแแแแ แแ แฅแแขแแฅแขแฃแ แ แแ แแแฃแจแแแแแก แแแ แแแ, แแฃ Envoy แแแแแแแแแแ แกแชแแแแ แจแ, แกแแแแช แซแแแแแ แชแแขแแ แแแแจแแ แแแ, แ แแแแแแแช แกแแญแแ แแแแแ แแแแจแแแแแแแแ แแแแฃแจแแแแแแก แ แแกแฃแ แกแแแก. แแ แแ แกแแแแแก แแแ แแแขแแ, แ แแ แแแแจแแ แแแ แแแแแแ แแ แแแแแแแฌแแแแแแ แแฃแจแ แซแแคแแแก แจแแ แแก. แแก แจแแแซแแแแ แแแแแแ แแแก แแฃแจแแแ แแแแจแแ แแก แแแแแแแแกแแแแก แแแแฎแแ แชแแแแแแแ, แ แแช แกแแจแฃแแแแแแก แแแกแชแแแก แแแแจแแ แแแแก แแแชแแแแก แแฃแจแ แซแแคแแแก แจแแ แแก.
แแแกแแแแ
Envoy-แแก threading แแแแแแ แจแแฅแแแแแแ แแแแกแแแแแก, แ แแ แฃแแ แฃแแแแแงแแก แแ แแแ แแแแ แแแแก แกแแแแ แขแแแ แแ แแแกแแฃแ แ แแแ แแแแแแแแ แแแขแแแชแแฃแ แแ แคแฃแญแแแแแ แแแฎแกแแแ แแแแก แแ แแแแจแแ แแแแก แฎแแ แฏแแ, แแฃ แแ แแกแฌแแ แแ แแ แแก แแแแคแแแฃแ แแ แแแฃแแ. แแก แแแแแแ แกแแจแฃแแแแแแก แแซแแแแก แแแก แซแแแแแ แแแ แแแ แจแแแกแ แฃแแแก แซแแคแแแแก แซแแแแแ แแแฆแแแ แ แแแแแแแแ แแ แแแแขแแ แฃแแแ แแแแแแ.
แ แแแแ แช แแแแแแ แแฆแแแแจแแ Twitter-แแ, แแแแแแแ แแกแแแ แจแแแซแแแแ แแแฃแจแแแก แแแแฎแแแ แแแแแก แ แแแแแแก แกแ แฃแแ แฅแกแแแแก แแแกแขแแแ, แ แแแแ แแชแแ DPDK (Data Plane Development Kit), แ แแแแช แจแแแซแแแแ แแแแแแฌแแแแก แฉแแแฃแแแแ แแแ แกแแ แแแ แแแ แแแแแแแแแแ แแแแฎแแแแแก แฌแแแจแ แกแ แฃแแ L7 แแแแฃแจแแแแแแ. แซแแแแแ แกแแแแขแแ แแกแ แแฅแแแแ แแแแก แฎแแแแ, แแฃ แ แ แแจแแแแแแ แแแแแแแแ แ แแแแแแแแ แฌแแแก แแแแแแแแแแแจแ.
แแ แแ แแแแ แกแฌแ แแคแ แแแแแแขแแ แ: แแ แแแแ แฏแแ แแแแแฎแแก, แ แแขแแ แแแแ แฉแแแ C++ Envoy-แกแแแแก. แแแแแแ แ แฉแแแ แแก, แ แแ แแก แฏแแ แแแแแ แแ แแก แแ แแแแแ แแ แคแแ แแแ แแแแแงแแแแแฃแแ แแแแฃแกแขแ แแฃแแ แแแแกแแก แแแ, แ แแแแแจแแช แจแแแซแแแแ แแจแแแแแก แแ แแแกแขแจแ แแฆแฌแแ แแแ แแ แฅแแขแแฅแขแฃแ แ. C++ แแแแแแแแแ แแ แแ แแก แจแแกแแคแแ แแกแ แงแแแแ แแ แแฃแแแแช แแ แแแแแ แแ แแแฅแขแแกแแแแก, แแแแ แแ แแแ แแแแฃแแ แแแแแงแแแแแแก แจแแแแฎแแแแแแแกแแแแก แแก แแแแแช แแ แแแแแ แแ แแแกแขแ แฃแแแแขแแ แกแแแฃแจแแแก แจแแกแแกแ แฃแแแแแแ.
แแแแแก แแแฃแแแแ
แแ แแแกแขแจแ แแแแฎแแแฃแแ แคแแแแแแแก แแแฃแแแแ แแแขแแ แคแแแกแแแแ แแ แกแแแแฃแ แแก แแแแฎแแ แชแแแแแแแ:
github.com/lyft/envoy/blob/master/include/envoy/thread_local/thread_local.h github.com/lyft/envoy/blob/master/source/common/thread_local/thread_local_impl.h github.com/lyft/envoy/blob/master/include/envoy/upstream/cluster_manager.h github.com/lyft/envoy/blob/master/source/common/upstream/cluster_manager_impl.h
แฌแงแแ แ: www.habr.com