Serverless时代下,企业微服务的降本思考与实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1.
2.
3. Serverless时代下,企业微服务 的降本思考与实践 于善游 腾讯云高级研发工程师
4. • Serverless场景带来的新机遇 • 如何让Serverless平台成为微服务架构的最佳底座 • 腾讯云TEM针对企业应用降本增效的优化 • 腾讯云TSE针对大规模微服务的落地实践
5. • Serverless场景带来的新机遇 • • Serverless 发展进程 从 Serverful 到 Serverless • Serverless 和 FaaS 的差异
6. Serverless场景带来的新机遇 – 前云原生时代 • IDC 基础设施时代 • • • 峰谷压力相差巨大(1~2个数量级) 用户体验和成本之间很难平衡 云计算与虚拟化技术时代 • • 重复造轮子 • 质量得不到保障 • 不可移植
7. Serverless场景带来的新机遇 – 云原生时代 • 云原生时代的门槛依然很高 • • Kubernetes易学难精 • 生态庞杂、难以取舍 • 传统应用改造迁移成本巨大 • https://landscape.cncf.io/
8. Serverless场景带来的新机遇 – Serverless的发展历程 • • • • 2008年,Google推出 Google App Engine • 区别于AWS EC2,GAE提 供直接部署代码,按实例付 费的模式,为Serverless早 期探索阶段 2008 2014 • • • 2016年,Google Cloud Function,Azure Function,IBM OpenWhisk 相继发布 • • • • FaaS 形态的Serverless产品 开始百花齐放 2016 2014年,AWS Lambda发 布,提出 FaaS 的概念, Serverless进入元年 同年,Kubernetes诞生 2017 • • • • 2019年,基于 Kubernetes 的 Knative 诞生 • 以应用为中心的Serverless 产品进入了新的形态 2019 2017年,腾讯云发布SCF, 阿里云发布FC 国内云厂商接连发力 FaaS 类产品 2020 • • • Serverless 类产品 百花齐放 2021 2020年,腾讯云发布 TEM/TSE
9. • Serverless场景带来的新机遇 – 从 Serverful 到 Serverless Serverful Serverless 从 Serverful 到 Serverless 让应用开发更专注于业务本身 是云原生时代的演化趋势 • https://blogs.vmware.com/vov/2018/08/07/how-technology-powers-our-cloud-native-development- environment/
10. • Serverless场景带来的新机遇 – Serverless = FaaS ? Serverless屏蔽底层资源,进行更高层次的抽象 这对用户意味着 • • • 不必关心系统管理和基础计算/存储/网络等资源,运维负担能力更小 不必关心应用的容量和自动化伸缩,弹性伸缩能力更强 不必关心代码的部署,流水线更自动化 但同时,我们也需要思考以下问题 • • • 我们真的能做到函数级别的业务开发么? 微服务体系下的业务,可以完整的迁移到函数平台上么?改造成本如何? 资源的封装是否意味着灵活性的下降? Serverless != FaaS 面向应用的Serverless,能使微服务体系在Serverless平台价值最大化
11. • Serverless平台如何成为微服务架构的最佳底座 • • 企业架构演进 企业微服务新形态 • 微服务 + Serverless 释放能效
12. • Serverless平台如何成为微服务架构的最佳底座 - 企业架构演进 单体架构 微服务架构 SOA架构 应用层 • • 应用孤立,按烟囱式排列,唯一的共通 点在于都与底层的数据库相连; 架构中的应用数量较少,应用与应用 之 间的交互关系简单 PaaS层 资源层 • • 服务调用者与服务提供者通过企业 服务总 线相连接; ESB成为瓶颈: 无论在性能上还是成 本消 耗上,ESB都会导致瓶颈出现; • • 业务系统的扩展没有瓶颈,只需按 照业务发 展需要进行扩展; 敏捷,迭代速度快速; DevOps 部 署全自动化 发布管理、应用生命周期管理、可观测性等 第一阶段 IDC 基础设施 第三阶段 容器部署和弹性伸缩 第二阶段 云计算与虚拟化技术 第四阶段 Serverless解放运维
13. • Serverless平台如何成为微服务架构的最佳底座 – 企业架构演进 需求爆炸式增长,快速迭代,弹性扩缩的业务场景,对IT架构提出新的挑战 微服务架构 1、微服务架构,代码层演化 日日可发布 微服务 应用层 实时可扩缩 微服务 微服务 2、devops 流水线 故障可回滚 • DevOps: CI, CD, 全自动化 • 可扩展性:自动弹性伸缩 • 高可用:升级、扩容不中断业务 平滑过渡 3、容器Serverless,资源层演化  资源层 第一阶段 IDC 基础设施 第三阶段 容器部署和弹性伸缩   第二阶段 云计算与虚拟化技术 第四阶段 Serverless解放运维  资源浪费 资源冗余 资源利用率低 资源不足 资源运维成本高 容量预估、资源购买流程繁琐 故障发现、故障处理、自愈难 云原生学习曲线陡峭 资源成本浪费 服务质量下降 运维成本高
14. • Serverless平台如何成为微服务架构的最佳底座 – 企业微服务新形态 第一代微服务技术: 侵入式微服务框架 • 优点 : • 去中心化,引入注册中心,服务间的 通讯及容错机制模块化,非功能性能 力下沉 • 缺点 : • 框架适用范围、语言有限,对业务存 在侵入性,框架的维护成本高、升级 困难,框架提供的治理能力有限
15. • Serverless平台如何成为微服务架构的最佳底座 – 企业微服务新形态 第二代微服务技术: Sidecar Proxy 模式的服务网格 • 优点 : • 屏蔽分布式系统通信的复杂性(负载均 衡、服务发现、认证授权、监控追 踪、流量控制等等),服务只用关注业 务逻辑; 异构语言,统一服务治理体 系,标准化; 对应用透明,Service Mesh组件可以单独升级; • 缺点 : • 一定程度上的性能损耗,引入Service Mesh服务实例的运维和管理问题
16. • Serverless平台如何成为微服务架构的最佳底座 – 企业微服务新形态 第三代微服务技术: 内核态的服务网格 • 优点 : • 不需要Sidecar,直接在套接字和网络 接口处拦截数据包,请求路径缩短, 性能更优 • 缺点 : • 实现复杂,技术较新,未经过大规模 生产验证
17. • Serverless平台如何成为微服务架构的最佳底座 – 微服务 + Serverless • 存量应用和新应用,多种服务类型 混合部署 • Serverless PaaS平台接管各种类型 的应用 • 平台按指标进行极致弹性,Pay as you go • 多地域、多可用区部署,提供高可 用 • 平台提供自动化的全栈可观测性接 入,实时监控和告警 • 服务注册中心云端托管,服务治理 规则自动下发,服务就近接入 • 提供云端边缘网关服务,与用户更 贴近 • Infra层全托管,零运维
18. • 腾讯云TEM针对企业应用降本增效的优化 • • DevOps 镜像构建加速与应用启动加速 • 发布管理 • 极致弹性 可观测性 •
19. • 腾讯云TEM针对企业应用降本增效的优化 - DevOps • DevOps是一种循环往复的软件开发 方法,通过:计划-编码-构建-测试 -部署-监控-反馈-计划 的方式,形 成闭环 • 持续集成(CI)/持续部署(CD)的 流水线使开发部署的流程标准化 • 自动化的 GitOps 模式解放了人力成 本 • 云上集成部署的方式也节省了机器成 本 • 多环境部署与环境自动流转解决了部 署中的权责分离问题,更安全
20. • 腾讯云TEM针对企业应用降本增效的优化 - DevOps • TEM提供简单易用的Coding插 件,提供部署能力和发布控制能 力,结合Coding流水线实现 DevOps的价值 • TEM也提供Intellij IDEA插件直接 部署,帮助开发者节省部署和调 试的成本
21. • 腾讯云TEM针对企业应用降本增效的优化 – 构建加速 传统的Docker build有哪些问题? • 只改变Dockerfile中的一行,就会使之后的所有行的缓存失效 • 多阶段并行构建效率不佳 • • 无法提供编译历史缓存 镜像push和pull的过程中存在压缩和解压的固有耗时
22. 腾讯云TEM针对企业应用降本增效的优化 – 构建加速 • • • • • • • 构建 : 稳定性 基于 Dockerfile(兼容性) Build效率 Push效率 可维护性 • • • • • • TEM构建 Buildkit Cache Effective Daemonless & rootless UnCompressed *eStargz
23. 腾讯云TEM针对企业应用降本增效的优化 – 应用加速 • • • • • • Java应用冷启动加速 Appcds 使用`-XX:DumpLoadedClassList`参数来获取我们希望在应用程序实例之间共享的类 使用`-Xshare:dump`参数将类存储到适合内存映射的存档(.jsa文件)中 使用`-Xshare:on`参数在启动时将存档附加到每个应用程序实例 Spring boot应用需要使用maven shade plugin改造
24. • • • • • 腾讯云TEM针对企业应用降本增效的优化 – 应用加速 使用TEM可以直接加速,无需任何改造 TEM会自动解析jar包,对Springboot嵌套jar包结构进行解析和改造 自动将AppCds的归档文件构建成一个Image layer 使用AppClassloader加载 归档文件,实现加速
25. • 腾讯云TEM针对企业应用降本增效的优化 – 发布管理 一趟安全发布应该具备哪些关键能力? 灰度验证 发布管理 一键回滚 • • • TEM分批次部署 基于OpenKruise CloneSet • • 更加确定可控的部署能力 • 支持指定删除 • 支持灰度发布 • 为何要加一层Operator? • CloneSet不支持多个批次 • CloneSet不支持自定义删除策略(pod-deletion-cost) • CloneSet原地升级是先缩后扩的语义 • 需要支持多种批次确认策略
26. 腾讯云TEM针对企业应用降本增效的优化 – 发布管理 • • 第一版有什么问题? • • 每个用户集群都需要运行 UpgradeStrategy operator 组件,提高了用户的计算资源成本 如何即提供分批部署能力,又不增加用户的费 用成本?
27. • 腾讯云TEM针对企业应用降本增效的优化 – 发布管理
28. • 腾讯云TEM针对企业应用降本增效的优化 – 极致弹性 • 弹性策略 • • 弹性触发:定时弹性,基于资源的弹性,基于业务指标的弹性,基于事件的弹性。 弹性作用维度:HPA (Horizontal Pod Autoscale,水平弹性伸缩),VPA (Vertical Pod Autoscale,垂直 弹性伸缩) • 弹性实现 • 原生HPA CRON 定时弹性 KEDA • • KEDA 将 K8s Core Metrics Pipeline 和 Monitoring Pipeline 处 理流程统一化,并内置多种 scaler ,提供开箱即用的弹性策略 支持
29. • • 腾讯云TEM针对企业应用降本增效的优化 – 极致弹性 TEM弹性
30. • • 腾讯云TEM针对企业应用降本增效的优化 – 可观测性 Logging、Tracing、Metrics 日志能够携带完整的上下文信息,能提供最为完备的原始信息,方便后续进行信息的二次加工,但是缺点是数据的传输 以及存储开销巨大。 • 请求轨迹信息能够从单个请求的角度描述系统的拓扑,如果对每个请求都进行记录,开销依然非常大。 • 指标数据能够提供更加抽象的统计信息,开销相对固定,方便监控以及告警。 • • TEM可观测性 • TEM能够联接云上各个产品,提供应用维度的可观测性能力,真正做到博取各家所长。
31. • 腾讯云TSE针对大规模微服务的落地实践 • • 云原生时代的微服务治理挑战 TSE的落地实践 • 真实客户案例
32. • 腾讯云TSE针对大规模微服务的落地实践 – 云原生时代的微服务治理挑战 • • • 微服务框架多样化 微服务语言多样化 云原生场景的挑战
33. • • • 腾讯云TSE针对大规模微服务的落地实践 北极星( PolarisMesh ) 覆盖腾讯90%以上的业务
34. • • 腾讯云TSE针对大规模微服务的落地实践 北极星解决了分布式和微服务架构中的服务发现和治理问题,提供了服务注册、健康检查、服务发现、服 务路由、负载均衡、服务降级、服务熔断、服务限流等功能
35. • 腾讯云TSE针对大规模微服务的落地实践 • 北极星支持多语言SDK、Mesh、HTTP和DNS接入 • 多语言SDK: 提供Java、Go、C++、Lua、Nodejs、Python语言的客户端SDK,实现相同语义的服务发现和治理功能 Spring Cloud: 提供spring-cloud-starters-polaris集成北极星Java客户端SDK,帮助Spring Cloud用户无缝接入 tRPC/gRPC: 提供grpc-语言-polaris集成北极星对应语言的客户端SDK,帮助gRPC用户无缝接入 Mesh: 北极星服务端支持xds协议,支持将服务和治理规则数据转换为xds格式,支持envoy接入,和SDK、框架互通 HTTP: 北极星服务端支持HTTP协议,用户可以直接调用HTTP接口进行服务注册发现 DNS: 提供dns agent,支持通过DNS的方式访问注册到北极星的服务 • • • • •
36. • 腾讯云TSE针对大规模微服务的落地实践 • 流量调度: 微信支付实现跨地域的就近访问和容灾切换 • 北极星的服务实例具有位置属性,支持应用实现就近访问和容灾切换,如下图所示 • 客户端的服务发现模块:从控制面获取目标服务的全量实例(包含位置属性) • 客户端的服务路由模块:根据路由规则和服务实例的位置属性实现就近访问和容灾切换 • 默认路由规则:先在同城市访问,如果同城市没有可用的服务实例,再依次扩大到同地域和全部范围
37. • 腾讯云TSE针对大规模微服务的落地实践 • 央视频: 实现跨K8s集群、跨云的服务发现和治理 • 央视频是中央广播电视总台基于5G+4K/8K+AI等新技术推出的综合性视听新媒体旗舰平台。腾讯云和腾讯视频是央视频 项 目的重要合作方,提供了覆盖客户端、前台、中台和底座的数十个应用系统。央视频于2019年11月20日上线,作为主 流媒 体与广大用户的连接者、主流价值的传播者,更好地推动主流价值实现创造性转化和创新性发展。 • 用户场景: • 对内路由,公有云/专有云内部直通访 问 • 对外路由,外网访问公有云,公有云与 专有云互访 • 问题: • k8s service不支持跨集群直通 • 存量非容器化应用没法创建k8s service • 解决: • 全局服务注册中心,解决服务发现问题 • 多种路由策略,解决集群隔离以及互访 的问题 • 兼容多种接入模式,解决新增与存量互 访问题
38.
39.
40.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-23 16:00
浙ICP备14020137号-1 $Map of visitor$