拥抱ServiceMesh 华为 巨震

2. ••    •• CoSnDteKntTitle2  •• CoSneternvticTeitlMe 3esh •• ContentSTDitKle 4Service Mesh •• CoSenrtveicnet MTietsleh 5 •• Content Title 6
3.  SDK SDK SDK SDK proxy proxy proxy proxy •  •    •    •  • !   • SDK • !httpRPC… •   •  • !  •   • Cloud Native
4. SDK   service Java SDK Registration discovery Registry Center service Go SDK configura9on Config Center
5. SDK  • Spring MVC • JAX-RS • POJO       …  •  •  $"#!
6. Service Mesh • A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application. • In practice, the service mesh is typically implemented as an array of lightweight network proxies that are deployed alongside application code, without the application needing to be aware. William Morgan
7. Service Mesh • Data plane • Control plane
8. Istio • Istio service Java SDK Registration discovery Registry Center service Go SDK configuration Config Center
9. SDK • Java SDK  Go SDK? • Go wins! Go SDK core Sidecar
10. SDK
11. & Registry Center Registrator Istio Kubernetes Registry Center Service Discovery Instance Cache Management
12.  http request grpc request Other protocols invocation Handler Chain Rate Limi9ng Load Balancing Routing Fault Injection Fallback … http request grpc request
13. SDK + Sidecar Control Plane Registry Config Center Center IsHo Apollo Huawei CSE service proxy Data Plane service Java-sdk service Go-sdk Infrastructures Kubernetes VM Bare metal Clouds Monitoring Zipkin Prometheus Grafana Huawei APM
14. Is#o • Envoy Sidecar  • Go SDK Istio • Iptables • Handler chain  Mixer Istio Pilot xDS API Server   Discovery Config Proxy SDK
15. Cloud Native • sidecar-injector  • Kubernetes 1.9 or later • MutatingAdmissionWebhook • Namespace, configmap, mutatingwebhookconfiguration   • Pod Spec  • Namespace  kubectl label myns sidecar-injector=enabled
16.  Kubernetes Cluster: 3 VM Nodes(6Core, 4G Mem) wrk –c40 -n20 –d10s http://client-host:port 14000 QPS 12000 10000 8000 6000 4000 2000 0 QPS  Go SDK Sidecar Istio(no mixer) Istio client 25 http payload payload size is: n bytes  server 20 15 10 5 0 Latency(ms)  GO SDK Sidecar Istio(no mixer) Istio
17.  •  h"ps://github.com/go-mesh/mesher-examples •  h"ps://github.com/go-mesh/mesher-tools/tree/master/perf
18.  •  https://github.com/go-mesh/mesher-examples •  https://github.com/go-mesh/mesher-tools/tree/master/perf
19.  •  https://github.com/go-mesh/mesher-examples •  https://github.com/go-mesh/mesher-tools/tree/master/perf
20.  •  https://github.com/go-mesh/mesher-examples •  https://github.com/go-mesh/mesher-tools/tree/master/perf
21.  •  h"ps://github.com/go-mesh/mesher-examples •  h"ps://github.com/go-mesh/mesher-tools/tree/master/perf