Service Mesh结合容器云平台的思考和实践• 终端用户认证Istio的核心组件 • Envoy 是一个高性能轻量级代理,它掌控了service的入口流量和出口流量,它提供了很多内置功能,如动态负 载服务发现、负载均衡、TLS终止、HTTP/2 & gRPC流量代理、熔断、健康检查等功能。 • Mixer 翻译过来是混音器,Mixer负责在整个Service Mesh中实施访问控制和使用策略。Mixer是一个可扩展组 件,内部 owner --uid-owner ${uid} -j RETURNPilot-Agent主要功能分析-生产Envoy配置 envoy的配置主要在pilot-agent的init方法与proxy命令处理流程的前半部分生成。其中init方法为pilot-agent二进制的命令行配置大 量的flag与flag默认值,而proxy命令处理流程的前半部分负责将这些flag组装成为envoy的配置ProxyConfig对象。下面分析几个相对重 waitForExit会调用envoy.Run方法启动envoy进程,为此需要获取envoy二进制所在文件系统路径和命令行 参数两部分信息: 1. envoy二进制所在文件系统路径:evony.Run通过proxy.config.BinaryPath变量得知envoy二进制所在的文件 系统位置,proxy就是envoy对象,config就是pilot-agent的main方法在一开始初始化的proxyConfig对象。里面0 码力 | 28 页 | 3.09 MB | 6 月前3
SOFAMOSN持续演进路径及实践分享技术案例能力 0.1.0 0.2.0 0.3.0 0.4.0 Ø TCP代理/7层通用代理 Ø 简单匹配路由 Ø 集群管理 & 基本负载均衡(RR、 RANDOM) Ø SofaRpc及HTTP/1.1、 HTTP/2.0支持 Ø 进程平滑升级 Ø SOFAMesh集成,支持 xDS on ADS Ø X-Protocol协议扩展机制, 以及Dubbo支持 Ø 支持network/stream Retry、DirectResponse、 HTTP Header add/delete、 流控、故障注入等 Ø 支持必要的admin接口性能 0.1.0 0.2.0 0.3.0 0.4.0 Ø 内存复用框架 Ø Slab style buffer Ø Raw-Epoll模式 Ø 读合并 Ø 协程池化 Ø 调度均衡 Ø SOFARPC深度优化 Ø TLS官方库IO优化 Ø HTTP1.1/HTTP2.0 IO优化 断开链接 继续读取数据技术案例 – HTTP/2.0优化 官方HTTP/2.0实现问题: 1. syscall read较多,效率低下 2. 每个stream分配单独的goroutine处理, 调度开销高 3. 临时对象多,GC占比高 4. 基本实现了RFC中MUST部分,部分功 能需求上不匹配,如GRPC trailer实现技术案例 – HTTP/2.0优化 优化思路:适配MOSN框架,复用官方实现核心结构体和解析流程0 码力 | 29 页 | 7.03 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展. 微服务系统 l 互不兼容的代码库 l 不可靠的远程方法调用 l 低效的服务运维 ... 通信网络和微服务系统面临类似的问题:Service Mesh是下一代的SDN吗? Network Layer Look at Solution Layer 7+ Message Body Service Mesh Layer 7 HTTP Header Service Mesh Layer 4 成本 Ø Istio不理解TCP上的应用层协议,其对TCP Service的缺省处理会影响应用层逻 辑 -例子:Envoy的LB算法不能处理应用后端集群的Sharding Ø Istio中和HTTP Service 端口冲突会的TCP Service请求会被Envoy直接丢弃 - 要求对应用进行改造,避免端口冲突 建议 Ø 将TCP纳入Service Mesh管控还不成熟,成本远大于收益 TCP流量 通过IP段或者端口范围区分HTTP和其他TCP流量 - 需要对应用进行改造 l 方案二:在Envoy中 bypass TCP 流量 -不需要对应用进行改造,但Envoy要具备区分TCP和 HTTP流量的能力,需对Envoy进行改造 改造方案: Ø Envoy侧:通过一个自定义的envoy listener filter区分HTTP 和非HTTP的TCP流量 Ø Pilot侧:修0 码力 | 27 页 | 11.99 MB | 6 月前3
Service Mesh 微服务架构设计collaboration and freedom 服务间通过企业服务总线ESB通信 Enterprise Service bus (ESB) 服务间使用轻量级的HTTP/REST通信 lightweight protocols such as HTTP/REST 可能共享数据存储 Share Data 具有独立的数据存储 Data isolation 依赖很多中间件 Middleware component Mesh的框架介绍微服务设计的最佳实践 数据独立存储 保持代码高内聚 低耦合的服务 容器化发布 服务是无状态的微服务如何切分 DDD限界上下文 低耦合的服务设计方法论:DDD战略建模4步搞定微服务的划分保持代码高内聚的方法论:DDD战术建模Service Mesh将会是微服务设计的更好方式Service Mesh的核心价值 实现 业务逻辑 和 非业务逻辑 的分离 Ø 为下沉到基础设施提供可能0 码力 | 36 页 | 26.53 MB | 6 月前3
微博Service Mesh实践全⾯面/灵活可扩展 服务治理理Service Mesh Meetup · BeiJing 跨语⾔言服务化⽅方式对⽐比 �11 微博Service Mesh实践 - WeiboMesh Http代理理 RPC模块 Agent代理理 研发成本 低 ⾼高 中 维护成本 低 ⾼高 中 使⽤用成本 低 低 中 治理理功能 中 ⾼高 ⾼高 扩展能⼒力力 低 中 ⾼高Service Mesh 传输协议 �21 微博Service Mesh实践 - WeiboMesh Header ➢ 消息类型 ➢ 协议版本 ➢ 序列列化协议(body) Metadata ➢ 服务名 ➢ ⽅方法名 ➢ 系统参数及⽤用户参数 Body ➢ response ➢ RequestService Mesh Meetup · BeiJing Simple 序列列化 �22 微博Service �23 微博Service Mesh实践 - WeiboMesh WM ⽬目标机器器 WM 请求机器器 client server motan2/simple provider http/cgi/… motan2/simple pointerService Mesh Meetup · BeiJing Weibo Mesh 控制⾯面 �24 微博Service Mesh实践0 码力 | 43 页 | 1007.85 KB | 6 月前3
蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘性能,成本评估符合蚂蚁实际需求2 构架SOFAMesh 1SOFAMosn 2SOFAMosn内数据流 3NET/IO 4 Ø屏蔽IO处理细节 Ø定义网络链接生命周期,事件机制 Ø定义可编程的网络模型,核心方法,监控指标 Ø定义可扩展的插件机制PROTOCOL 5 Ø定义编解码核心数据结构 üMesh处理三段式:Headers + Data + Trailers Ø定义协议Codec核心接口 ü编 •事件机制 •Metrics 收集 •TCP 代理 •TLS 支持 •TProxy 支持 •平滑 reload •平滑版本升级 多协议 •SOFA RPC •HTTP 1.x (待优化) •HTTP 2 (待优化) •Dubbo (研发中) •HSF (研发中) •On TLS 核心路由 •支持 virtual host 路由 •支持 headers/url/prefix metadata 的 subset 路 由 •支持重试 后端管理 •基础负载均衡算法 •主动健康检查 •Subset 负载策略Highlights 2 ØX-Protocol: 支持 RPC on HTTP2的通用方案(完善中) Ø支持平滑升级中协议无关存量链接迁移 Ø支持指定 / 更新 Downstream / Upstream 协议配置 ØSOFARPC 支持 Upstream 反向请求Istio集成0 码力 | 44 页 | 4.51 MB | 6 月前3
SOFAMesh的通用协议扩展Pattern 通过 CRD 扩展新的能力 • …MESH 落地碰到的问题 • 客户端服务发现与负载均衡无法与 ISTIO 一起工作 • ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 多路复用是基本能力,其他能力需要在多路复用能 力上构建 协议装换能力允许使用 HTTP2 作为 SOFA-MOSN 之 间的通讯协议基于能力分层的插件化扩展框架 性能 接入成本 能力 Open Box Multiplexing, Traffic Splitting Context Based RoutingSOFA MESH • http://github.com/alipay/sofa-mesh • • 月底发布 0.2.0 版本 • 9月份启动在 UC 的落地 • 蚂蚁主站落地Q & A 我是作者名称http://www.servicemesher.com0 码力 | 28 页 | 4.73 MB | 6 月前3
Service Mesh Meetup #3 深圳站go/blob/master/articles/sonarqube-for-golang/2018-07-22-sonarqube-for- golang.mdDrone 和 Jenkins 联调测试方法 本地即可测试 drone 上是否可以调用成功: >docker run --rm \ -e JENKINS_URL=-e JENKINS_USER= http://www.k8smeetup.com/article/N1yW3gPNXgRPC LoadBalancing • gRPC 负载均衡的文档: https://github.com/grpc • 想要让服务支持 Istio,只需要在您的环境中部署一个特殊的 sidecar 代理,使用 Istio 控制平面功能配置和管理代理,拦截微服务之间的 所有网络通信。Istio 的特点 • HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡。 • 通过丰富的路由规则、重试、故障转移和故障注入,可以对流量行 为进行细粒度控制。 • 可插入的策略层和配置 API,支持访问控制、速率限制和配额。 0 码力 | 45 页 | 18.62 MB | 6 月前3
Service Mesh 高可用在企业级生产中的实践机器故障 宕机 机房故障 核心交换机故 障、机房停电 容量 服务容量不足 依赖服务 响应超时19/总页数 治理策略 & 高可用 • 微服务高可用 设计手段 服务高可用 服务限流 方法容错 负载均衡+ 实例容错 柔性化/异步化 服务冗余 服务分流 存储高可用 熔断20/总页数 治理策略 & 高可用 • 微服务高可用设计手段 • 限流 • 熔断 • 负载均衡+实例容错 载保护,防止大量请求涌入击垮系统。 • 服务限流其实是指当系统资源不够,不足以应对大量请求,即系统资源与访问量 出现矛盾的时候,我们为了保证有限的资源能够正常服务,因此对系统按照预设 的规则进行流量限制或功能限制的一种方法。 • 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行 限速来保护系统,一旦达到限制速率则可以拒绝服务或进行流量整形。 • 限流无非就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请 黑盒方式 白盒方式 熔断粒度 实例级别 实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持 不支持 fallback 不支持 支持31/总页数 治理策略 & 高可用 • 微服务高可用设计手段:Istio vs Hystrix Istio Hystrix 运作方式 黑盒方式 白盒方式 熔断粒度 实例级别 实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持0 码力 | 38 页 | 1.38 MB | 6 月前3
进击的 Traefik | 云原生边缘路由器探秘核心概念 3 Traefik With Docker 4 Traefik With KubernetesTraefik 是什么? • 云原生的边缘路由器 • 让部署微服务更加便捷而诞生的现 代 HTTP 反向代理、负载均衡工具 • 它支持多种后台 (Docker, Swarm, Kubernetes, M arathon, Mesos, Consul, Etcd, Z ookeeper, BoltDB ports: - "80:80" # HTTP 端口 - "8080:8080" # Web UI 端口(需要开启 --api.insecure) volumes: - /var/run/docker.sock:/var/run/docker.sock whoami: image: containous/whoami labels: - "traefik.http.routers.whoami https://mycompany.org/jenkins -> http://jenkins:8080/jenkins jenkins: image: jenkins/jenkins:lts environment: - JENKINS_OPTS=--prefix=/jenkins labels: # 因为50000也暴露了,所以声明下端口 - "traefik.http.services.jenkins.LoadBalancer0 码力 | 35 页 | 8.58 MB | 6 月前3
共 24 条
- 1
- 2
- 3













