ααΆαααααααα’αααααα
αααα»αααΆαααααΎαα’αααααααααα½αα±ααα
αΆααα’αΆααααααααΆαα α αΎαα
αΆααααΆααααΈ Envoy ααααΌαααΆαααααααΎααΉαααΆαααααα»αααΆααααααα½ααα "istio" α¬ααΆααααααΆ "α§ααααααααααΆ ingress" αα kubernetes ααα»αααααΆαα
αααΎααα·αααΆαα’ααααααααααααΆααααΆαα½αααΆααΌα
α§ααΆα αααααΆαα½αααααααΆααα ααΆαααα‘αΎα Nginx α¬ Haproxy α αααααΆαααΆαααΆαααααααααα·αααΎααΆαα’αααΈαα½αααΌα
ααΆααΆααΆαααα’αααα»αααΆααααααΈαααααααααΆααααΎαααΆαααΈααΆααααα»αα αααα»αααΆαααααΆααΆαααααααα’αααααααΆααΆααΆαα»ααααΈα±ααααΆαα
αααΎαααΆααααα’αΆα
ααααΎαα
ααΆα αα½αααΆααααΆααααα·αααααααα αααααΆααα’αααααααααααΎαααΆααΆααΊα
αΆαααααα»αααΆαααΎαααΏαααα αααα»αααΆααα»αα’ααααααΎααα
αααα»αααααααα
αα ααΌαααααΆααααααααΆααααααΆα
α―αααΆααα
αα
αααααααααα·αααΆααααααΆααααΌαααααΆαααΌα Envoy αα
αα
α»ααααααααΆαααααα·ααα·α
αα½α
α ααΎααααΈβαααααααΆαβαααα αΆβααα αααα»αβααΆαβααααααβααααΎβααΆαβαααααΆαβαααααβααΆβαααααααααΆααβα’αααΈβααααααααβααβααααααβαααα Envoy α αααααΆααααααΆα’αααααααααΌα ααΌαααααΆαααααα»αααΈα’αααΈαααα’ααααα·α αα·αα’αααΈαααα’ααααααα ααααΆα
αΆααα’αΆαααααααα
αααα»αα’αααααααΆαααα’ααΆααα
αααα½ααα αα αααααααΌαα αααα»ααα½αααααααα»αααα½αααΆαα’αααΈ Envoy ααΊααΆαααααΎαα»αααΆααα·αααααΆααααα·αααΆαααααααΌαααααααα‘αΆααααααΆααααΎα αα αααα»αααΆααααα ααααα αααα»αααΉααααααΆααααΈααααααα Envoy ααααΆαααααααΈααααΆαααα αααααααααΆα ααααΌα ααΆαααααααα Thread Local Storage αααααΆααααΎααααΆααααΆααααα»αααΎααααΈααααΎα±ααααΌαααΆααααααΆαααΆαααααααααΆ αα·αααΆαααααα·αααααΆααααααα
αα·αααααΆαααΌαα αααααααααα‘αΆα
ααααααααααΎααααααΈαααΈαααααααααααααααΆα
- ααα αααααααααΆαααααααααααααααααΎαααΆαα αΆααααααΎα αα·αααΆααααα αα ααααΎαααΆαααΆααα’αααα XDS (xDiscovery Service) API αα½αααΆαα DNS ααΆααααα½ααα·αα·ααααα»αααΆα ααΆααααααααααα αααααααΌαα αα·ααααααααΎαααΆα ααΆααααααα‘αΎααα·α αααα·αα· ααΆαααααααααα αα·αααΆααααααααααααααΎαααΆαααΌαα - αααααΆααΈαα»α ααΆαα αΆααααααΎαα‘αΎααα·ααααα ααα ααΎαα‘αΎααα αααα»ααααααααα‘αΆααααααΊα’ααααΆα αα·α "αα·ααααααααΆαα" α ααΆααΌαα ααααααααΆαααααααααααα½αααααΎαααΆααα»αααΆαααααΆαααααΆααα’αα ααααα·αααααΌαααΆα CPU α αααΎαααΎααααΈααααΎαααΆαα αααα’αα»ααααΆαα±αααααααααΌααααααααααααΆαα αααΎαααΌα ααΆααΆααααΌαααΆααααα αΌααααα½αααααα
- ααααααα ααΆαααααΆαααΎα αααααα·ααααααΎααααααααα‘αΆααααααααααααΆαααααααααα‘αΆααααααααΉαααΈαα½αααα
αααα»ααααααααα ααΆα’αΆα
ααααΌαααΆαααααααααααααααααΎαααααΎα
--concurrency
. αααααααα‘αΆααααααααα·αα½ααααααΎαααΆαααααα·ααα»αααααΉαααα·ααΆααα "αα·αααΆααΆαα" αααααα½ααα»αααααΌαα ααααααΆαααααΆααα’αααααααΆααααΈαα½αα αα αααααααα (ααααααΈ 29 ααααααααΆ ααααΆα 2017) αα·αααΆαααΆααααααα’αααααααΆαααα ααΆαααα½αααααΆααααααΆααααααΈ αααααΎαααααα»ααααααααααΆαααααααΆαα ααΆααααααΆαα αα·αααααΎαααΆαααααα·ααααα·ααΆααααα αΌα/αα·ααααα (IO) ααΆααα’αααααα»αα’αα‘α»ααααααααΆααααααΆααα ααΆααααΈααααααα αααα’αα»ααααΆαα±ααααΌααααααααααααΆααααααΆααααΆαα αααΎαααααΌαααΆααααααααΌα ααΆααααα·αααΎααΆααααΌαααΆααααα αΌααααααααα½αα - α§ααααααααααα―αααΆαα α―αααΆαααΈαα½ααααα Envoy ααααα ααΆαα
αααΎαα
αΌαααααΎαααααα ααα» αα
αα
α»ααααααααΆααααααΆααααααααΆααα―αααΆαααα αααααΊαααααΆαααααΆααα·ααααααΆααΆαααααααα
α―αααΆαααααααα»ααααααααααααα―αααΆαααΌααααΈαααα
αααααααΎ
O_NONBLOCK
αααααααα’αΆα ααααΌαααΆαααΆααΆαα (αααααα αΎααα) α αα αααααααααααααα‘αΆαααααααααααΌαααΆαααααααα α―αααΆααα½α αα·αααααααα·αααΆααααΌαααΆαααααΆααααΈαα ααα·ααααααα’αΆαααααααα»αα’αααα αα αΆα αααααΈαααα»αααΆααααΌαααΆαα αΌαααΆααααααααααΆα αα»αα―αααΆα. αααααΊααΆααααααα½αααααΌααααααΆααα αα ααααα αααααααα‘αΆαααααααααΆααα’ααα’αΆα αα·αααααΌα ααααΆ αααααααααααααΆααΆααααααα’αααα αα αΆαα
ααΆααααααααααααΆαααααΆαα
ααΌα
αααααΆααα·ααΆααααΆαααααααααααΆαααΎ αααααααααΆααααααααααΆααα’αα ααααΆααα’αααααααΆααααΆααα’ααααααα·αααΆαααΆαααααααααα·αα‘αΎαα ααΌα
αααα ααΊαααβααααΌαβααΆαβααααΎβααΎααααΈβααααΎβααααβαααβααα½αβααβαααβααααα·αβαα
βααΆααβααααβαααα‘αΆαβααααβααααααα ααΊαααααααΎαααΆααΌαα
ααα’ααΆααα
ααααααΏαααα αα½αααααααΎαααααααα·αααααΌα
ααΆααΆααααα»αα’αΆαα·ααΆααααα
αΌα/αα·ααααα (IO) ααΎααααΈααααΆααΆαααααααααααααα‘αΆαααΆαα½αααΆαααΆα αα»αααααα½αααα
αΆααααααΎαααααΎαααααααα‘αΆαααααααααααααααα»αααααΆαααα
ααΎααααααΌα
ααααΆ α αΎααααα·αααααΎαααΌαααΈαααΌααααα α
αΆαααα (Spinlock) ααΎααααΈααααΎαααΆαααααΎααΈαα½ααα
αα
ααααααααΆααααααΆααααααΌαααΆαααα½ααααα
ααΎαααααααα‘αΆααααααα ααΆαα·ααααα
αΆαα
ααααΈαααααααα‘αΆααααααα ααααΎαααΆααααααααααααααΆααααααΆααααΆααα’ααααααΌαααΆααααααααααααΆαααααα»ααα
αααα»ααααααααα‘αΆααααααααααα αα½αααΆααα₯αα·ααΆαααααααΌαααααα
ααΆααΆααααα·ααΆαααααΆααααα½αα ααα½αα
- αααααΆααααααΆααααΆααα’αααα αααα»α Envoy ααααΌαααΆαα αΆααα±αααα αααααααα‘αΆαααααααα ααΌα αααα αααααΈααΆαααα»ααααααΆαα HTTP/2 αααααΎαααΆααααααΆαααααα½ααα αααΆαααΈαααΆαααΎααΈαα½αααα ααααααα½αααααα ααααα·αααΎααΆααααααααα‘αΆαααααααα ααα½α 2 ααΆααΉαααΆαααΆααααααΆαα HTTP/XNUMX α ααα½ααα½ααααα»ααα½ααααΆαααΈαααΆαααΎαααα»αααααΆαααΆααααα·αααΆαα
- α ααα»ααααα Envoy ααααΎααΆαααΆααααααααααΊαααααΆαααΆααααααΆα’αααΈαααααααααΆααα ααΎαααααααα‘αΆααααααααααα½α ααΌαααααΎαααααΆααα’ααα’αΆα ααααΌαααΆααααααααααα·αααΆαααΆααααααααΆαα α αΎαααΌα ααΆααΆααΆαααααααα½αα ααΆααα ααΆαααααααΎα±ααααΆαααΆαααΆααααα½ααααα»αααΆααααααααΌαααΆα αααΎα αα·αααααΎααΆαααααααΆαααΆααααΆαααα’αα·ααα½αα±ααααΏα ααααα ααα½ααααααααα‘αΆαααααααααααΎαααααααΆαααααααααα
- αααααΆαααΆαααΆααααα α
ααα»α
ααααΆαααα½αααΊααΆ ααΈα’αααα
αα
αΆα αα·αααααααααααα·αααααΆαααααΆααααααΆαα ααΆαα·αααΆααΆαααΆααααααΆααααααΆααααΆαααααα»αααΆαααααααα
ααΆαααααααα
--concurrency
. ααΆαααΆααααααααα‘αΆαααααααα αααΎαααΆαααΆαα αΆαααΆα αααΉαααααααααΆαααΆαα αα αΆα αααααΎαααΆααααααΆαααααααα αααΎα αα·αααΆαααααααα’ααααΆααααΆααααααΆαααααα αΌαααααΆα αα Lyft αα»αααΊαααααααααα αα ααααααααααααααααααΎαααααΎαααΆααααααΆαααααααααΆααΆααααα»α ααΌα ααααααΆαα’αα»αααααααα αΆαααααα ααααΉαααααΆααααααααα½αααα’αααα»ααααααα ααΎαααααΎαααΆα Envoy ααΆααααΌααααΈααααααα ααααααααΆα’αα·ααααΆααα»αααααα
ααΎααΆααα·ααααααααΆααααΆααααααΌα ααααα ?
ααΆαααααΆ "αα·ααααααααΆαα" ααααΌαααΆαααααααΎα αααΎαααααα αΎα αα αΌαααααααααααα αα ααααα·ααΆααααΆα’αααΈααααααααααααα αα·αααααααααααΎααΆαα ααΌαααΆααα’ααααααΌαααΆαααααααα ααΎααΆαααααααααΆααααΆαα’αααΈαααααααΌαααΆαααΆααΆααα‘αΎαα ααααααΆαααΆαααααααααα·ααα·αααΆαααααα»ααα (ααΎα’αααΈαα·ααα·αααΆαααααα»α?)
ααααααααααΎααΆαα αΆααααααααΎαααΆααααααααΆα αααΎαα
- ααΌα αααααΆααα·ααΆααααΆ αα αααααααααααααα ααα»α αΌαααααΎαααΆα αααααααααΆαααααααααΆααα’ααααα½αααΆαααααΌα ααααΆ αα»ααααααα·ααααααα’αΆαααααααααα ααα»αααα»αα’αααα αα αΆαααααΌαααΆααααααα αααααααΆααααΆαα αΆααααααα½αααααΆαααααα·αααΆααααα»α ααα»ααααααΆααΊα’αΆα ααααΎαα ααΆαααΎααααΈα±ααααααααΌαααΆαααααα½αααααααααΆαα½αααΉααααααααααααααΆ αα·ααα·ααααααααααα
- ααααααααααΎααααΆαααααααααααααααα»αααααΆααα½αααΎααααΈααααααααααααα·αα·αααααΆαααΌαααααΆααα αααα»ααααααααααΆαα αααααΉαααΆαααααΆαααααααΆααααααΆαααΆα ααααα‘ααα αααααΆαααΆαααΆααααα αααα»αααΉααα·ααΆααααααααααααΆ ααΆαααααααααααΎαααΆααααα·αα·αααααααα‘αΆααααα»ααααα»α αα½αααΆαααΆα αΆαααΆα αααΎααααΈααα½αααΆααααα ααΎ "ααααΆαααααα·αα·" αααααΆαα ααΆαα αΆααααααααα·ααα½αααααΌαααΆαααΆαααΆαααα
- αααααααα‘αΆαααααΆααααΆαααααΆααααααΌαααΆααααααααααα½αααΆαα½ααααααααα‘αΆαααααααααΆααα’ααα αααααααΌαααΆαααααΎααα "ααααα»ααα" ααΈαααααααα‘αΆααααα αααααααα‘αΆααααααα α αΎααα½αααΆαααΈαααααααα‘αΆααααααααααα‘αααα αααααααα‘αΆααααα·αα ααΆαααααΎαααααΌαα±ααα αΆαααα ααΌα ααααααΆααααααΆααααααααΆαα’αΆα ααααΌαααΆααααααααα½ααααααΆααααΆαα ααα αΆααα ααααααααα ααΆαα αΆααααααΆααααααα·ααα½αααααΌαααΆαααααα½αααααααααααΆααααααα ααα»αααααα½ααααα ααα’αΆα αααααααΆααααΆααα αα αααααα
- αα αααααα Envoy ααααααααααα ααα»αα ααΆααααααααΈαααα α»ααααααααα (ααα α»ααααααααΆα) ααΆααα½αααΆααααα ααΎααααΎαααΆαααΆααααΌαα ααΆααΌαα ααΆαααΆααααΎαααα»ααααα»ααααα Envoy ααααΌαααΆαα αΆαααα»αααΆααΆααΏαααα’αΆαααααααΈαα·αααααΆαααααΆαα’αα»αααα ααΌα αααααα·αααΆαααΆαααα α·ααααα»αααΆααα αααΎααααα»αααΆααααααα’ααΆααα
- ααΆαααΆαα αΆαααααααα ααααααα½αα ααα½ααααααααα ααα»ααααααααΆαααααΆααααΆαααααα»αα αααααα½αααααΊααΆαααΆααααααΆαα αα·ααα·ααα½αααααΌαααΆαααααΆααα‘αΎαα
α§ααααααααα»ααααα»αααααα
αααααΆααααα·ααΈααα Envoy αααααααΆαααα½ααα»αααααΌααααααααααα‘αΆαααααΈααΆαααα½ααα»αααααΌααααααααααα‘αΆααααααα ααΆααΆααααααΌαααΆααααααααΎαααΆααααα»αααααΆαα’αΆα
ααααΌαααΆαααααΎαα
ααΎαααααααα‘αΆααα α αΎααααααΆααααααααααα
α±αααααααααα‘αΆααααααααα·αα½αααααα»αααααααααααααααΆαααααα αααααααααα·αααααΆα’αααΈα§ααααααααα»ααααα»αααααα Envoy Thread Local Storage (TLS) αα
ααααα·ααααααα αα
ααααααααααΆαα αααα»αααΉααααααΆααα’αααΈαααααααααΆααααΌαααΆαααααΎααΎααααΈαααααααααα
αααααα
ααΌα
αααααΆααααααΆαα½α
ααα αΎα ααααααααΆαααααααααααααααΎαααααΆααα’ααααΌαααΆαααααααααα αα·αααααααααααα»αααΆαααααααααα αααα
αααα»αααααΎαααΆα Envoy α ααααα αααααα½ααα·αα·αααααΊαααα»αααΎαααααααααααα·α
αα
ααΈααα ααα»αααααα
αααα’αααααΎαααΆαα
αααα»αααααΎαααΆα Envoy αααα½αααΆ α αΎαααααααααααΆαα
ααΉαααΆααααααΌαααααααααααααααα‘αΆαααααααααααΎ ααΆααα ααα»ααα α
αααΆααααΌαα
ααΊααΆααααΎαααΆααααααααα‘αΆαααααααΎαααΆαααααα αΎααααααΆααααααΆααααΌαααααΎαα
αα
α»ααααααααΆααααααααα‘αΆααα·αααα·αααΈαα½αααααααααα
ααΆαααααααααααΆαααΆααααα αααα»αααααΈααα αααααααααΆαααααααααα·αα
αΆαααΆα
αααα½αααΆαααααΎααΆαα
αΌαααααΎααΈαα½ααααα.
αααααααα TLS (Thread local storage) αααα Envoy ααααΎαααΆαααΌα ααΆααααααα
- ααΌαααααααα»αααααΎαααΆααα ααΎααααααα’αΆα αααα ααααααααα TLS αααααΆααααααΎαααΆαααΆααααΌαα αααααΈααΆααΆααΆαααααααα’ααΌααΈααααα ααα»αααααα αααα»αααΆαα’αα»αααα ααΆααΊααΆαα·αα·αααααα αααα»αααα·α ααα ααααααααααΌαααΆαα αΌαααααΎ O(1)α
- ααααααααΆααα’αΆα ααα‘αΎααα·ααααααααααΆααα αααα»ααααααααααααααΆα αα ααααααααααΌαααΆαααααΎαα½α αα·ααααααααααΌαααΆααααααααΆααα αααααααααΆααααααααα·αα½ααααΆααααΉαααα·ααΆαααααααα·ααα»αααααΉαααα·ααΆαααααααααΆα
- αααααααα‘αΆαααααααα’αΆα α’αΆαααΈααααααα TLS αααααα½ααα αα·αααΆααααα·αααααααααααααααΆαααΌαααααΆαααΆαα½ααααααΆααα ααΈαααα
αααααΈααΆααΆααΆααααΌααααΆαααα αα·αααΆαα₯αααα·αααα·ααα½αα±ααααΏααααα ααααΆαααααααα ααΉααααα·αααααΆααααααααΆαα RCU (Read-Copy-Update) α ααΆααΆαααααΆαα αααααααα‘αΆααααααααα·ααααααΎαααΆαααααΆααααααΌααα·ααααααααΆαα½ααα αααα»αααααααα TLS αα αααααααααααΆαααΆααααα»αααααΎαααΆαα ααΆαααααΆααααααΌαααΎαα‘αΎααααααα»αα’αα‘α»ααααααααα ααααααΆαααααΉαααα·ααΆαααααΆαααΆαα
ααααααααααΎαα·ααΈααΈααααΆααααααααααΆα
- ααΆααααααΆααααααΆαα»ααα·ααααααααααααααααΆαα ααΎαααααααααΆαααααααααα·αα½αα αα·ααααααα’αΆα α αΌαααααΎαααΆαααΆαααααα·αααΆαααΆααααααααΆααααΆαα½αα‘αΎαα
- ααααααααΆααΆαααΌαααααα·α αααααΆαα ααααααααα ααΆαααα·ααααααααααα αααα»αααααααΆαααα’αΆααα ααΎαααααααααΆαααα»ααααα·αααΈαα½ααα ααΌα αααα αααααααααΆαααααααααα·αα½ααααΆαα ααα½αααααα·αααααα ααααα·αα’αΆα αααααααΆα αααααααααααΆαααΆααααα»αααααΎαααΆαα αα»αααααΆααααααααααΆααα’αααααααα α·ααα α αΎααααα αααα·αααααααααααΆαα αααααααααααΈ αα·ααααααα αΆααααΉαααααΌαααααααΆαα αααααΊααΌα ααααΆααααα·ααα ααΉα RCU α
ααΆαβααααΎβαα αα α»ααααααααΆαβααααα»αβααααβαααα‘αΆα
αα
αααα»ααααααααα αααα»αααΉααααααΆααα’αααΈααααααα TLS (Thread local storage) ααααΌαααΆαααααΎααΎααααΈαααααααααα
αααααα ααΆααααααααααα
ααααααα½αααΆα xDS API αα·α/α¬ααααΎαααΆα DNS ααααΌα
ααΆααΆααααα½ααα·αα·ααααα»αααΆαα
ααΆααααααααααααα αΌαα
ααααα αα½αααΆαααΆαα»αααα αα·αααα αΆαααΌα
ααΆααααααα
- αααααα·ααΈαααααααααα αααααααΊααΆααΆαα»αααααα½ααα αααα»ααααααα·αααααααααααααααΆαααααΆαααααα ααααααααααααααΆααααΆααα’αα Cluster Discovery Service (CDS) API ααααΆααααααααααααΆαα (SDS) αα·α Endpoint Discovery Service (EDS) APIs DNS αα·αααΆααααα½ααα·αα·αααααΆααααα ααααα ααΆααααα½ααα·αα·ααααα»αααΆαα ααΆααΆααααα½ααα»αααααΌααααα»αααΆααααααΎααα·αααααΆα "αα ααΈαααα»αααααααααΆ" ααα αααααα ααααααΈαα½αα ααααα½αααΆααααΆαααΈααααααΆαααααΎα ααααΌα ααΆααααΆαααΆααα»αααΆααααααα
- αααααα·ααΈαα·αα·ααααα»αααΆαααααΎααΆααααα½ααα·αα·ααααα»αααΆαααααα α αΎαααΆαααΆαααααΈααΆαααααΆααααααΌαααααΆαααΆααα»αααΆααα ααΆααα’ααααααααααααα αααααα
- CDS (ααααΆαααααααα ααααα) / SDS (ααααΆαααααααααααα’αΆααααααΆαα) / EDS (ααααΆαααααααα ααα»α αααα αα) / DNS ααααΌαααΆαα’αα»ααααααΎααααΈααααααααΆαα·αααΆαα αααααα ααΆαααααΆααααααΌαααααααααΌαααΆααααααααα α’ααααααααααααα αααααα
- αααααααα‘αΆααααααααα·αα½ααααααααααΎαααΆαααααα·ααα»αααααΉαααα·ααΆαααα
- αα ααααααα’ααααααααααααα ααααααααααααΆααααΆαααΆααααααΆααα αααααααΆαααααΆααααααΌα ααΆαααααΎαααΌααααααααΆαα’αΆαααΆαααααααΈααααααΆαααΆαααααα ααααα α αΎαααααΎααΆαα αααααααααΆαααααααααΈαα½ααα
- ααα‘α»ααααααααΆαααααααΆαα αααααααα‘αΆαααααααααΉαααααΎαα αα α»ααααααααΆαααΌααααα αααα»αααααααα TLS αααααΆααααα ααα
- αααα»αα’αα‘α»ααααααααΉαααα·ααΆααα I/O αααααααΌαααΆαααααααααααΆααααααααΆαααΈαααΎααααΈαααα»ααααα»ααα α’ααααααα»ααα»αααααΆαααΉαααααΎαα»αααααααα TLS (Thread local storage) ααΎααααΈααα½αααΆαααααααΆαα’αααΈαααΆαααΈαα ααααα·ααααααΌαα±ααααΆαααα ααΌαα αααΆααααααααΆ TLS ααα’αΆα ααααα±ααααΆαααααΉαααα·ααΆαααα’αΆααααα ααΌα ααααααΆααααα»ααααα»ααα αα·ααααΆαααΆαα»ααααααααα’αΆα ααααΆα‘αΎααα·αααΌαααααΆαααααααΆαα αα ααΆαααααααααα·ααααααααα αααα α½αααΈαα·ααΆαααΆααααααααΆαααα ααα»ααααααααΌαααΆαααααΎααααΆαααα αααααααααααααααα»αααΌαα
αααααααΎααΈαα·αα·ααΈααΆαααΎ ααααααα’αΆα ααααΎαααΆαααΆααααααΎααααα·αααΆαααΆαααΆααΆααααΆαα½αα‘αΎα (ααΎααααααΌα ααΆααααααΆααααΈαα»α)α αααα ααΈααΆααααα»αααααΆαααααΌα TLS αααα½αααΆ ααΆαα αααΎαααααΌααα·αα αΆαααΆα ααααααΈααααααα multithreading ααααΎαααΆα αα·αα’αΆα ααααΌαααΆαααααααααα½αααααα αααααααΎα±ααααΌαααΆαα αααΎαααΆααααα½ααααα»αααΆαααααα ααααααααΈααΎααααΎαααΆαααα’ααΆαα
αααααααααααααααααααααααααΎ TLS
TLS (Thread local storage) αα·α RCU (Read Copy Update) ααααΌαααΆαααααααΎαααΆαααΌααααΌααΆααα αααα»α Envoy α
α§ααΆα αααααααΆαααααΎααααΆααα
- ααααααΆααααααΆααααΆαααααΆααααααΌααα»αααΆαααα‘α»ααααααααα·ααααα·α αααααΈαα αα α»αααααααααα»αααΆααααααΆαααΎαααααΌαααΆαααααΆαα αααα»ααααααααα‘αΆαααα αααααΆαααα αααααααααΆααααααααα·αα½ααααααΌαααΆααααααααΌααααααααΆαα’αΆαααααα»ααααααααααααΎ RCU semantics α
- ααΆααααα½αααΆααΆαααααΌαα αααααΆααααΆααΆαααααΌαααααααααααα RDS (Route Discovery Service) ααΆααΆαααααΌαααααΌαααΆααααααΎααα ααΎαααααααα‘αΆαααα ααΌαααβαααβααΆαβααβα’αΆαβααΉαβααααΌαβααΆαβαααααβααΌαβααΆβαααααααααΆααβαααβααααβαααα‘αΆαβααααβααααααβαα·αα½ααβαααβααααΎ RCU (Read Copy Update) semanticsα αααααααΎα±ααααΆαααααΆααααααΌαααΆααΆαααααΌαααααααααααααα·αααααΆαα
- ααααΆαααααααΆααααααααΆ HTTPα ααΌα αααααΆααααααΆααΆαααααΆααααααΆ HTTP αααααΆααααααΎααΈαα½αα (αααααααααα»αααααΎαααΆα ~ 25K + RPS αααα»ααα½αααααΌα) ααΊααΆααααααααααααΆααα αααααα·ααααααΆαααααΆααααααΆαααα αααααααΆααααΆαααααααΆααα·ααΆααΈ α αΎααααααααΆαααααααααααααΆαααααΆαααα TLS αα·α RCU α
ααΆαααααΈαααααααα ααα»ααααα§ααΆα αααααΈαα»ααα½ααααααααααΌαααΆααααααΉαααααα’α’αααΈα’αααΈααα TLS ααααΌαααΆαααααΎαααααΆααα
ααα α»αααααΆαα’αα»αααααααααααααΆαα
ααααααααα Envoy ααααΎαααΆαααΆαααα’ααΆαα½α ααΆαα ααα»α αα½αα±ααααααααααΆαααα½αα ααα½ααααααΆαααΆαα±ααααΆαααΆαααα α·ααααα»αααΆαααα ααααααααΆααααΌαααΆαααααααΎααΆαα½αααΉαααΆαααααααααΆ αα·ααααααααααααααααΆααα
- ααΌα αααααΆααα·αααααΆαα αααα»αα’αααααααα αα αα α»αααααα αααααααααΆαααααααααΆααα’ααααα½αααΆααααα αααααααααα ααα·ααααααα’αΆαααααααααααα ααα»α αΌαααααΎαααΆαα αααααΆααααΈαααααΆααααααΆααααα αα·αααα αΌαα αΌαααααα α’αααααΉαααααΌαααΆα ααααααα ααα»α αΌαααααΎαααΆααααααΆαααααααααα‘αΆααααααααα·αα½αα αααα αααΆαααΎααΆαααΉααααααΌααααα ααΆααααααΆαα·ααα αααααααααα α―αααΆαα α»ααααααα αααααΆαααα α’αααα’αΆα αααααΎααααααα ααα»α αΌαααααΎααααΆααααΆα ααααα‘αααααααΆαααααααααα‘αΆααααααααα·αα½ααα
- αααααΈααΆαααα·αα·ααααΌαααΆαααααΎα±αααααααΎααααααααααα ααααααααΆαα·ααα·αααααααααα ααααααΆααΉαααΆαααααααα’αΆααΌαα·αααΎαααα·αα·αα»ααααα αααααααααΆαα αααααααα αΆαααααΊααααααααα»ααα½ααααααααααααααα ααΆαα½αααΉαααΆααααααα‘αΎααα·αααΆαααΆααααααααααααααααααΆαα αααααΉαααααΌαααΆααα·ααΆααααΆαα αααα»αααΆααααααΆαααΆαααααααααΆααα
- ααααΆαααααααααα αα α»ααααααααΉααα·αααααΎαααΆαααα’αα ααααα·αααΎ Envoy ααααΌαααΆαααΆαααααααΆααα αααα»αααααΆααΈαααΌαααααΆαααΆααααααΆαααα·α αα½α αααα»ααααααααΌαααΆαααααΆαααααΎαααΆαααααΆαααα αα·αααΆαααΆαααΆααΆααΆααΆααααααΆααααΉαααααΌαααΆαα ααα αΆαααααΎαααααΆαααα»αα αααααααααααα‘αΆααααααααααααα αααα’αΆα ααααΌαααΆααααααααΆααααααΆαα’αα»αααααα»αααααΆαααααΆααααααΆαααααααααααααΉαα’αα»ααααΆαα±ααααΆαααΆαααααΆααααααΌαααααΆαααααααααΆααααααααα‘αΆαααααααα
ααα ααααΈααααα·ααααΆα
ααααΌαααααααα‘αΆααααα Envoy ααααΌαααΆααα
ααΆα‘αΎαααΎααααΈαααααααΌαααΆαααΆααααα½αααααΆαααααααααααα·ααΈ αα·αααΆαααααααααΆαααααααα
αααΆαααααΆαα
αα
αΆα αα·αααΆαααααΆαααααα’αΆα
ααααααααΆα ααααα·αααΎαα·αααΆαααααααα
ααΆααααααααααααΉαααααΌαα αααΌααααααα’αα»ααααΆαα±ααααΆααααΎαααΆαααΆααααΆαααα’αα
α
ααα½ααααααααα‘αΆαααααα αα·αααααααΆααα
ααΌα
ααααααα»αααΆααα·ααΆααααΆαααααΈαα
ααΎ 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