ááąáŹááşá¸ááŤá¸áááŹááŹááźááş:
ááŽááąáŹááşá¸ááŤá¸ááᯠáĄááąáŹáşááąá¸ á
áááşáááşá
áŹá¸áááŻáˇááąáŹááşá¸ááŹááᯠáá˝áąáˇáá˛áˇáááźáŽá¸ Envoy ááᯠ"istio" áá˛áˇ áá
áşá
áááşáá
áşáááŻááşá¸áĄááźá
áş áááźáŹáá áĄááŻáśá¸ááźáŻááąáˇáážááá˛áˇáĄáá˝ááş kubernetes áá˛áˇ "ingress controller" áĄááźá
áşá áá°áĄááťáŹá¸á
áŻáᏠáĽáááŹáĄáŹá¸ááźááˇáşá áĽáááŹáĄáŹá¸ááźááˇáşá ááŻáśáážááşáĄáŹá¸ááźááˇáş áá°ááŽáá˛áˇ ááŻáśáˇááźááşáážáŻááťááŻá¸ ááážáááźááŤáá°á¸á Nginx áááŻáˇáááŻááş Haproxy áááˇáşáá˝ááşá¸áážáŻááťáŹá¸á áááŻáˇááąáŹáş áá
áşááŻáᯠáá˝á˛áá˝áŹá¸ááŤá áĄáá˝ááşá¸ááž áááşáááŻáˇ áĄááŻááşááŻááşáááşááᯠááŹá¸áááşáááş ááąáŹááşá¸ááŤáááşá áĄáá°á¸á
ááŹá¸ááŻáśá¸ááťáŹá¸áĄááŤáĄáááş á
áŹááŹá¸áĄááťáŹá¸á
áŻááᯠááŻáážáŹá¸ááŹááŹáááŻáˇ áááşáááŻááşáááťáž ááŹááŹááźááşáááş ááźááŻá¸á
áŹá¸áá˛áˇáááşá ááŤáááŻááźááˇáşááᏠááŹááťááşááśá
áŹá¸ááá°áá˝áąáĄáá˝ááş áá°áááşá¸ááᯠáá˝ááşá¸á
áĽáşáážáŹ ááťááşááŹá¸áá˛áˇáááşá ááźáąáŹááşáážááźááŻáááŻááŤáááşá
Envoy ááŻááşááąáˇá
áşáĄáá˝ááş áĄáááˇáşááááˇáşáááşá¸áááŹáááŻááşáᏠá
áŹáá˝ááşá
áŹáááşá¸ááťáŹá¸áááş ááąáŹááąáŹáááşáá˝ááş áĄáá˝ááşááťá˛ááŤáááşá ááŤááᯠááŻá
áŹá¸áááŻáˇáĄáá˝ááş Envoy áá˛áˇ áĄááťááŻá¸ááťááŻá¸ááąáŹ á
áá
áşáá˝á˛ááťáŹá¸áĄááźáąáŹááşá¸ áááąáŹáˇááşáááŻáˇá
áşááťáŹá¸ áááşáááŻááşááŻááşáááş á
áŽá
ááşááŹá¸ááŤáááşá á¤ááąáŹááşá¸ááŤá¸áááş áááááŻáśá¸ááąáŹááşá¸ááŤá¸ááźá
áşááąáŹááźáąáŹááˇáşá áááˇáşáááşááźááşááťááşáážááˇáş áĄááŹáááşááąáŹááşá¸ááŤá¸ááťáŹá¸áá˝ááş áááşá
áááşáááşá
áŹá¸áááˇáşáĄááŹááťáŹá¸ááᯠááťá˝ááşáŻááşáĄáŹá¸ áĄááááąá¸ááŤá
Envoy áážááˇáşáááşáááşááąáŹ ááťá˝ááşáŻááşááážááááˇáş áĄáá˝áąáˇááĄááťáŹá¸ááŻáśá¸ áááşá¸áááŹáááŻááşááŹááąá¸áá˝ááşá¸ááťáŹá¸áá˛áážáá áşááŻáážáŹ áááşá¸áĄááŻáśá¸ááźáŻááąáŹ threading model á áĄáááˇáşááááˇáşááąáŹáşááźááťááşáá áşááŻááąáŹááşá¸áááŻááźááşá¸ááźá áşáááşá á¤áááŻáˇá áşáá˝ááşá Envoy áááş ááŻááşááťáŹá¸ááᯠáĄááźááŻááşáĄáááŻááşáážááˇáş á á˝ááşá¸ááąáŹááşáááşááźááˇáşááŹá¸á áąáááşáĄáá˝ááş áĄáá˝ááşá¸áááŻááşá¸á áĄááŻáśá¸ááźáŻááŹá¸áááˇáş Thread Local Storage á áá áşáĄááźááş Envoy ááž ááťáááşáááşáážáŻááťáŹá¸ááᯠáááşáááŻáˇááźáąááŻáśáá˝á˛áááşááᯠááąáŹáşááźááŤáááşá
Threading ááźáŻáśááŻáśááŻáśá¸áááşááťááş
![[ááŹááŹááźááş] Envoy threading model](/wp-content/uploads/2019/04/c5028463db1eb5b07ccb1a3af1f64a03.jpeg)
Envoy áááş ááá°ááŽááąáŹ stream áĄááťááŻá¸áĄá
áŹá¸ááŻáśá¸ááťááŻá¸ááᯠáĄááŻáśá¸ááźáŻáááş-
- áĄááá- áᎠthread á process startup áá˛áˇ shutdown ááŻááşááŹá DNSá health checkingá general cluster áá˛áˇ runtime managementá statistics resetá administration áá˛áˇ general process management áĄááŤáĄáááş XDS (xDiscovery Service) API processing áĄáŹá¸ááŻáśá¸ááᯠá áŽááśáááˇáşáá˝á˛ááŤáááşá Linux áĄááťááşááźáážáŻááťáŹá¸á hot restart ááťáŹá¸ á áááşáááŻáˇá ᤠthread áá˝ááş ááźá áşááťááşáááťážáááş asynchronous ááźá áşááźáŽá¸ non-blocking ááźá áşáááşá áĄááŻáśá¸á áŻáśááźáąáŹáááťážááş main thread áááş CPU ááźáŽá¸ááźáŽá¸ááŹá¸ááŹá¸ ááááŻáĄááşááąáŹ áĄááąá¸ááźáŽá¸ááąáŹ ááŻááşáááşá¸á ááşáĄáŹá¸ááŻáśá¸ááᯠáážááážááŻááşá¸ááąá¸áááşá áááşá¸áááş control code áĄááťáŹá¸á áŻááᯠsingle-thread áá˛áˇáááŻáˇ ááąá¸ááŹá¸áááŻááşá áąáááşá
- áĄááŻááşáááŹá¸- áá°áááşá¸áĄáŹá¸ááźááˇáşá Envoy áááş á
áá
áşáĄáá˝ááşá¸áážá ááŹáˇááşáá˛ááźááŻá¸áá
áşááŻá
áŽáĄáá˝ááş áĄááŻááşáááŹá¸ááťááşááťážááşáá
áşááŻááᯠáááşááŽá¸áááşá áááşá¸ááᯠáá˝áąá¸ááťááşáá˝ááˇáşááᯠáĄááŻáśá¸ááźáŻá ááááşá¸ááťáŻááşáááŻááşáááşá
--concurrency. áĄááŻááşáááŹá¸ áááŻááşá¸áá áşááŻá áŽáááş ááŹá¸áááşáá°áááŻááşá¸ááᯠááŹá¸ááąáŹááşáááş ááŹáááşáážááááˇáş âááááşáááŻáˇááźááşá¸áááŻááşááąáŹâ ááźá áşáááşáá˝ááşá¸áááşáá áşááŻááᯠááŻááşááąáŹááşáááşáá (áá°áááŻááş 29á 2017) ááąá¸ááŹá¸ááťáááşáá˝ááş (áá°áááŻááş XNUMXá XNUMX) áá˝ááş ááŹá¸ááąáŹááşáá°áĄáŹá¸ áá˝á˛ááźááşá¸á áááşááźáŹááźááşá¸ááážáááŤá ááťáááşáááşáážáŻáĄáá áşááťáŹá¸ááᯠáááşááśáᏠá á áşááŻááşáážáŻáĄá áŻáá áşááŻááᯠááťááşááźááşá¸ááŻááşááąáŹááşáááşá ááťáááşáááşáážáŻá ááťáááşáááşáážáŻáááşáááşá¸áá áşááťážáąáŹááş áĄáááş/áĄáá˝ááş (IO) áááşáááşáážáŻáĄáŹá¸ááŻáśá¸ááᯠááŻááşááąáŹááşááźááşá¸á áá áşáááşá áááşá¸áááş ááťáááşáááşáážáŻáááŻááşáᏠááŻááşáĄááťáŹá¸á áŻááᯠááźááŻá¸áá áşááťáąáŹááşá¸áááşá¸ááźááˇáş ááąá¸ááŹá¸áááŻááşá áąááŤáááşá - File flusher- Envoy ááąá¸ááąáŹ áááŻááşáá
áşááŻá
áŽáá˝ááş áĄááááĄáŹá¸ááźááˇáş áážááşáááşá¸ááťáŹá¸ááᯠáááşááąáŹááşááźááˇáşáážáŻáááˇáş áááŻááşáá
áşááŻá
áŽáá˝ááş áááşáážááá˝ááş ááŽá¸ááźáŹá¸ááááşáááŻáˇááŹá¸ááąáŹ á
áŹáá˝á˛áá
áşááŻáážááááşá áĄáááşááźáąáŹááˇáşáááŻááąáŹáş áĄááŻáśá¸ááźáŻááąááťáááşááááş áááŻááşá
áá
áşááž ááááşá¸áááşá¸ááŹá¸ááąáŹ áááŻááşááťáŹá¸áááŻáˇ á
áŹááąá¸ááźááşá¸ááźáąáŹááˇáş ááźá
áşáááşá
O_NONBLOCKáá áşááŤáá áşááś ááááşáááŻáˇáá˝áŹá¸áááŻááşáááşá worker threads áááş áááŻááşáá áşááŻáááŻáˇ á áŹááąá¸áááş áááŻáĄááşááąáŹáĄááŤá data áááş áĄáážááşááááşáá˝ááş áááşá¸ááᯠthread áážááááˇáş áážááşá¸ááŻááşáá˝áŹá¸áááˇáş memory áĄáá˝ááşá¸áážá ááźáŹá¸ááśáá áşááŻáááŻáˇ áá˝áąáˇáá˝áŹá¸áááş file flush. á¤áááşáážáŹ áááşá¸áááŹáĄá ááŻááşááŹá¸ááťááşááťážááşááťáŹá¸áĄáŹá¸ááŻáśá¸ áááşáááŻááŽááźáŹá¸ááśáááŻááźááˇáşáááş ááźááŻá¸á áŹá¸á ááş áá°ááŽááąáŹááąáŹáˇááşááᯠááááşáááŻáˇáááŻááşáááˇáş ááŻááşáá áşááŻááźá áşáááşá
ááťáááşáááşáážáŻáááŻááşáá˝ááşááźááşá¸á
áĄáááşáá˝ááş áĄááťááşá¸ááťáŻáśá¸ áá˝áąá¸áá˝áąá¸áá˛áˇáááˇáşáĄáááŻááşá¸ áĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸áááş áá˝á˛ááźááşá¸á
áááşááźáŹááźááşá¸ááážááᲠááŹá¸ááąáŹááşáá°áĄáŹá¸ááŻáśá¸ááᯠááŹá¸ááąáŹááşáááşá áááŻáˇááźáąáŹááˇáşá kernel áááş áááşááśááŹá¸ááąáŹ sockets ááťáŹá¸ááᯠworker thread ááťáŹá¸áááŻáˇ ááťáąáŹáá˝áąáˇá
á˝áŹ ááąá¸áááŻáˇáááşáĄáá˝ááş áĄááŻáśá¸ááźáŻáááşá ááąááşáᎠkernels ááťáŹá¸áááş ááąááŻááťáĄáŹá¸ááźááˇáş áĄáá˝ááşááąáŹááşá¸áá˝ááşáááşá áááşá¸áááŻáˇáááş áá°ááŽááąáŹ socket áá˝ááş ááŹá¸ááąáŹááşááąááąáŹ áĄááźáŹá¸ thread ááťáŹá¸ááᯠáĄááŻáśá¸áááźáŻáᎠthread áá
áşááŻáĄáŹá¸ áĄááŻááşáĄáŹá¸ááźááˇáşáááş áĄáááş/áĄáá˝ááş (IO) áŚá¸á
áŹá¸ááąá¸ ááźážááˇáşáááşááźááşá¸áá˛áˇáááŻáˇááąáŹ áĄááşášááŤáááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá áááşá¸áááŻáˇáááş round robin ááᯠáĄááŻáśá¸áááźáŻááŽá ááąáŹááşá¸áááŻááťááşáá
áşááŻá
áŽááᯠááŻááşááąáŹááşáááş ááąáŹáˇááşááťááźááşá¸ (Spinlock)á
áĄááŻááşáááŹá¸ááťááşááťážááşáá˝ááş ááťáááşáááşáážáŻááᯠáááşááśááźáŽá¸áááşáážááˇáş áááşá¸áááş áĄáááŻááŤááťááşááťážááşááᯠáááşááąáŹáˇááž áááŹá¸áá˛áˇááŤá ááťáááşáááşáážáŻá ááąáŹááşáááşááŻááşááąáŹááşáážáŻáĄáŹá¸ááŻáśá¸ááᯠáááşáááˇáşááąá¸áááŻáˇááźááşá¸áĄááźáŻáĄáá°áĄááŤáĄáááş áĄááŻááşáááŹá¸ááťááşááťážááşáá˝ááş ááŻáśá¸ááŻáśá¸ááťáŹá¸ááťáŹá¸ áááŻááşáá˝ááşááŤáááşá
á¤áááşáážáŹ áĄááąá¸ááźáŽá¸ááąáŹ áĄááťááŻá¸áááşááťáŹá¸á á˝áŹáážááááşá
- Envoy áážá ááťáááşáááşáážáŻ ááąáŤááşá¸áá°á¸áááşáĄáŹá¸ááŻáśá¸ááᯠáĄááŻááşáááŹá¸ááťááşááťážááşáá áşááŻáá˝ááş ááŹáááşááąá¸ááŹá¸áááşá áááŻáˇááźáąáŹááˇáş HTTP/2 ááťáááşáááşáážáŻááąáŤááşá¸á áŻááťáŹá¸áááş áá áşááźáááşááťážááş áĄáááşá áŽá¸ááźáąáŹááşá¸áážá host áá áşááŻá áŽáááŻáˇ ááťáááşáááşáážáŻáá áşááŻáᏠááźáŻááŻááşááąáŹáşáááşá¸á áĄááŻááşáááŹá¸áááŻááşá¸ ááąá¸ááŻáážáááŤáá áááşááźáááşááąáŹáĄááźáąáĄááąáá˝ááş áĄáááşá áŽá¸ááźáąáŹááşá¸áážá host áá áşááŻááťážááş HTTP/2 ááťáááşáááşáážáŻ ááąá¸ááŻáážááááşááźá áşáááşá
- Envoy áááş á¤áááşá¸áááşá¸ááźááˇáş ááŻááşááąáŹááşáááźááşá¸á áĄááźáąáŹááşá¸áááşá¸áážáŹ ááŻááşááŹá¸ááťááşááťážááşáá áşááŻáááşá¸áá˝ááş áĄááŹáĄáŹá¸ááŻáśá¸ááᯠááááşá¸áááşá¸ááŹá¸ááźááşá¸ááźááˇáşá ááŻááşáĄáŹá¸ááŻáśá¸ááŽá¸ááŤá¸ááᯠááááşáááŻáˇááźááşá¸ááážááᲠááąá¸áážááşáááŻááşááźáŽá¸ áááşá¸áááş áá áşááŻáááşá¸ááąáŹááťááşááťážááşáá˛áˇáááŻáˇ ááźá áşááąááźááşá¸ááźáąáŹááˇáşááźá áşáááşá á¤ááŽáááŻááşá¸áááş ááŻááşááťáŹá¸á á˝áŹááąá¸áááş áá˝ááşáá°á áąááźáŽá¸ áĄáááˇáşáĄáááşááážáááŽá¸ááŤá¸áážáááąáŹ áĄááŻááşáááŹá¸á áŹááźáąáŹááşá¸ááťáŹá¸ááŽáááŻáˇ áááŻáśáááŻááşááąáŹááşáĄáąáŹááş ááąáŹááşá¸áá˝ááşá á˝áŹ ááťáááşáážáááąá¸áááşá
- áááŻáˇááąáŹáşáááşá¸á áĄááá áážááşááŹá¸á
ááŹááťáŹá¸áá˛ááž áá
áşááŻáážáŹ memory pool áážááˇáş connection efficiency áážáŻááąáŹááˇáşáážá áááşá¸ááᯠconfigure ááŻááşáááş áĄáážááşááááş áĄááąá¸ááźáŽá¸ááŤáááşá
--concurrency. áĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸ áááŻáĄááşáááşáááş áááŻááťáŹá¸ááąááźááşá¸áááş áážááşááŹááşááᯠááźáŻááşá¸ááŽá¸áááşááźá áşááźáŽá¸á áááşááŹá¸ááŹá¸ááąáŹ ááťáááşáááşáážáŻááťáŹá¸ áááŻáááŻáááşááŽá¸áááŻááşáᏠááťáááşáááşáážáŻááąáŤááşá¸á ááşá¸áážáŻáážáŻááşá¸ááᯠááťážáąáŹáˇááťááąá¸áááşááźá áşáááşá Lyft áá˝ááşá ááťá˝ááşáŻááşáááŻáˇá áĄáá°á¸ááśááááş áááŻááşááŹá¸áá˝ááşááááşááŹááťáŹá¸áááş áĄáá˝ááşááááˇáşááťááąáŹ áá°ááŽááąáŹáá˝áąááźáąá¸ááźááˇáş áááşáááşááąááąáŹááźáąáŹááˇáş á á˝ááşá¸ááąáŹááşáááşáááş áááşá¸áááŻáˇááąá¸áá˝ááşáážáááąáŹ áááşááąáŹááşáážáŻááťáŹá¸áážááˇáş áĄááźááşá¸áĄáŹá¸ááźááˇáş áááŻááşááŽááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááş Envoy ááᯠáĄááťáŹá¸ááŻáśá¸ áá°ááŽááąáŹ áá˝áąááźáąá¸ááźááˇáşáᏠedge proxy áĄááźá áş ááŻááşááąáŹááşááŤáááşá
ááááşáááŻáˇááźááşá¸áááźáŻááźááşá¸áá°áááş áĄáááşáááşá¸á
áááşááážááˇáş áĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸ áááşáááŻáˇáĄááŻááşááŻááşáááşááᯠáá˝áąá¸áá˝áąá¸ááąáŹáĄááŤáá˝ááş "ááááşáááŻáˇááźááşá¸áááŻááşááąáŹ" áá°ááąáŹ ááąáŤááŹáááᯠáááŻáĄááťáááşáĄáá áĄááźáááşááąáŤááşá¸ááťáŹá¸á á˝áŹ áĄááŻáśá¸ááźáŻááŹá¸áááşá ááŻááşáĄáŹá¸ááŻáśá¸ááᯠáááşáááˇáşáĄááŤááťáž ááááşáááŻáˇááŹá¸ááźááşá¸ááážááᯠáá°áááťááşáá˝ááş ááąá¸ááŹá¸áááşá áááŻáˇááąáŹáşá á¤áááşáážáŹ ááŻáśá¸ááážááşáááşáááŻááşá፠(ááŻáśá¸ááážááşáááşáááŻááşááŤ)á
ááśááááşáááş áážááşááťáŹá¸ááąáŹ ááŻááşáááşá¸á ááşááąáŹáˇááşááťáŹá¸á á˝áŹááᯠáĄááŻáśá¸ááźáŻáááş-
- áá˝áąá¸áá˝áąá¸ááŹá¸áááˇáşáĄáááŻááşá¸á áááşááąáŹááşáá˝ááˇáşáážááşáááşá¸ááťáŹá¸ááᯠááąá¸ááŹá¸áááˇáşáĄááŤá áááşáááŻááŽáážááşáááşá¸ááźáŹá¸ááśááᯠáááźááˇáşáᎠáĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸áááş áá°ááŽááąáŹááąáŹáˇááᯠááážáááźáááşá ááąáŹáˇáááşááťáááşáááş áĄáá˝ááşáááşá¸áááˇáşáááşá áááŻáˇááąáŹáş ááąáŹáˇáááşáážáŻááᯠááźááˇáşááŹá¸ááąáŹ ááąáŤááşá¸á ááşáá˝áąááźáąá¸áážááˇáş ááźááˇáşááŹá¸ááąáŹ ááąáŹááşááźááşáážáŻááźááˇáş áážááşááźááŻááşáááş ááźá áşáááŻááşáááşá
- Envoy áááş ááźááŻá¸áááąáááśá áŹáááşá¸áááŹá¸ááťáŹá¸ááᯠáááŻááşáá˝ááşáááş áĄáá˝ááşáážáŻááşáá˝áąá¸ááąáŹá áá áşááᯠáĄááŻáśá¸ááźáŻáááşá á¤áááşáážáŹ ááŽá¸ááźáŹá¸áááŻáˇá áşáá áşááŻá ááąáŤááşá¸á ááşááźá áşáááşá áááŻáˇááąáŹáşáááşá¸á ááąááĄáááŻááş thread ááááşá¸ááááşá¸ááťáŹá¸ ááŻááşááąáŹááşááźááşá¸á áá áşá áááşáá áşáááŻááşá¸áĄááąááźááˇáşá áááᯠ"stats store" áá˝ááş ááąáŹáˇáááşááŹá¸áááş áá áşááŤáá áşááś áááŻáĄááşááźáąáŹááşá¸ áĄááťááşá¸ááťáŻáśá¸ááźáąáŹááŤáááşá á¤ááąáŹáˇáááşááźááşá¸ááᯠáááşáááˇáşáĄááŤááťáž ááááŻáĄááşááŤá
- áááşáááťááşááťážááşáááş áĄááŻááşáááŹá¸ááťááşááťážááşááťáŹá¸áĄáŹá¸ááŻáśá¸áážááˇáş áĄááŤáĄáŹá¸ááťáąáŹáşá á˝áŹ áážááážááŻááşá¸ááąáŹááşáá˝ááşáááş áááŻáĄááşáááşá áááşá¸ááᯠáááşáá áŹáá˝á˛ááž áĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸áááŻáˇ "ááŻááşááąááźááşá¸" ááźááˇáş ááŻááşááąáŹááşááźáŽá¸ áá áşááŤáá áşááśáá˝ááş áĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸ááž áááşááĄááźáąáŹááşá¸áĄááŹáááŻáˇ ááźááşáááşááąáŹááşáážáá áąááŤáááşá ááąá¸áááŻáˇááźááşá¸áá˝ááş ááŻááşááąááŹá¸ááąáŹ áááşááąáˇááťáşááᯠááąáŹááşáááŻááşá¸áá˝ááş ááąá¸áááŻáˇáááşáĄáá˝ááş áááşá¸á áŽááąáááŻááşá áąáááşáĄáá˝ááş ááąáŹáˇááşááťááŹá¸áááş áááŻáĄááşááŤáááşá á¤ááąáŹáˇáááąáŹááşááťáŹá¸áááş áááşáááˇáşáĄááŤááťáž áĄááźááşá¸áĄáááş ááźááŻááşáááŻááşááźááşá¸áááźáŻáááˇáşááąáŹáşáááşá¸ áááşá¸áááŻáˇááᯠáááşá¸áááŹáĄá ááááşáááŻáˇááŹá¸áááŻááşáá˛ááźá áşáááşá
- Envoy áááş á áá áşáĄáážáŹá¸á áŽá¸ááźáąáŹááşá¸ (á áśáĄáážáŹá¸) áááŻáˇ áážááşáááşá¸áá áşááŻááąá¸ááąáŹáĄááŤá áááşá¸áááş ááŻááşáááşá¸á ááşáá áşááŻááŻáśá¸áá˝ááş ááąáŹáˇááşáá áşááŻááážááá˝áŹá¸áááşááźá áşáááşá ááąáá°ááťáĄáŹá¸ááźááˇáşá Envoy á ááźááşáá˝ááşá¸áá áşááŻááşáážá˛áážáŻáááş á á˝ááşá¸ááąáŹááşáááşáážáŻááąáŹááˇáşááž ááźáąáŹááşá ááŹááąáŹááşá¸áááşáᯠáá°áááąáŹááźáąáŹááˇáş áááşá¸ááᯠáááŻáááŻááąáŹááşá¸áá˝ááşááŹá áąáááş áĄáŹááŻáśá ááŻááşáážáŻááťáŹá¸á á˝áŹááážááá˛áˇááŤá
- áĄááźáŹá¸ááťáááşá¸ááąáŹáˇáááąáŹááşáĄááťááŻáˇáážáááŤáááşá áááŻáˇááąáŹáş áááşá¸áááŻáˇáĄáááşáážáá áşááŻá á á˝ááşá¸ááąáŹááşáááşáááŻááşá¸áĄá áĄááąá¸ááŤááźáŽá¸ á áááşááąáŤáşááźááşá¸áááźáŻáááˇáşááŤá
ááťááşááťážááşá ááşáá˝ááşá¸áááŻáážáąáŹááşáážáŻ
Envoy áááş áááşáááťááşááťážááşá ááŹáááşááťáŹá¸ááᯠáĄááŻááşáááŹá¸ááťááşááťážááşá ááŹáááşááťáŹá¸áážááˇáş áá˝á˛ááŻááşááŻáśááźáąáŹááˇáşá áážáŻááşáá˝áąá¸ááąáŹ ááŻááşáááşá¸á
ááşááᯠáááşáááťááşááťážááşáá˝ááş ááŻááşááąáŹááşáááŻááşááźáŽá¸ áĄááŻááşáááŹá¸ááťááşááťážááşáá
áşááŻá
áŽáĄáŹá¸ áĄáá˝ááşáááźááŻááşáááşáááşá¸ ááśáˇáááŻá¸ááąá¸áááş áááŻáĄááşááŤáááşá á¤ááášááá˝ááş Envoy Thread Local Storage (TLS) ááᯠááźááˇáşááŹá¸ááąáŹáĄáááˇáşáá˝ááş ááąáŹáşááźááŹá¸ááŤáááşá ááąáŹááşáĄáááŻááşá¸áá˝ááş áĄá
áŻáĄáá˝á˛áˇáá
áşááŻááᯠá
áŽááśáááˇáşáá˝á˛áááş áááşá¸áááŻáĄááŻáśá¸ááźáŻááŻáśááᯠááąáŹáşááźááŤáááşá
![[ááŹááŹááźááş] Envoy threading model](/wp-content/uploads/2019/04/a47af1e8eb1f55a4d7609b3ff3ee9ce1.jpeg)
ááąáŹáşááźááźáŽá¸áááˇáşáĄáááŻááşá¸á áááşáá
áŹáá˝á˛áááş Envoy ááŻááşáááşá¸á
ááşáá˝ááş ááąááŹááşá á
áŽááśáááˇáşáá˝á˛áážáŻáážááˇáş ááááşá¸ááťáŻááşáážáŻáĄáŹá¸ááŻáśá¸ááᯠááŽá¸ááŤá¸áááŻááşáá˝ááşáááşá ááááşá¸ááťáŻááşááąá¸ááąááŹááşáááş á¤ááąááŹáá˝ááş áĄáááşá¸áááş áááşáááŻááąááąáŹáşáááşá¸ Envoy ááŻááşáááşá¸á
ááşáĄáá˝ááşá¸ áááşá¸ááᯠáááşááźááˇáşáážáŻááźáŽá¸ ááŻááşááŹá¸ááťááşááťážááşááťáŹá¸ááźáŻááŻááşáááˇáş áááşáááˇáşáááŻáˇááźááşá¸áážááˇáş áážááŻááşá¸áážááşááŤá áĄáááášááŤááşáážááááşááźá
áşáááşá ááąáá°ááťá
ááşá¸ááťááşá¸áážáŹ áááşáááťááşááťážááşááŻááşáááşá¸á
ááşáááş áĄááťááŻáˇááąáŹáĄááŻááşááźá
áşáááşá áááŻáˇááąáŹááş áááşá¸áááş áĄááŻááşáááááşáĄá áĄááŻááşáááŹá¸ááťááşááťážááşáá
áşááŻá
áŽááᯠáĄááşááááşááŻááşáááş áááŻáĄááşáááşá á¤ááá
ášá
áá˝ááşá áĄááŻááşáááŹá¸ááťááşááťážááşáááş áááşááąáŹááşáá˝ááˇáşáá
áşááŻá
áŽáá˝ááş ááąáŹáˇáááşáááş ááááŻáĄááşááŤá.
Envoy á TLS (Thread local storage) á áá áşáááş áĄáąáŹááşááŤáĄáááŻááşá¸ áĄááŻááşááŻááşááŤáááşá
- áááşáá áŹáá˝á˛áá˝ááş ááŻááşááąáŹááşááąááąáŹ ááŻááşáááş ááŻááşáááşá¸á ááşáá áşááŻááŻáśá¸áĄáá˝ááş TLS áĄááąáŤááşáá áşááŻááᯠáá˝á˛ááąááąá¸áááŻááşááŤáááşá áááşá¸áááş abstract ááźá áşááąáŹáşáááşá¸ áááşáá˝áąáˇáá˝ááş áááşá¸áááş O(1) áááşááąáŹááşáážáŻááᯠááśáˇáááŻá¸ááąá¸áááˇáş vector áá áşááŻáááŻáˇ áĄáá˝ážááşá¸áá áşááŻááźá áşáááşá
- áááşáááťááşááťážááşáááş áááşá¸ááĄáááŻááşáá˝ááş ááááŹá¸ááąáŹááąááŹááᯠáááˇáşáá˝ááşá¸áááŻááşáááşá áááşá¸ááᯠááźáŽá¸ááąáŹáĄááŤá ááąááŹááᯠááŻáśáážááşááźá áşáááş áá˝ááşá¸áááşááźá áşáááşáĄááźá áş áĄááŻááşáááŹá¸ááťááşááťážááşáá áşááŻá áŽááś áá˝ážááˇáşáááşáááşááźá áşáááşá
- áĄááŻááşáááŹá¸ á áŹáá˝á˛ááťáŹá¸ááᯠáááşá¸áááŻáˇá TLS áĄááąáŤááşááž áááşáááŻááşááźáŽá¸ áááŻááąááŹáá˝ááş ááážááááŻááşáááˇáş áááşáááˇáş thread-local data áááŻáááᯠááŻááşáá°áááŻááşáááşá
áááşá¸áááş áĄáá˝ááşáááŻá¸áážááşá¸ááźáŽá¸ áááŻáśáááŻááşááąáŹááşáĄáąáŹááş áĄáŹá¸ááąáŹááşá¸áááˇáş ááŤááŹáááŻááşá¸áá áşááŻááźá áşááąáŹáşáááşá¸á áááşá¸áááş RCU (Read-Copy-Update) ááááşáááŻáˇááźááşá¸áááąáŹáááŹá¸áážááˇáş áĄáá˝ááşáááşáá°áááşá áĄááźáąááśáĄáŹá¸ááźááˇáşá áĄááŻááşááŻááşáááŻááşááąá ááş TLS áĄááąáŤááşááťáŹá¸áážá ááąááŹááźáąáŹááşá¸áá˛áážáŻááťáŹá¸ááᯠáĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸ááž áááşáááˇáşáĄááŤááťáž ááá˝áąáˇáá áĄááŻááşááá ášá ááťáŹá¸ááźáŹá¸áá˝ááş ááťááşáĄááťáááşáĄáá˝ááşá¸áᏠáĄááźáąáŹááşá¸áĄáᲠááźá áşááąáŤáşááŤáááşá
Envoy áááş áááşá¸ááᯠááá°ááŽááąáŹáááşá¸áááşá¸áážá áşááŻááźááˇáş áĄááŻáśá¸ááźáŻáááş-
- áĄááŻááşáááŹá¸ááťááşááťážááşáá áşááŻá áŽáá˝ááş ááá°ááŽááąáŹááąááŹááᯠááááşá¸áááşá¸ááźááşá¸ááźááˇáşá áááşáááˇáşááááşáááŻáˇááźááşá¸ááážááá˛ááąááŹááᯠáááşááąáŹááşááźááˇáşáážáŻáááŻááşáááşááźá áşáááşá
- áĄááŻááşáááŹá¸á áŹáá˝á˛áá áşááŻá áŽáážá áááşááŹááŻááşáá˝ááş ááááŻáááşááąááŹáááŻáˇ ááťážááąááŹá¸ááąáŹ áá˝ážááşááźááťááşááᯠááááşá¸ááááşá¸ááźááşá¸ááźááˇáşá áááŻáˇááźáąáŹááˇáşá áĄááŻááşááŻááşáááŻááşááąá ááşáĄáá˝ááşá¸ áĄááŻááşáááŹá¸ááťááşááťážááşáá áşááŻá áŽáá˝ááş ááąááŹáááŻá¸ááŹá¸áážáŻáĄááąáĄáá˝ááş ááŤáážááááşá áĄááŻááşáááŹá¸áĄáŹá¸ááŻáśá¸ á áááşááźáąááťážáąáŹáˇááźáŽá¸ ááťážááąááŹá¸ááąáŹ ááąááŹáĄáá áşááᯠáĄááşááŻááşááŻááşáážáᏠááąááŹááąáŹááşá¸ááᯠááťááşááŽá¸áá áşáááşááźá áşáááşá áááşá¸áááş RCU áážááˇáşáá°ááŽáááşá
Cluster update threading
á¤ááášááá˝ááşá áĄá
áŻáĄáá˝á˛áˇáá
áşááŻááᯠá
áŽááśáááˇáşáá˝á˛áááş TLS (Thread local storage) ááᯠáááşáááŻáˇáĄááŻáśá¸ááźáŻááźáąáŹááşá¸ ááąáŹáşááźááŤáááşá áĄá
áŻáĄááąá¸á
áŽááśáááˇáşáá˝á˛áážáŻáá˝ááş xDS API áážááˇáş/áááŻáˇáááŻááş DNS ááŻááşááąáŹááşááźááşá¸áĄááźááş ááťááşá¸ááŹááąá¸á
á
áşááąá¸ááźááşá¸áááşá¸ ááŤáááşáááşá
![[ááŹááŹááźááş] Envoy threading model](/wp-content/uploads/2019/04/238f5718729e1f12f8f0d6507f16abe8.jpeg)
Cluster flow Management áá˝ááş áĄáąáŹááşá፠áĄá
áááşáĄáááŻááşá¸ááťáŹá¸áážááˇáş áĄáááˇáşááťáŹá¸ ááŤáááşáááş-
- Cluster Manager áááş Envoy áĄáá˝ááşá¸áážá áĄá áááşáĄáááŻááşá¸áá áşááŻááźá áşááźáŽá¸ áá°ááááťáŹá¸ááąáŹ áĄá áŻáĄááąá¸áĄáááşáááŻááşá¸ááťáŹá¸á Cluster Discovery Service (CDS) APIá Secret Discovery Service (SDS) áážááˇáş Endpoint Discovery Service (EDS) APIsá DNS áážááˇáş ááŻááşááąáŹááşááąááąáŹ ááźááşáá á áşááąá¸áážáŻááťáŹá¸á ááťááşá¸ááŹááąá¸á á áşááąá¸ááźááşá¸á áážáŹáá˝áąáá˝áąáˇáážáááŹá¸ááąáŹ hosts ááťáŹá¸áĄááźááş ááťááşá¸ááŹááąá¸áĄááźáąáĄááąááťáŹá¸ááŤáááşááąáŹ upstream cluster áá áşááŻá áŽá "ááąáŹááşááŻáśá¸áá˝ááş áááááşáááşá¸" ááźááşáá˝ááşá¸áááşááŽá¸áááş ááŹáááşáážáááŤáááşá
- ááťááşá¸ááŹááąá¸á á áşááąá¸áá°áááş áááşááźá˝ááąáŹááťááşá¸ááŹááąá¸á á áşááąá¸áážáŻááᯠááŻááşááąáŹááşááźáŽá¸ ááťááşá¸ááŹááąá¸áĄááźáąáĄááąááźáąáŹááşá¸áá˛áážáŻááťáŹá¸ááᯠáĄá áŻáĄáá˝á˛áˇáááşááąááťáŹááś áĄá áŽáááşááśáááşá
- CDS (Cluster Discovery Service) / SDS (Secret Discovery Service) / EDS (Endpoint Discovery Service) / DNS ááᯠáĄá áŻáĄáá˝á˛áˇáĄáá˝á˛áˇáááşáĄááźá áş ááŻáśá¸ááźááşáááş ááŻááşááąáŹááşááŤáááşá áĄááźáąáĄááąááźáąáŹááşá¸áá˛áážáŻááᯠáĄá áŻáĄáá˝á˛áˇáááşááąááťáŹááś ááźááşááąá¸áááşá
- áĄááŻááşáááŹá¸ááťááşááťážááşáá áşááŻá áŽáááş ááźá áşáááşáá˝ááşá¸áááşáá áşááŻááᯠá ááşáááşáááźááşááŻááşááąáŹááşáááşá
- áĄá áŻáĄáá˝á˛áˇáááşááąááťáŹáááş áĄá áŻáĄááąá¸áá áşááŻáĄáá˝ááş áĄááźáąáĄááą ááźáąáŹááşá¸áá˛áá˝áŹá¸ááźáąáŹááşá¸ ááŻáśá¸ááźááşááąáŹáĄááŤá áááşá¸áááş áĄá áŻáĄááąá¸á áĄááźáąáĄááąá áááşááŹááźááşááŹááąáŹ ááťážááşáá áşááźááşáĄáá áşáá áşááŻááᯠáááşááŽá¸ááźáŽá¸ áááşá¸áĄáŹá¸ áĄááŻááşáááŹá¸áááŻááşá¸áááŻáˇ ááąá¸áááŻáˇáááşá
- ááŹáááˇáşááááşááááşááąáŹááŹááá˝ááşá áĄááŻááşáááŹá¸ááťááşááťážááşáááş áá˝á˛ááąááťááŹá¸ááąá¸áááˇáş TLS áĄááąáŤááşáá˝ááş ááťážááşáá áşááźááşáááŻááşááťááşáĄáŹá¸ áĄááşááááşááŻááşáááşááźá áşáááşá
- áááşááśáá°áĄáŹá¸ ááťáááşáá˝ááşááťážáŹáááşáááşáĄáá˝ááş áááşááśááąáŹááşáá˝ááşááąá¸áááˇáş I/O áá˝á˛áá áşááŻáĄáá˝ááşá¸á áááşááťáááşáá˝ááşááťážáŹáááş host áážááˇáşáááşáááşáááˇáş áĄááťááşáĄáááşáááŻááá°áááş TLS (Thread local storage) slot áá áşáᯠááąáŹááşá¸áááŻáááşááźá áşáááşá ááŤáááąáŹáˇáááąáŹááşááááŻáĄááşááŤáá°á¸á TLS áááş ááťáááşáá˝ááşááťážáŹáááşáááˇáş ááťáááşáá˝ááşááťážáŹááťáŹá¸áážááˇáş áĄááźáŹá¸áĄá áááşáĄáááŻááşá¸ááťáŹá¸ááᯠáááşáážáşááťáŹá¸á ááąááŹáááşááąáŹááşááŻáśááťáŹá¸ á áááşáááŻáˇááᯠááźááşáááşáá˝ááşááťááşáááŻááşá áąáááş áĄááşááááşááźá áşáááşááťáŹá¸ááᯠáĄá ááťááŻá¸áááŻááşáááşááᯠáááááźáŻááŤá áááşá¸áááş á¤áááŻáˇá áşá ááąáŹááşááťáąáŹáşáá˝ááşááąáŹáşáááşá¸ ááŻááşáážá ááąááŹáĄááťááŻá¸ááťááŻá¸áá˝ááş áĄááŻáśá¸ááźáŻáááşá
áĄáááşááąáŹáşááźááŤááŻááşááŻáśá¸ááŻááşáááşá¸áááŻáĄááŻáśá¸ááźáŻááźááşá¸ááźááˇáş Envoy áááş ááąáŹááşá¸áááŻáážáŻáááŻááşá¸ááᯠááááşáááŻáˇááźááşá¸ááážááᲠ(ááááşááąáŹáşááźáá˛áˇáááˇáşáĄáááŻááşá¸) ááąáŹááşáá˝ááşááąá¸áááŻááşáááşá TLS ááŻááşáááŻááşáááŻááşá áážáŻááşáá˝áąá¸áážáŻáĄááźááşá ááŻááşáĄááťáŹá¸á áŻáááş multithreading áĄááŻááşááŻááşááŻáśáážááˇáş single-threaded ááąá¸ááŹá¸áááŻááşáááşááᯠááŹá¸áááşáááşááááŻáĄááşááŤá áááşá¸áááş áááŻáááŻááąáŹááşá¸áá˝ááşááąáŹá á˝ááşá¸ááąáŹááşáááşáĄááźááş ááŻááşáĄááťáŹá¸á áŻááᯠááąá¸áááşáááŻáááŻáá˝ááşáá°á áąáááşá
TLS áááŻáĄááŻáśá¸ááźáŻáááˇáş áĄááźáŹá¸á áá áşáá˝á˛ááťáŹá¸
TLS (Thread local storage) áážááˇáş RCU (Read Copy Update) ááᯠEnvoy áá˝ááş áá˝ááşááťááşá á˝áŹ áĄááŻáśá¸ááźáŻááŤáááşá
áĄááŻáśá¸ááźáŻáážáŻáĽáááŹ:
- ááŻááşááąáŹááşááąá ááşáĄáá˝ááşá¸ ááŻááşááąáŹááşáááŻááşá á˝ááşá¸ááᯠááźáąáŹááşá¸áá˛áááşáĄáá˝ááş ááášáááŹá¸- áááşáážááá˝ááˇáşááŹá¸áááˇáş ááŻááşááąáŹááşáááŻááşá á˝ááşá¸á áŹáááşá¸ááᯠáááşáá áŹáá˝á˛áá˝ááş áá˝ááşááťááşááŹá¸áááşá áááŻáˇááąáŹááş RCU ááąáŤááŹáááᯠáĄááŻáśá¸ááźáŻá áĄááŻááşáááŹá¸á áŹáá˝á˛áá áşááŻá áŽááᯠáááşáááş-áááşáááşááťážááşáá áşááźááşáááŻááşááťááşáá áşáᯠááąá¸áááşá
- áááşá¸ááźáąáŹááşá¸áááŹá¸ááťáŹá¸ááᯠáĄá áŹá¸áááŻá¸ááźááşá¸áRDS (Route Discovery Service) ááž ááśáˇáááŻá¸ááąá¸ááąáŹ áááşá¸ááźáąáŹááşá¸áááŹá¸ááťáŹá¸áĄáá˝ááş) áááşá¸ááźáąáŹááşá¸áááŹá¸ááťáŹá¸ááᯠáááşáá áŹáá˝á˛áá˝ááş áááşááŽá¸ááŹá¸áááşá RCU (Read Copy Update) áá°ááąáŹ ááąáŤááŹáááᯠáĄááŻáśá¸ááźáŻá ááŻááşááŹá¸áááŻááşá¸áá áşááŻá áŽáááŻáˇ áááşáááşááŽá¸áááˇáş ááťážááşáá áşááźááşáááŻááşááťááşáĄáŹá¸ ááąáŹááşáááŻááşá¸áá˝ááş ááąá¸áĄááşáá˝áŹá¸ááŤáááşá áááşá¸áááş áááşá¸ááźáąáŹááşá¸áááŹá¸ááťáŹá¸ááᯠáĄááşáááşááźáąáŹááşá¸áá˛ááźááşá¸áĄáŹá¸ ááááąáŹááşá á˝áŹááŻááşááąáŹááşá áąáááşá
- HTTP ááąáŤááşá¸á áŽá¸ ááááşá¸áááşá¸ááźááşá¸- áá˝ááşááąáŤáşááŹáááˇáşáĄáááŻááşá¸á ááąáŹááşá¸áááŻááťááşáá áşááŻá áŽáĄáá˝ááş HTTP ááąáŤááşá¸á áŽá¸ááᯠáá˝ááşááťááşááźááşá¸ (core áá áşááŻááťážááş ~25K+ RPS RPS ááᯠáĄááŻáśá¸ááźáŻááąá ááş) áááş áĄáá˝ááşá áťáąá¸ááźáŽá¸áááşá áĄáá°á¸áááŻááşá áŹá¸áážááşáááş á áášáááˇáşáááşáááŻááşá¸ ááąáŤááşá¸á áŽá¸áĄáŹá¸ ááááŻáážáá˝ááşááťááşááźáŽá¸ TLS áážááˇáş RCU áážáá áşáááˇáş áĄááŻááşáááŹá¸áá áşáŚá¸á áŽáĄáŹá¸ ááąá¸áááşá
áĄááźáŹá¸ááá ášá ááťáŹá¸áážáááŤáááşá áááŻáˇááąáŹáşááááşááá°ááŹááťáŹá¸áááş TLS áááŻááŹáĄáá˝ááşáĄááŻáśá¸ááźáŻáááşááᯠááąáŹááşá¸á á˝áŹááŹá¸áááşáááąáŹááąáŤááşáááˇáşáááşá
á á˝ááşá¸ááąáŹááşáááş ááťááŻáˇáá˝ááşá¸ááťááşááťáŹá¸ááᯠáááážááááşá
Envoy áááş áĄááŻáśá¸á áŻáś ááąáŹááşá¸áá˝ááşá á˝áŹ á á˝ááşá¸ááąáŹááşáááŻááşááąáŹáşáááşá¸ áááşá¸ááᯠáĄáá˝ááşááźááˇáşááŹá¸ááąáŹ ááąáŤááşá¸á ááşáá˝áąááźáąá¸ááźááˇáş áĄááŻáśá¸ááźáŻáááˇáşáĄá፠áááááźáŻáááş áááŻáĄááşáááˇáş áááşáážáŹá¸ááąáŹ áááşáááşáĄááťááŻáˇ áážáááŤáááşá
- á¤ááąáŹááşá¸ááŤá¸áá˝ááş ááąáŹáşááźááŹá¸áááˇáşáĄáááŻááşá¸á áááşáážááá˝ááş áĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸áááş access log memory buffer áááŻáˇ á áŹááąá¸áááˇáşáĄá፠ááąáŹáˇááşáá áşáᯠááážáááŤáááşá ááźááˇáşááŹá¸ááąáŹ ááąáŤááşá¸á ááşáá˝áąááźáąá¸áážááˇáş ááźááˇáşááŹá¸ááąáŹ áá˝ááşá¸áĄáŹá¸á áŻáá˝ááşá áááşáááş ááąáŹááşááŻáśá¸áááŻááşáááŻáˇ á áŹááąá¸ááąáŹáĄááŤáá˝ááş áĄááááˇáşááźááşááááŻáˇ ááąá¸áááŻáˇááźááşá¸áĄáá˝ááş áĄááŻáśá¸á ááááşááźááˇáş áĄááŻááşáááŹá¸ááťááşá áŹáá áşááŻá áŽáĄáá˝ááş áááşááąáŹááşáá˝ááˇáşáážááşáááşá¸ááťáŹá¸ááᯠáĄá áŻáááŻááşááźáŻááŻááşáááş áááŻáĄááşááŤáááşá ááááşá¸áĄáŹá¸ááźááˇáş áááşáááş áĄááŻááşáááŹá¸ááťááşáážáąáŹááşáážáŻáá áşááŻá áŽáĄáá˝ááş ááŽá¸ááźáŹá¸áááşááąáŹááşáá˝ááˇáşáážááşáááşá¸áá áşááŻááᯠáááşááŽá¸áááŻááşáááşá
- á áŹáááşá¸áĄááşá¸ááťáŹá¸ááᯠáĄáá˝ááşááąáŹááşá¸áá˝ááşáĄáąáŹááşááźáŻááŻááşááŹá¸ááąáŹáşáááşá¸á áĄáá˝ááşááźááˇáşááŹá¸ááąáŹ áá°ááŽááąáŹáá˝áąááźáąá¸áážááˇáş ááźááşáááşá¸áážáŻáá˝ááş áá áşáŚá¸ááťááşá¸á áŹáááşá¸áááŹá¸ááťáŹá¸áĄááąáŤáş áĄááŻááźá°áĄááźááşá¸áá˝áŹá¸áážáŻááźá áşáááŻááşáá˝ááşáážááááşá á¤ááźáżááŹáĄáá˝ááş ááźáąáážááşá¸ááťááşáážáŹ ááááŻááąáŹááşááŹááťáŹá¸ááᯠáĄááťáááşáĄááŤáĄáááŻááş ááźááşáááşáááşáážááşááźááşá¸áážááˇáşáĄáá° áĄááŻááşáááŹá¸ááťááşáážáąáŹááşáážáŻáá áşááŻá áŽááźá áşáááşá ááŤááᯠááąáŹááşáááŻáˇá áşáá áşááŻáážáŹ áá˝áąá¸áá˝áąá¸ááŤáááşá
- ááááŹáááşáážáŹá¸ááąáŹ ááŻááşááąáŹááşááźááşá¸áááŻááşáᏠáĄáááşá¸áĄááźá áşááťáŹá¸ áááŻáĄááşáááˇáş ááťáááşáááşáážáŻ áĄáá˝ááşáááşá¸áááˇáş áĄááźáąáĄááąáá˝ááş Envoy ááᯠáĄááŻáśá¸ááźáŻááŤá áááşáážá ááááŻááŹáááşááŹáááş ááąáŹááşá¸á á˝áŹ áĄááŻááşáááźá áşááŤá ááťáááşáááşáážáŻááťáŹá¸ááᯠáĄááŻááşáááŹá¸ áááŻááşá¸ááťáŹá¸ááźáŹá¸áá˝ááş áĄááŽáĄááťáž áá˝á˛ááąááąá¸áááşáᯠáĄáŹáááśááťááş ááážáááŤá áĄááŻááşáááŹá¸áĄáááŻááşá¸áĄáááŻááşá¸ááťáŹá¸ááźáŹá¸ ááťáááşáááşáážáŻááťáŹá¸ááᯠááážááşáááŻááşá áąáááˇáş ááŻááşááŹá¸ááťáááşáááşáážáŻ ááťáááşáá˝ááşááťážáŹááᯠáĄááąáŹááşáĄáááşááąáŹáşááźááşá¸ááźááˇáş áááşá¸ááᯠááźáąáážááşá¸áááŻááşááŤáááşá
ááááŻáśá¸
Envoy á threading model ááᯠáážááşáááşá
á˝áŹ áááźááşáááşááŤá ááźáŻááşá¸ááŽá¸áááŻááşáááˇáş memory áážááˇáş connections ááťáŹá¸ááᯠáĄááŻáśá¸á
ááááşááźááˇáş ááááŻááááşááąá¸áá˝á˛ááŹáá˝ááş áá˝ááşáá°ááźáŽá¸ ááźáŽá¸ááŹá¸ááąáŹ ááźááŻááşáá°ááźááŻááşáááşááťáŹá¸ááᯠááśáˇáááŻá¸ááąá¸áááş ááŽáááŻááşá¸ááŻááşááŹá¸áááşá á¤ááŻáśá
áśáááş áĄáá˝ááşááźááˇáşááŹá¸ááąáŹ thread count áážááˇáş throughput áá˝ááş ááąáŹááşá¸áá˝ááşá
á˝áŹááŻááşááąáŹááşáááŻááşá
áąááŤáááşá
Twitter áá˝ááş ááťá˝ááşáŻááşáĄááťááşá¸ááťáŻáśá¸ááźáąáŹáá˛áˇáááˇáşáĄáááŻááşá¸á ááŽáááŻááşá¸áááş DPDK (Data Plane Development Kit) áá˛áˇáááŻáˇááąáŹ ááŻáśá¸á
á˝á˛áá°ááŻááş áá˝ááşáááşááťáááşáááşáážáŻáĄá
áŻá
áŻáááááşáá˝ááş ááŽáááŻááşá¸ááᯠááŻááşááąáŹááşáááŻááşááźáŽá¸ áááŹá¸áááŻá¸ááťááŹááŹááťáŹá¸áááş L7 ááŻááşááąáŹááşááťááşáĄááźááˇáşááźááˇáş áá
áşá
áášáááˇáşááťážááş ááąáŹááşá¸áááŻááťááşáááşá¸ááąáŤááşá¸ááťáŹá¸á
á˝áŹááᯠáááŻááşáá˝ááşáááŻááşá
áąááŤáááşá ááŹáááˇáşáážá
áşáĄáááşá¸áááşáĄáá˝ááşá¸ áááşáááˇáşáĄááŹááťáŹá¸ ááąáŹááşááŻááşáááşááᯠááźááˇáşáážáŻáááş áĄáá˝ááşá
áááşáááşá
áŹá¸áá˝ááşááąáŹááşá¸ááŤáááşá
ááąáŹááşááŻáśá¸ áĄááźááşáážááşááťááşáá
áşááŻ- Envoy áĄáá˝ááş C++ ááᯠááŹááźáąáŹááˇáş áá˝áąá¸ááťááşáá˛áˇááŹáᲠáĄááźáááşááźáááş ááąá¸áá°á¸ááŤáááşá á¤áááŻáˇá
áşáá˝ááş ááąáŹáşááźááŹá¸ááąáŹ ááááŻááŹáááşááŹááᯠáááşááąáŹááşáááŻááşáááˇáş áá
áşááŻáááşá¸ááąáŹ áĄááŻáśá¸ááťáŹá¸áááˇáş á
ááşáážáŻáĄáááˇáşááŹááŹá
ááŹá¸ááźá
áşááąáᲠáĄááźáąáŹááşá¸áááşá¸áážáŹ ááťááşáážáááąááŤáááşá C++ áááş áááąáŹááťááşáĄáŹá¸ááŻáśá¸ áááŻáˇáááŻááş áĄááťáŹá¸áĄááźáŹá¸áĄáá˝ááş ááááˇáşááťáąáŹáşááąáŹáşáááşá¸ áĄááťááŻáˇááąáŹáĄááŻáśá¸ááźáŻáážáŻááá
ášá
ááťáŹá¸áá˝ááş áááşá¸áááş áĄááŻááşááźáŽá¸ááźáąáŹááşáááş áá
áşááŻáááşá¸ááąáŹááááááŹááźá
áşááąáá˛ááźá
áşáááşá
ááŻááşáááˇáşááşááťáŹá¸
á¤áááŻáˇá áşáá˝ááş áá˝áąá¸áá˝áąá¸ááŹá¸ááąáŹ áĄááşááŹááąáˇá áşááťáŹá¸áážááˇáş ááąáŤááşá¸á áŽá¸áĄááąáŹááşáĄáááşááąáŹáşáážáŻááťáŹá¸ááŤáážáááąáŹ áááŻááşááťáŹá¸áááŻáˇ áááˇáşááşááťáŹá¸-
source: www.habr.com
