AS深圳2018 《弹性计算平台无服务器化实践》 陈杰

2020-02-27 58浏览

  • 1.弹性计算平台无服务器化实践 陈杰 腾讯-架构平台部-研发Leader
  • 2.
  • 3.
  • 4.陈杰 腾讯-研发Leader • 中科院计算所毕业11年 • 加入腾讯架构平台部7年 • 现负责内部虚拟化/弹性计算/云函数研发 • 致力于提升数据中心资源利用效率
  • 5.• 为什么要做Serverless • 基于容器平台怎么实现serverless • 应用案例、经验教训及未来展望
  • 6.闲置资源难以避免,弃 or 用? 非均衡利用闲置 99% 非在线时段闲置 非高效流转闲置 10% 鸡肋 金矿 易影响正常业务 差异大、变化快、 难用好 巨大的收益 12% 1% 8%
  • 7.基于容器能实现闲置资源“可用” • 规模:百万CPU核 • 业务:亿级的视频转码,图 片压缩,AI计算等 • 关键技术:在线离线混部, 资源快速上下架 AI计算 视频转码 图片压缩 弹性计算平台 大数据 新入库待交付 机房待裁撤 老旧待退役 现网挖掘复用 CPU资源池 训练型 推理型 GPU资源池 推理型 编解码型 FPGA资源池
  • 8.但距离“好用”依然有很多挑战 业务接入门 槛较高 利用率不受 控制 资源碎片无 处可用 业务质量难 以监控
  • 9.我们需要从资源服务进化到计算服务 物理机托管 上架/下架物理机 预先付费购买 NaaS 云主机 申请/退还虚拟机 按时租用 IaaS 容器 启动/停止/扩容 容器 按时租用 PaaS ? 上传/执行/删除 业务代码 按需计费 ? 解放生产力,降低运营成本
  • 10.Serverless是什么? Serverless意指无需关心服务器 控制力 接入速度 启动速度 • 无需关心资源调度 • 按照实际使用计费 • 通用可自定义计算 SaaS Serverless BaaS FaaS PaaS Serveraware IaaS 通用性 定制能力 存活时间
  • 11.Serverless可以是解决当前问题的答案 业务接入门 槛较高 无须关心资源 多样易变性 利用率不受 控制 利用率可由平 台合理设置参 数控制 资源碎片无 处可用 计算切成更小 粒度,填充碎 片资源 业务质量难 以监控 调用过程及运 行时环境可控
  • 12.• 为什么我们要做Serverless • 基于容器平台怎么实现serverless • 应用案例、经验教训及未来展望
  • 13.基于容器平台实现Serverless要做什么 • 托管函数的代码管理,配置管理 • 掌控函数每一次请求的调用流程 • 提供多编程语言的标准运行环境 • 提供与其它云计算产品对接接口 调用触发器 函数调用 函数管理 容器平台 k8s或其它 函数运行环 境 Docker
  • 14.Serverless的6个关键设计 高易用 高稳定 低成本 快启动 高安全 快迭代
  • 15.实现高易用需让业务做更少的事情 • 开发:为用户实现业务逻辑外的一切 • 运维:免除用户运维新平台额外成本 • 应用:让用户的代码能自动触发调用 Serverless or 微服务平台? 业务函数代码 运行时环境 功能调用/网络接入 负载均衡/扩缩容/容灾 部署/监控/升级 …
  • 16.实现高稳定性需关注异步调用及重试 云API invoker function 云API 异步 invoker mq 同步 function 云API 异步 invoker mq 同步 function 失败 mq 云API 重试? invoker mq 重试? mq function 热升级? 热更新?
  • 17.实现低成本需要避免资源闲置 防误用 无效计算检测 防闲置 动态,0 按需分配 按需计费 防过量申请 仅指定内存
  • 18.实现快启动需更多预处理及并行化 函数调用 资源申请 资源缓存 invoker 本地cache 中心cache 实时申请 第 镜像下载 预下载 一 预下载的前提是镜像标准化 次 调 代码分发 并行分发 代码并行下载至母机,再挂载至容器内 用 容器启动 单进程 减少容器启动项,运行时环境编译成大二进制文件 函数初始化 预初始化 网络监听及日志等预先在容器外初始化 参数传递 函数执行 减少内存拷贝 大参数传递使用共享内存,避免内存拷贝 … 结果返回
  • 19.实现高安全需设计更严密的沙箱 防护内容 保护方式 可用资源 文件系统 系统调用 docker/cgroup 只有/tmp/可写,容 量受限 非特权容器,额外限 制网络监听等 通过OS/内核限制用户沙箱的破坏力 管理环境 调用代理 日志代理 函数实例 Docker Host 通过代理隔离管理环境和用户执行环境
  • 20.实现快迭代需提炼更多公共能力 Python Php Node.js Go Java … C Core 提炼公共功能,减少多语言在平台层 面差异性 函数实例 bootstrap Docker Python user code Host 运行时环境与代码目录mount至docker容器, 而非打包进镜像
  • 21.Serverless关键设计汇总 高易用 仅需实现业务逻辑,无须关心非 功能开发,免运维,可自动调用 高稳定 关注异步调用,谨慎设计重试 低成本 资源可缩减至0,控制过量申请 快启动 分步利用缓存或并行来优化 高安全 快迭代 内核级别精细控制,分离管理环境 与函数执行环境 提炼公共运行时环境来支持多 语言,依赖库用mount的方式 而非打成镜像
  • 22.• 为什么我们要做Serverless • 基于容器平台怎么实现serverless • 应用案例、经验教训及未来展望
  • 23.Serverless在AI特征提取的应用案例 Func HDF5 HDF5 Func HDF5 Func HDF5 COS 训练集群 Func HDF5 Func HDF5 Func HDF5 HDF5
  • 24.构建Serverless平台的经验教训 教训 1. 深入了解对接的云组件才能避免意外 2. 平台自身的自动化运维能力很重要 1. 在线系统提早做好平滑升级设计 2. 多提炼公共部分方可高效迭代 经验
  • 25.Serverless当前并不能适配所有场景 适用场景 不适用场景 无状态微服务 负载起伏明显 对延时不敏感 有状态服务 持续高负载 延时敏感型
  • 26.Serverless未来可期 DZV ODPEGD JRRJOHFORXG IXQFWLRQV D]XUH IXQFWLRQV ᚸᦔԯ ᴨ᯾ԯ ԯ‫ڍ‬හ ‫ڍ‬හᦇᓒ      RSHQZKLVN RSHQODPEGD LURQIXQFWLRQV ƉVVLRQ RSHQIDDV NXEHOHVV • 公有云的serverless平台前程远大 • 开源社区Serverless平台蓬勃发展 • IOT边缘计算可能快速成为主战场
  • 27.资源调度的最高境界可能是Serverless
  • 28.
  • 29.
  • 30.
  • 31.