service mesh的思考及在华为云

29
Service Mesh的思考及在华为云 的实践 田晓亮

Upload: others

Post on 16-Oct-2021

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Service Mesh的思考及在华为云

Service Mesh的思考及在华为云的实践

田晓亮

Page 2: Service Mesh的思考及在华为云

6/30/2018

9年软件⾏业经验,曾就职于三星,2012年进⼊云计算领域,对PaaS, DevOps,APM有深⼊的研究和实践经验。⽅案⽀撑近千台VM中应⽤部署管理监控。华为云微服务引擎Mesher作者。

华为架构师

田晓亮

Page 3: Service Mesh的思考及在华为云

website: http://servicecomb.incubator.apache.org/

gitter: https://gitter.im/ServiceCombUsers/Lobby

AGENDA

Mesher介绍

01实践

02 03思考

Page 4: Service Mesh的思考及在华为云

微服务架构引入的问题

6/30/2018

Page 5: Service Mesh的思考及在华为云

什么是Service Mesh

• 一种基础设施层,服务间通信通过Service mesh进

• 一种TCP/IP之上的网络模型行

• 一个轻量的网络代理,与业务部署在一起

• 可靠的传输复杂网络拓扑中的服务请求,将服务变为现代的云原生服务

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Application

Service Mesh

Transport

Network

Physical

Application

Transport

Network

Physical

Page 6: Service Mesh的思考及在华为云

为什么要使用

• 解放业务开发者

• 改造遗留老应用成为云原生应用

• 代码0侵入

• 学习曲线

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Page 7: Service Mesh的思考及在华为云

华为内部的代理架构演进

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Page 8: Service Mesh的思考及在华为云

Mesher

• 根据Service mesh理论进行实现

• 基于自研的Go语言微服务框架开发

• 接入华为云和Istio生态

• 高性能,轻量:11mb RES,1ms延迟

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Page 9: Service Mesh的思考及在华为云

Mesher Design Goal

• 侵入式与非侵入式可结合使用• 不绑定基础设施• 服务可视化• 高性能,轻量• 尽最大可能插件化各功能模块• 透明的产品体验:整合容器平台,微服务引擎,API网关,指标监控,日志审计等云上服务,封装为微服务平台,让用户感知不到背后的复杂

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Page 10: Service Mesh的思考及在华为云

Data plane

整体架构

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Mesher

Service

Java SDK

Service

Infrastructure

CSE as control plane

Config center

Service center

Governance Web Console

Monitoring

Zipkin

Huawei APM

Prometheus

Grafana

Kubernetes

Go SDK

Service

Go SDK

Service

VM Bare metal CCE ServiceStage

API gateway

Page 11: Service Mesh的思考及在华为云

Data Plane

即侵入式框架与非侵入式mesher

• 注册发现

• 执行路由策略

• 负载均衡

• 透明TLS传输

• 生成监控数据

6/30/2018

Mesher

ServiceC

Java SDK

ServiceD

Go SDK

ServiceA

Mesher

ServiceB

Page 12: Service Mesh的思考及在华为云

Control plane

可人工介入,未运行时的mesher和侵入式框架提供配置下发

• 注册中心

• 下发配置

• 监控服务

• 调用引擎

6/30/2018

MesherMesherMesherMesher

Service Center

Console

LB

Route Rule

Circuit Breaker

Rate Limiting

Config Center

Scheduler

Governance API

server

Prometheus Zipkin

Page 13: Service Mesh的思考及在华为云

功能与实现原理

Page 14: Service Mesh的思考及在华为云

多协议支持

• 任意协议请求都被抽象为Invocation模型进行处理,最终再转换为协议请求转发

6/30/2018

Http Request

Grpc Request

Transfer Invocation

Http Server

Grpc Server

Transfer

Http Request

Grpc Request

Forward Provider Service

Handler Chain

Consumer service

Page 15: Service Mesh的思考及在华为云

注册发现• 统一的缓存保存机制

• Registrator与ServiceDiscovery插件,对接多种不同的注册发现服务

• 解耦的注册器和服务发现模块,可灵活选择使用客户端发现还是服务端发现

6/30/2018

Registrator

Service

center IstioKubern

etesConsul Eureka

Service Discovery

Instance Cache Management

Service

center

Page 16: Service Mesh的思考及在华为云

基于微服务元数据的路由管理• 匹配请求者header

• 匹配请求者元数据信息• 按权重引流• Router使用统一配置模型,支持插件对接不

同生态

6/30/2018

Request

请求特征:• Service Name

• Headers

• Consumer

metadata

Resolve

决定要访问的服务名后即可开始匹配路由规则,比如• 系统中稳定运行着A服务,版本是1.0,最近新上线了1.1版本,你希望只让一部分用户进行体验,那么你可以定义Header带有device-

os=android就将95%流量转移版本为1.0的实例中,5%

转移到1.1版本• 请求者的元数据中带有

env=production,那么要将路由到元数据中带有env=production的实例中

基于元数据的路由管理十分灵活,可以满足用户大部分场景

RouterResolver

Target Service Infos:Service name

Metadata

Read Route Rule

and ConvertQuery Instance

Cache

Service Instances:

10.24.0.23:8080

10.24.0.24:8080

IstioCSE

Page 17: Service Mesh的思考及在华为云

Admin API

• 独立监听端口

• 微服务健康

• mesher版本

• 路由信息

• Prometheus格式Metric数据

6/30/2018

Page 18: Service Mesh的思考及在华为云

透明的平台体验

• 部署容器应用时只需勾选以启用Mesher

6/30/2018

背后发生了什么?• 为应用容器设置环境变量http_proxy

• 为mesher设置CSE地址(注册中心,配置中心)

• 为mesher对接APM 日志收集• 为mesher对接APM metrics收集• 为mesher 对接APM 调用链追踪• 告知mesher业务服务的版本以及监控

端口

Page 19: Service Mesh的思考及在华为云

性能损耗

使用前 使用后

TPS 26000 6300

Latency 0.76ms 3.3ms

CPU 100% 130%

Concurrency 20 20

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Http server

mesher

Http server

ab ab

Page 20: Service Mesh的思考及在华为云

真正的性能损耗

使用前 使用后

TPS 4544 4467

Latency 4.4ms 4.47ms

CPU 100% 180%

Concurrency 20 20

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Http server

mesher

Http server

ab ab

Page 21: Service Mesh的思考及在华为云

性能损耗

使用前 使用后

TPS 1749 1496

Latency 2.8ms 3.34ms

CPU 50% 100%

Concurrency 5 5

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Http server

mesher

Http server

ab ab

Http server

Http server

mesher

Page 22: Service Mesh的思考及在华为云

性能对比Istio

Envoy Mesher

TPS 502 1246

Latency 5.34ms 3.48ms

CPU 100% 100%

Concurrency 5 5

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Http server

Envoy

wrk

Http server

Envoy

Http server

mesher

wrk

Http server

mesher

Page 23: Service Mesh的思考及在华为云

商用案例

Page 24: Service Mesh的思考及在华为云

Atlas

UPredict Service

Region

Pod

Mesher

Concrete service instance

(OCR 1.0.0)

UPredict MetaDB

Mesher

Concrete service instance

(OCR 1.0.0)

Mesher

Concrete service instance

(OCR 1.0.1)

Mesher

Model Services Proxy

API Gateway

Image Packager

HAProxy

Global

UPredict Console

Models/Services lifecycle management

HTTPS

Store models

Store images

Deploy services

Create K8S Cluster for CCE

OBS

CCEELB @EIPInternal

HAProxy

CCE

Console

CES

IAM

DCS

UPredict Admin

(UPredict administrator)UPredict Customers

(Models/Services administrator)

Fetch images

K8S集群 for UPredict

UPredict VPC

Actually deploy services

Register services instances, heart-beating

based on CSE

Concrete Prediction Services Customers

(OCR customers)

Prediction requests

HTTPS

Models/Services meta Create images

Cache billing statsGather stats Upload stats

Synchronize services authorization, fetch billing receipts (n -> s)

Register proxy instance, fetch services authorization (s -> n)

Prediction requests

SWR

AI服务

(Maintained by DBA)

Customer app

(OCR client)

Tenant VPC

JDBC

Model/Services lifecycle management API

Page 25: Service Mesh的思考及在华为云

25

华为ServiceMesh 华为云数据库

作业 人员 系统维护 作业 人员 系统维护

楼宇内各空间位置信标及资产标签 楼宇内各空间位置信标及资产标签

3G/4G

服务台

管理者 管理者

楼宇1 楼宇n高级管理 系统维护

华为云存储

楼宇设施管理

Page 26: Service Mesh的思考及在华为云

楼宇设施管理

• PHP语言开发,遗留单体服务快速改造为分布式架构• 负责公司内部的楼宇设施管理,使用mesher改造后,帮助客户将软件改造为SaaS服务,为更多企业提供服务

6/30/2018

Page 27: Service Mesh的思考及在华为云

最佳实践

• 结合容器,容器网络,编排调度平台,监控平台使用

• 业务代码只需监听在127.0.0.1.使用mesher对外提供服务

• 使用SideCar部署模式

• 将服务提供者地址写在配置文件中,在本地里信息是http://x.x.x.x:port, 进行开发调试,上云后

需要与Mesher使用时,改为http://ServiceName

• 服务调用层级不要超过3层

• 若调用层级超过2层,业务代码想要用上调用链追踪需要将TraceID转发

• 想要根据某些业务数据进行路由的话,将数据放在请求的header当中

• 业务开发期不要上云后就打开容错功能,容错会掩盖业务问题

6/30/2018

Page 28: Service Mesh的思考及在华为云

Take Away

• 一个商用级SERVICE MESH服务的设计之道

• Service Mesh在华为云的实践

• 华为云CSE无”微”不至助力文思海辉玩转微服务

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby

Page 29: Service Mesh的思考及在华为云

Thank You.

Website: http://servicecomb.incubator.apache.org/

Gitter: https://gitter.im/ServiceCombUsers/Lobby