αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd

αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd

αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†

αž™αžΎαž„β€‹αžŸαŸ’αžαž·αžβ€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„ Shopify αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ Istio αž‡αžΆαž”αžŽαŸ’αžαžΆαž‰αžŸαŸαžœαžΆαŸ” αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž’αŸ’αžœαžΈαŸ—αž‚αžΊαž›αŸ’αž’ αž›αžΎαž€αž›αŸ‚αž„αžαŸ‚αžšαžΏαž„αž˜αž½αž™αŸ– αžœαžΆβ€‹αž˜αžΆαž“β€‹αžαž˜αŸ’αž›αŸƒβ€‹αžαŸ’αž›αŸƒ.

Π’ αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αžœαžΆαž“αž·αž™αžΆαž™αžαžΆ:

αž‡αžΆαž˜αž½αž™αž“αžΉαž„ Istio 1.1 αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž αŸ‚αž› 0,6 vCPUs (αžŸαŸ’αž“αžΌαž›αž“αž·αž˜αŸ’αž˜αž·αž) αž€αŸ’αž“αž»αž„ 1000 αžŸαŸ†αžŽαžΎαž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ†αž”αž“αŸ‹αž‘αžΈαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαžΆαž‰αžŸαŸαžœαžΆ (αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ 2 αž“αŸ…αž•αŸ’αž“αŸ‚αž€αž˜αŸ’αžαžΆαž„αž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹) αž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“ 1200 αžŸαŸ’αž“αžΌαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ αž€αŸ’αž“αž»αž„αž’αžαŸ’αžšαžΆαž˜αž½αž™αž›αžΆαž“αžŸαŸ†αžŽαžΎαž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ” αž™αŸ„αž„αžαžΆαž˜αž€αžΆαžšαž‚αžŽαž“αžΆαžαž˜αŸ’αž›αŸƒαžšαž”αžŸαŸ‹ Google αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž αŸ‚αž› $40/month/core αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ n1-standard-64αž“αŸ„αŸ‡αž‚αžΊαžαŸ†αž”αž“αŸ‹αž“αŸαŸ‡αžαŸ‚αž˜αž½αž™αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž™αžΎαž„αž…αŸ†αžŽαžΆαž™αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ 50 αž–αžΆαž“αŸ‹αžŠαž»αž›αŸ’αž›αžΆαžšαž€αŸ’αž“αž»αž„αž˜αž½αž™αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαžΎ 1 αž›αžΆαž“αž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ”

αž’αŸŠαžΈαžœαŸ‰αžΆαž“ ស៊ីម (αž’αŸŠαžΈαžœαŸ‰αžΆαž“αžŸαŸŠαžΈαž˜) αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžŠαŸ„αž™αž˜αžΎαž›αžƒαžΎαž‰ service mesh αž”αžΆαž“αž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž€αžΆαž›αž–αžΈαž†αŸ’αž“αžΆαŸ†αž˜αž»αž“ αž αžΎαž™αž”αžΆαž“αžŸαž“αŸ’αž™αžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ memory αž“αž·αž„ processor αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸαŸ–

αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αžαž˜αŸ’αž›αŸƒ-istio-test.yaml αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž“αžŸαŸ†αžŽαžΎαžŸαŸŠαžΈαž—αžΈαž™αžΌαž™αŸ‰αžΆαž„αž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαŸ’αž‰αž»αŸ†αž’αŸ’αžœαžΎαž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆαž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαŸ’αž“αžΌαž›αžŸαŸŠαžΈαž—αžΈαž™αžΌαž”αŸ’αžšαž αŸ‚αž› 24 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž‘αžΆαŸ†αž„αž”αž‰αŸ’αž‡αžΆ αž“αž·αž„ 0,5 αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαž“αžΈαž˜αž½αž™αŸ—αŸ” αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž˜αžΆαž“αž…αŸ’αžšαžΎαž“αž“αŸ„αŸ‡αž‘αŸαŸ” αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž˜αŸ’αžαž„αž‘αŸ€αž αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αž“αž’αžΆαž“αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αŸ”

αžαŸ’αž‰αž»αŸ†β€‹αž…αž„αŸ‹β€‹αžƒαžΎαž‰β€‹αžαŸ’αž›αž½αž“β€‹αž―αž„β€‹αžαžΆβ€‹αžαžΎβ€‹αž€αžΆαžšβ€‹αž’αž“αž»αžœαžαŸ’αžβ€‹αžšαž”αžŸαŸ‹ Istio αžŸαŸ’αžšαžŠαŸ€αž„β€‹αž‚αŸ’αž“αžΆβ€‹αž“αžΉαž„β€‹αž”αžŽαŸ’αžαžΆαž‰β€‹αžŸαŸαžœαžΆβ€‹αž”αŸ’αžšαž—αž–β€‹αž”αžΎαž€β€‹αž…αŸ†αž β€‹αž˜αž½αž™β€‹αž‘αŸ€αžβ€‹αž™αŸ‰αžΆαž„β€‹αžŽαžΆαŸ– αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹.

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŸαŸ†αžŽαžΆαž‰αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜

αž‡αžΆαžŠαŸ†αž”αžΌαž„αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ SuperGloo:

$ supergloo init
installing supergloo version 0.3.12
using chart uri https://storage.googleapis.com/supergloo-helm/charts/supergloo-0.3.12.tgz
configmap/sidecar-injection-resources created
serviceaccount/supergloo created
serviceaccount/discovery created
serviceaccount/mesh-discovery created
clusterrole.rbac.authorization.k8s.io/discovery created
clusterrole.rbac.authorization.k8s.io/mesh-discovery created
clusterrolebinding.rbac.authorization.k8s.io/supergloo-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/discovery-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/mesh-discovery-role-binding created
deployment.extensions/supergloo created
deployment.extensions/discovery created
deployment.extensions/mesh-discovery created
install successful!

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎ SuperGloo αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž’αŸ’αžœαžΎαž±αŸ’αž™ bootstrapping αžŸαŸαžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž„αŸ” αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž…αŸ’αžšαžΎαž“αž‘αŸαŸ” αž™αžΎαž„αž˜αž·αž“αž”αŸ’αžšαžΎ SuperGloo αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αž›αž·αžαž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž„αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αŸ” αžαŸ’αž‰αž»αŸ†β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αŸ’αžšαžΎβ€‹αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆβ€‹αž–αžΈαžšβ€‹αž”αžΈβ€‹αžƒαŸ’αž›αžΆβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜β€‹αž“αžΈαž˜αž½αž™αŸ—αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαž…αž„αŸ’αž€αŸ„αž˜αž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž―αž€αŸ„ - αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd αŸ”

αž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž“αŸ…αž›αžΎ Google Kubernetes Engine αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎ Kubernetes 1.12.7-gke.7 αž“αž·αž„αž€αŸ’αžšαž»αž˜αžαŸ’αž“αžΆαŸ†αž„ n1-standard-4 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· (αž’αž”αŸ’αž”αž”αžšαž˜αžΆ 4 αž’αžαž·αž”αžšαž˜αžΆ 16) αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžŸαŸαžœαžΆ Meshes αž‘αžΆαŸ†αž„αž–αžΈαžšαž–αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ”

αž’αŸ’αž“αž€αž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ†αž”αžΌαž„αŸ–

$ supergloo install linkerd --name linkerd
+---------+--------------+---------+---------------------------+
| INSTALL |     TYPE     | STATUS  |          DETAILS          |
+---------+--------------+---------+---------------------------+
| linkerd | Linkerd Mesh | Pending | enabled: true             |
|         |              |         | version: stable-2.3.0     |
|         |              |         | namespace: linkerd        |
|         |              |         | mtls enabled: true        |
|         |              |         | auto inject enabled: true |
+---------+--------------+---------+---------------------------+

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ IstioαŸ–

$ supergloo install istio --name istio --installation-namespace istio-system --mtls=true --auto-inject=true
+---------+------------+---------+---------------------------+
| INSTALL |    TYPE    | STATUS  |          DETAILS          |
+---------+------------+---------+---------------------------+
| istio   | Istio Mesh | Pending | enabled: true             |
|         |            |         | version: 1.0.6            |
|         |            |         | namespace: istio-system   |
|         |            |         | mtls enabled: true        |
|         |            |         | auto inject enabled: true |
|         |            |         | grafana enabled: true     |
|         |            |         | prometheus enabled: true  |
|         |            |         | jaeger enabled: true      |
+---------+------------+---------+---------------------------+

αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž‚αžΆαŸ†αž„αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž–αžΈαžšαž”αžΈαž“αžΆαž‘αžΈ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž•αŸ’αž‘αžΆαŸ†αž„αž”αž‰αŸ’αž‡αžΆαž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–αŸ”

(αž…αŸ†αžŽαžΆαŸ†αŸ– SuperGloo αž‚αžΆαŸ†αž‘αŸ’αžšαžαŸ‚ Istio 1.0.x αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαž˜αŸ’αžαž„αž‘αŸ€αžαž‡αžΆαž˜αž½αž™ Istio 1.1.3 αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž–αžΈαž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ”)

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Istio αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™ Istio αžŠαŸ†αž‘αžΎαž„ sidecar Envoy αž™αžΎαž„αž”αŸ’αžšαžΎ sidecar injector βˆ’ MutatingAdmissionWebhook. αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‘αŸαŸ” αžαŸ’αž‰αž»αŸ†αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž“αž·αž™αžΆαž™αžαžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž•αžαžαž›αžαŸ’αž˜αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜αžαžΆαž˜αžœαž“αŸ’αž sidecar αž“αž·αž„ initContainer αžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž€αž·αž…αŸ’αž…αž€αžΆαžšαŸ” iptables.

αž™αžΎαž„αž“αŸ… Shopify αž”αžΆαž“αžŸαžšαžŸαŸαžšαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž€αžΆαžšαž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαžšαžαž™αž“αŸ’αžαž…αŸ†αž αŸ€αž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ Istio αŸ” αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž…αžΆαž€αŸ‹αžαŸ’αž“αžΆαŸ†αž…αŸ†αž αŸ€αž„αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αžΆαž“αž•αŸ’αž›αžΌαžœαž€αžΆαžαŸ‹αž€αŸ’αž“αž»αž„αž…αž“αŸ’αž›αŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ istio-injection: enabled:

$ kubectl label namespace irs-client-dev istio-injection=enabled
namespace/irs-client-dev labeled

$ kubectl label namespace irs-server-dev istio-injection=enabled
namespace/irs-server-dev labeled

αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Linkerd αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·

αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αž‘αžΎαž„αž€αžΆαžšαž”αž„αŸ’αž€αž”αŸ‹ Linkerd sidecar αž™αžΎαž„αž”αŸ’αžšαžΎαž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹ (αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžœαžΆαžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆ kubectl edit):

metadata:
  annotations:
    linkerd.io/inject: enabled

$ k edit ns irs-server-dev 
namespace/irs-server-dev edited

$ k get ns irs-server-dev -o yaml
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    linkerd.io/inject: enabled
  name: irs-server-dev
spec:
  finalizers:
  - kubernetes
status:
  phase: Active

Istio Fault Tolerance Simulator

αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž αŸ…αžαžΆ Istio αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αžšαžΆαž…αžšαžŽαŸαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž…αŸ†αž–αŸ„αŸ‡ Shopify αŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž§αž”αž€αžšαžŽαŸαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž topology αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ αžŠαŸ‚αž›αž“αžΉαž„αžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž•αŸ’αž“αŸ‚αž€αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αŸ’αžšαžΆαž αŸ’αžœαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αžœαž“αŸ’αžαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž‚αŸ†αžšαžΌαž“αŸƒαž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ”

αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹ Shopify αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž”αž“αŸ’αž‘αž»αž€αž’αŸ’αž„αž“αŸ‹αž€αŸ†αž‘αž»αž„αž–αŸαž›αž›αž€αŸ‹αž–αž“αŸ’αž›αžΊαŸ” αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸ„αŸ‡ Shopify αžŽαŸ‚αž“αžΆαŸ†αž’αŸ’αž“αž€αž›αž€αŸ‹αž±αŸ’αž™αžšαž€αŸ’αžŸαžΆαž€αžΆαžšαž›αž€αŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž±αŸ’αž™αž”αžΆαž“αž‰αžΉαž€αž‰αžΆαž”αŸ‹. αž’αžαž·αžαž·αž‡αž“αž’αŸ† αŸ— αž–αŸαž›αžαŸ’αž›αŸ‡αž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αžΆαžšαž›αž€αŸ‹αž–αž“αŸ’αž›αžΊαžŠαŸ‚αž›αž”αžΆαž“αž‚αŸ’αžšαŸ„αž„αž‘αž»αž€αŸ” αž’αŸ’αž“αž€β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αžβ€‹αžŠαžΉαž€β€‹αž“αžΆαŸ†β€‹αž–αž½αž€β€‹αž‚αŸβ€‹αžŠαŸ„αž™β€‹αž˜αž·αž“β€‹αž“αžΉαž€β€‹αžŸαŸ’αž˜αžΆαž“β€‹αžŠαž›αŸ‹β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž™αžΎαž„β€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž–αŸαž›β€‹αžœαŸαž›αžΆβ€‹αž“αŸƒβ€‹αžαŸ’αž„αŸƒβ€‹αž¬β€‹αž™αž”αŸ‹αŸ”

αž™αžΎαž„αž…αž„αŸ‹αž”αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž—αžΆαž–αž’αž“αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž‚αŸ†αžšαžΌαž›αŸ†αž αžΌαžšαž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αžΉαž„αž€αžαŸ’αžαžΆ αž“αž·αž„αž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžŠαž”αŸ‹αž›αžΎαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹ Shopify αž€αžΆαž›αž–αžΈαž’αžαžΈαžαž€αžΆαž›αŸ” αž‚αŸ„αž›αž”αŸ†αžŽαž„αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸαžœαžΆαžŸαŸ†αžŽαžΆαž‰αŸ‹αž‚αžΊαžαžΆ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž—αžΆαž–αž‡αžΏαž‡αžΆαž€αŸ‹ αž“αž·αž„αž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸαž“αŸ…αž€αž˜αŸ’αžšαž·αžαž”αžŽαŸ’αžαžΆαž‰ αž αžΎαž™αžœαžΆαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αžŠαŸ‚αž›αžŸαŸ†αžŽαžΆαž‰αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‘αž”αŸ‹αž‘αž›αŸ‹αž“αžΉαž„αž”αž“αŸ’αž‘αž»αž€αžŠαŸ‚αž›αžšαŸ†αžαžΆαž“αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž–αžΈαž˜αž»αž“αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸαŸ‡αžŠαžΌαž„αž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž’αžαŸ‹αž±αž“αž€αŸ†αž αž»αžŸαž‚αžΊαž‡αžΆαžαŸ’αž“αžΆαŸ†αž„αž€αž˜αŸ’αž˜αž€αžšαžŠαŸ‚αž›αžŠαžΎαžšαžαž½αž‡αžΆαžαŸ’αž“αžΆαŸ†αž„αžŸαŸ†αžŽαžΆαž‰αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ” αžαŸ’αž“αžΆαŸ†αž„αž€αž˜αŸ’αž˜αž€αžšαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸαžšαž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž¬αžαžΆαž˜αžœαž“αŸ’αžαžαžΆαž˜αžšαž™αŸˆ REST API αŸ” αž™αžΎαž„αž”αŸ’αžšαžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αžœαž“αŸ’αžαž“αŸƒαžαŸ’αž“αžΆαŸ†αž„αž€αž˜αŸ’αž˜αž€αžšαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž›αŸ†αž αžΌαžšαž€αžΆαžšαž„αžΆαžšαž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αŸ–

  • αž™αžΎαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš 10 servers as bar αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” 200/OK αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ 100 ms αŸ”
  • αž™αžΎαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αžαž·αžαž·αž‡αž“ 10 αž“αžΆαž€αŸ‹ - αž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αž•αŸ’αž‰αžΎαžŸαŸ†αžŽαžΎ 100 αž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαž‘αŸ… bar.
  • αžšαŸ€αž„αžšαžΆαž›αŸ‹ 10 αžœαž·αž“αžΆαž‘αžΈ αž™αžΎαž„αž›αž»αž”αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ 1 αž“αž·αž„αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αŸ†αž αž»αžŸ 5xx αž›αžΎαž’αžαž·αžαž·αž‡αž“αŸ”

αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž„αžΆαžš αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž» αž“αž·αž„αžšαž„αŸ’αžœαžΆαžŸαŸ‹ αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŠαŸ‚αžšαž¬αž‘αŸαŸ” αžœαž·αž’αžΈαž“αŸαŸ‡αž™αžΎαž„αžšαŸ€αž“αž’αŸ†αž–αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαžŸαŸαžœαžΆαžŸαŸ†αžŽαžΆαž‰αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΆαžšαžŸαž“αŸ’αž˜αžαŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž’αžαŸ‹αž±αž“αž€αŸ†αž αž»αžŸαŸ”

(αž…αŸ†αžŽαžΆαŸ†αŸ– αž™αžΎαž„αž€αŸ†αž–αž»αž„αž‚αž·αžαž’αŸ†αž–αžΈαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αž·αžŸαŸ„αž’αž—αžΆαž–αž’αžαŸ‹αž’αŸ’αž˜αžαŸ‹ Istio αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž‘αžΆαž“αŸ‹αžšαž½αž…αžšαžΆαž›αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž‘αžΎαž™αž‘αŸαŸ” )

Istio fault tolerance simulator αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜β€‹ mesh benchmark

αž™αžΎαž„αžšαŸ€αž”αž…αŸ†αžαŸ’αž“αžΆαŸ†αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαŸ–

  • irs-client-loadgenαŸ– αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž…αŸ†αž“αž½αž“ 3 αžŠαŸ‚αž›αž•αŸ’αž‰αžΎαžŸαŸ†αžŽαžΎ 100 αž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαž€αŸ’αž“αž»αž„αž˜αž½αž™ irs-client.
  • irs-clientαŸ– 3 αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αžŠαŸ‚αž›αž‘αž‘αž½αž›αžŸαŸ†αžŽαžΎ αžšαž„αŸ‹αž…αžΆαŸ† 100ms αž αžΎαž™αž”αž‰αŸ’αž‡αžΌαž“αžŸαŸ†αžŽαžΎαž‘αŸ… irs-server.
  • irs-serverαŸ– 3 αžšαžΌαž”αž…αž˜αŸ’αž›αž„αžŠαŸ‚αž›αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰ 200/OK αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ 100 ms αŸ”

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αžœαžΆαžŸαŸ‹αžŸαŸ’αž‘αž„αŸ‹αž›αŸ†αž αžΌαžšαž…αžšαžΆαž…αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–αžšαžœαžΆαž„αž…αŸ†αžŽαž»αž…αž”αž‰αŸ’αž…αž”αŸ‹ 9 αŸ” αž’αŸ’αž“αž€αž‡αž·αŸ‡αž€αŸ’αž“αž»αž„ irs-client-loadgen ΠΈ irs-server αž‘αž‘αž½αž›αž”αžΆαž“ 100 αžŸαŸ†αžŽαžΎαž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈ irs-client - 200 (αž…αžΌαž›αž“αž·αž„αž…αŸαž‰) αŸ”

αž™αžΎαž„αžαžΆαž˜αžŠαžΆαž“αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž“αž’αžΆαž“αžαžΆαž˜αžšαž™αŸˆ DataDogαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αž…αž„αŸ’αž€αŸ„αž˜ Prometheus αŸ”

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

αž•αŸ’αž‘αžΆαŸ†αž„αž”αž‰αŸ’αž‡αžΆ

αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαŸ”

αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd
αž•αŸ’αž‘αžΆαŸ†αž„αž”αž‰αŸ’αž‡αžΆ Linkerd ~ 22 αž˜αž·αž›αŸ’αž›αžΈαž€

αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd
αž•αŸ’αž‘αžΆαŸ†αž„αž”αž‰αŸ’αž‡αžΆ Istio: ~750 millicore

αž•αŸ’αž‘αžΆαŸ†αž„αž”αž‰αŸ’αž‡αžΆ Istio αž”αŸ’αžšαžΎαž”αŸ’αžšαž αŸ‚αž› αž’αž“αž’αžΆαž“ CPU αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ 35 αžŠαž„αž‡αžΆαž„ Linkerd αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž αžΎαž™ istio-telemetry αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž“αž’αžΆαž“αžαž½αžšαž€αŸ’αž”αžΆαž›αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž‘αžΈαž“αŸαŸ‡ (αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αžŠαŸ„αž™αž€αžΆαžšαž”αž·αž‘αž˜αž»αžαž„αžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“)αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžŠαž€αžŸαž˜αžΆαžŸαž—αžΆαž‚αž“αŸαŸ‡αž…αŸαž‰ αž™αžΎαž„αž“αŸ…αžαŸ‚αž‘αž‘αž½αž›αž”αžΆαž“αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ 100 αž˜αž·αž›αŸ’αž›αžΈαž€ αž–αŸ„αž›αž‚αžΊ 4 αžŠαž„αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž“αŸαŸ‡αž‡αžΆαž„ Linkerd αŸ”

αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ Sidecar

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαŸ” αžœαžΆαž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αŸ†αž“αž½αž“αž“αŸƒαžŸαŸ†αžŽαžΎ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžαž™αž“αŸ’αžαž…αŸ†αž αŸ€αž„αž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž›αžΎαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αžαŸ’αžŸαŸ‚αž€αŸ„αž„αŸ”

αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd
LinkerdαŸ– ~100 millicores αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ irs-client, ~50 millicores αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ irs-client-loadgen

αž›αž‘αŸ’αž’αž•αž›αž˜αžΎαž›αž‘αŸ…αž‘αžΌαž‡αžΈαžαž› αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαž’αžαž·αžαž·αž‡αž“αž‘αž‘αž½αž›αž”αžΆαž“αž…αžšαžΆαž…αžšαžŽαŸαž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ loadgen αž–αžΈαžšαžŠαž„αŸ– αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΆαž›αŸ‹αžŸαŸ†αžŽαžΎαžŠαŸ‚αž›αž…αŸαž‰αž˜αž€αž–αžΈ loadgen αž’αžαž·αžαž·αž‡αž“αž˜αžΆαž“αž˜αž½αž™αž…αžΌαž› αž“αž·αž„αž˜αž½αž™αž…αŸαž‰αŸ”

αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd
Istio/Envoy: ~155 millicores αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ irs-client, ~75 millicores αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ irs-client-loadgen

αž™αžΎαž„β€‹αžƒαžΎαž‰β€‹αž›αž‘αŸ’αž’αž•αž›β€‹αžŸαŸ’αžšαžŠαŸ€αž„β€‹αž‚αŸ’αž“αžΆβ€‹αž“αŸαŸ‡β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio sidecarsαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž‘αžΌαž‘αŸ… αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ Istio/Envoy αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž”αŸ’αžšαž αŸ‚αž› 50% αž’αž“αž’αžΆαž“ CPU αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž‡αžΆαž„ Linkerd αŸ”

αž™αžΎαž„αžƒαžΎαž‰αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ–

αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd
LinkerdαŸ– ~50 millicore αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ irs-server

αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Istio αž“αž·αž„ Linkerd
Istio/EnvoyαŸ– ~80 millicore αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ irs-server

αž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž—αžΆαž‚αžΈαžšαžαž™αž“αŸ’αž Istio/Envoy αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž”αŸ’αžšαž αŸ‚αž› 60% αž’αž“αž’αžΆαž“ CPU αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž‡αžΆαž„ Linkerd αŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ Istio Envoy αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌ 50+% αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ Linkerd αž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž”αž“αŸ’αž‘αŸ‡αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ Linkerd αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž“αž’αžΆαž“αžαž·αž…αž‡αžΆαž„ Istio αž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŸαŸ’αž“αžΌαž›αŸ”

αž™αžΎαž„αž“αŸ…αžαŸ‚αž‚αž·αžαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž”αžΎαž˜αžΆαž“αž‚αŸ†αž“αž·αž αžŸαžΌαž˜αž‡αž½αž™αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž•αž„!

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹