 深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统深入 Kubernetes 的“无人区” —— 蚂蚁金服双十一的调度系统 曹寅2/19 一、蚂蚁金服的Kubernetes现状 二、双十一Kubernetes实践 三、展望未来迎接挑战 目 录 contents 目录3/19 一、蚂蚁金服的Kubernetes现状 Part 1:4/19 发展历程与落地规模 Part 1:蚂蚁金服的Kubernetes现状 平台研发 灰度验证0 码力 | 19 页 | 2.18 MB | 6 月前3 深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统深入 Kubernetes 的“无人区” —— 蚂蚁金服双十一的调度系统 曹寅2/19 一、蚂蚁金服的Kubernetes现状 二、双十一Kubernetes实践 三、展望未来迎接挑战 目 录 contents 目录3/19 一、蚂蚁金服的Kubernetes现状 Part 1:4/19 发展历程与落地规模 Part 1:蚂蚁金服的Kubernetes现状 平台研发 灰度验证0 码力 | 19 页 | 2.18 MB | 6 月前3
 大规模微服务架构下的Service Mesh探索之路起点:开源 起点:自研 全新打造;或依托现有SDK Fork,增强,扩展,定制,集成 回馈社区,反哺开源 维持版本更新,同步升级 未来肯定会开源 可扩展和可定制化是必备的 可 控 性 社 区 支 持 技术输出 内部落地 如何让开源产品接受我们的改动? 如何让社区和客户认可我们的产品?开源方案选择之第一代Service Mesh Linkerd • 无控制平面 • Scala编写,基于JVM资源消耗大0 码力 | 37 页 | 7.99 MB | 6 月前3 大规模微服务架构下的Service Mesh探索之路起点:开源 起点:自研 全新打造;或依托现有SDK Fork,增强,扩展,定制,集成 回馈社区,反哺开源 维持版本更新,同步升级 未来肯定会开源 可扩展和可定制化是必备的 可 控 性 社 区 支 持 技术输出 内部落地 如何让开源产品接受我们的改动? 如何让社区和客户认可我们的产品?开源方案选择之第一代Service Mesh Linkerd • 无控制平面 • Scala编写,基于JVM资源消耗大0 码力 | 37 页 | 7.99 MB | 6 月前3
 Service Mesh结合容器云平台的思考和实践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对象。里面 ig对象。里面 的BinaryPath在pilot-agent的init方法中被初始化,初始值来自pilot/pkg/model/context.go的 DefaultProxyConfig函数,值是/usr/local/bin/envoy。 2. envoy的启动参数形式为下面的startupArgs,包含一个-c指定的配置文件,还有一些命令行参数。除了下面 代码片段中展示的这些参数,还可以根据0 码力 | 28 页 | 3.09 MB | 6 月前3 Service Mesh结合容器云平台的思考和实践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对象。里面 ig对象。里面 的BinaryPath在pilot-agent的init方法中被初始化,初始值来自pilot/pkg/model/context.go的 DefaultProxyConfig函数,值是/usr/local/bin/envoy。 2. envoy的启动参数形式为下面的startupArgs,包含一个-c指定的配置文件,还有一些命令行参数。除了下面 代码片段中展示的这些参数,还可以根据0 码力 | 28 页 | 3.09 MB | 6 月前3
 Service Mesh 高可用在企业级生产中的实践机器故障 宕机 机房故障 核心交换机故 障、机房停电 容量 服务容量不足 依赖服务 响应超时19/总页数 治理策略 & 高可用 • 微服务高可用 设计手段 服务高可用 服务限流 方法容错 负载均衡+ 实例容错 柔性化/异步化 服务冗余 服务分流 存储高可用 熔断20/总页数 治理策略 & 高可用 • 微服务高可用设计手段 • 限流 • 熔断 • 负载均衡+实例容错 载保护,防止大量请求涌入击垮系统。 • 服务限流其实是指当系统资源不够,不足以应对大量请求,即系统资源与访问量 出现矛盾的时候,我们为了保证有限的资源能够正常服务,因此对系统按照预设 的规则进行流量限制或功能限制的一种方法。 • 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行 限速来保护系统,一旦达到限制速率则可以拒绝服务或进行流量整形。 • 限流无非就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请 黑盒方式 白盒方式 熔断粒度 实例级别 实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持 不支持 fallback 不支持 支持31/总页数 治理策略 & 高可用 • 微服务高可用设计手段:Istio vs Hystrix Istio Hystrix 运作方式 黑盒方式 白盒方式 熔断粒度 实例级别 实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持0 码力 | 38 页 | 1.38 MB | 6 月前3 Service Mesh 高可用在企业级生产中的实践机器故障 宕机 机房故障 核心交换机故 障、机房停电 容量 服务容量不足 依赖服务 响应超时19/总页数 治理策略 & 高可用 • 微服务高可用 设计手段 服务高可用 服务限流 方法容错 负载均衡+ 实例容错 柔性化/异步化 服务冗余 服务分流 存储高可用 熔断20/总页数 治理策略 & 高可用 • 微服务高可用设计手段 • 限流 • 熔断 • 负载均衡+实例容错 载保护,防止大量请求涌入击垮系统。 • 服务限流其实是指当系统资源不够,不足以应对大量请求,即系统资源与访问量 出现矛盾的时候,我们为了保证有限的资源能够正常服务,因此对系统按照预设 的规则进行流量限制或功能限制的一种方法。 • 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行 限速来保护系统,一旦达到限制速率则可以拒绝服务或进行流量整形。 • 限流无非就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请 黑盒方式 白盒方式 熔断粒度 实例级别 实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持 不支持 fallback 不支持 支持31/总页数 治理策略 & 高可用 • 微服务高可用设计手段:Istio vs Hystrix Istio Hystrix 运作方式 黑盒方式 白盒方式 熔断粒度 实例级别 实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持0 码力 | 38 页 | 1.38 MB | 6 月前3
 Service Mesh 微服务架构设计Mesh的框架介绍微服务设计的最佳实践 数据独立存储 保持代码高内聚 低耦合的服务 容器化发布 服务是无状态的微服务如何切分 DDD限界上下文 低耦合的服务设计方法论:DDD战略建模4步搞定微服务的划分保持代码高内聚的方法论:DDD战术建模Service Mesh将会是微服务设计的更好方式Service Mesh的核心价值 实现 业务逻辑 和 非业务逻辑 的分离 Ø 为下沉到基础设施提供可能0 码力 | 36 页 | 26.53 MB | 6 月前3 Service Mesh 微服务架构设计Mesh的框架介绍微服务设计的最佳实践 数据独立存储 保持代码高内聚 低耦合的服务 容器化发布 服务是无状态的微服务如何切分 DDD限界上下文 低耦合的服务设计方法论:DDD战略建模4步搞定微服务的划分保持代码高内聚的方法论:DDD战术建模Service Mesh将会是微服务设计的更好方式Service Mesh的核心价值 实现 业务逻辑 和 非业务逻辑 的分离 Ø 为下沉到基础设施提供可能0 码力 | 36 页 | 26.53 MB | 6 月前3
 SOFAMOSN持续演进路径及实践分享key不支持冒号开头字段的问题 ü 适配envoy的HTTP2配置项 Ø 代码管理 ü fork x/net/http2 代码 ü 新增mosn_http2.go文件,复用原生结构体和方法,暴露mosn框架 所需方法和结构 ü 原则不修改原生文件技术案例 – http2性能优化 Ø 压测环境 p Intel(R) Xeon(R) CPU E5620 @ 2.40GHz p kernel:2.60 码力 | 29 页 | 7.03 MB | 6 月前3 SOFAMOSN持续演进路径及实践分享key不支持冒号开头字段的问题 ü 适配envoy的HTTP2配置项 Ø 代码管理 ü fork x/net/http2 代码 ü 新增mosn_http2.go文件,复用原生结构体和方法,暴露mosn框架 所需方法和结构 ü 原则不修改原生文件技术案例 – http2性能优化 Ø 压测环境 p Intel(R) Xeon(R) CPU E5620 @ 2.40GHz p kernel:2.60 码力 | 29 页 | 7.03 MB | 6 月前3
 Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展vice Mesh是下一代的SDN吗? 通信网络 l 互不兼容的专有设备 l 基于IP的通信缺乏质量保证 l 低效的业务部署和配置 ... 微服务系统 l 互不兼容的代码库 l 不可靠的远程方法调用 l 低效的服务运维 ... 通信网络和微服务系统面临类似的问题:Service Mesh是下一代的SDN吗? Network Layer Look at Solution Layer 7+ 灰度发布应 用 运维 通过Envoy插件和Istio协议扩展来实现?产品化增强-其他 • APP:灰度发布、流量控制,更多的APP待业务场景触发 • IPV6支持增强 • 在Istio中集成方法级的调用跟踪 • 在Istio中集成Kafka调用跟踪上游开源社区参与情况 所有通用的故障修复、性能优化和新特性都提交PR合入了上游社区。包括: • Consul Registry性能和资源占用优化0 码力 | 27 页 | 11.99 MB | 6 月前3 Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展vice Mesh是下一代的SDN吗? 通信网络 l 互不兼容的专有设备 l 基于IP的通信缺乏质量保证 l 低效的业务部署和配置 ... 微服务系统 l 互不兼容的代码库 l 不可靠的远程方法调用 l 低效的服务运维 ... 通信网络和微服务系统面临类似的问题:Service Mesh是下一代的SDN吗? Network Layer Look at Solution Layer 7+ 灰度发布应 用 运维 通过Envoy插件和Istio协议扩展来实现?产品化增强-其他 • APP:灰度发布、流量控制,更多的APP待业务场景触发 • IPV6支持增强 • 在Istio中集成方法级的调用跟踪 • 在Istio中集成Kafka调用跟踪上游开源社区参与情况 所有通用的故障修复、性能优化和新特性都提交PR合入了上游社区。包括: • Consul Registry性能和资源占用优化0 码力 | 27 页 | 11.99 MB | 6 月前3
 SOFAMesh的通用协议扩展Pattern 通过 CRD 扩展新的能力 • …MESH 落地碰到的问题 • 客户端服务发现与负载均衡无法与 ISTIO 一起工作 • ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA0 码力 | 28 页 | 4.73 MB | 6 月前3 SOFAMesh的通用协议扩展Pattern 通过 CRD 扩展新的能力 • …MESH 落地碰到的问题 • 客户端服务发现与负载均衡无法与 ISTIO 一起工作 • ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA0 码力 | 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= 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= 0 码力 | 45 页 | 18.62 MB | 6 月前3 微博Service Mesh实践传输协议 �21 微博Service Mesh实践 - WeiboMesh Header ➢ 消息类型 ➢ 协议版本 ➢ 序列列化协议(body) Metadata ➢ 服务名 ➢ ⽅方法名 ➢ 系统参数及⽤用户参数 Body ➢ response ➢ RequestService Mesh Meetup · BeiJing Simple 序列列化 �22 微博Service0 码力 | 43 页 | 1007.85 KB | 6 月前3 微博Service Mesh实践传输协议 �21 微博Service Mesh实践 - WeiboMesh Header ➢ 消息类型 ➢ 协议版本 ➢ 序列列化协议(body) Metadata ➢ 服务名 ➢ ⽅方法名 ➢ 系统参数及⽤用户参数 Body ➢ response ➢ RequestService Mesh Meetup · BeiJing Simple 序列列化 �22 微博Service0 码力 | 43 页 | 1007.85 KB | 6 月前3
共 11 条
- 1
- 2













