您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[ArchSummit上海2023|全球架构师峰会]:腾讯云日志服务通往云原生时代的破局之道-王国梁 - 发现报告
当前位置:首页/行业研究/报告详情/

腾讯云日志服务通往云原生时代的破局之道-王国梁

AI智能总结
查看更多
腾讯云日志服务通往云原生时代的破局之道-王国梁

腾讯云日志服务通往云原生时代的破局之道 腾讯云王国梁 自我介绍 王国梁·腾讯云CLS •腾讯云CLS研发负责人,腾讯OpenTelemetryOteamPMC,OpenTelemetry社区贡献者、前开源Kubernetes社区成员(kube-scheduler维护者和Reviewer之一)。 •目前负责腾讯云日志服务平台(CLS)核心系统设计及研发。关注日志、监控、链路追踪等可观测性领域。 •曾负责美团虚拟化、容器化调度系统和云原生化的技术改造,主导Kubernetes和云原生应用管理在美团的从0到1的大规模落地。 大纲 •企业视角云原生技术改造和应用现代化的意义 •传统应用架构案例:腾讯云日志服务老旧系统问题分析 •云原生化过程遇到的典型挑战和应对策略 •如何给一架高速运行的“飞机”更换引擎? 腾讯云日志服务介绍 日志服务云原生化的业务背景 •规模大且性能要求高:十万亿级日志量/天、百毫秒级写入延迟、百亿条日志秒级检索 •峰值大且流量突发频繁:高峰GB/秒突发流量写入 •延迟和稳定性要求高:秒级(99.9%3s以内)日志可见、写入可靠性要求高 •功能需求迭代要求高:来自客户需求、产品升级、竞品压力几乎每周都有发布上线,对迭代效率要求高 •质量问题突出:大小故障频发,技术团队不仅要迭代新功能还要一直救火,团队压力大 企业视角来看云原生技术改造的意义 云原生技术的“三个代表” 最先进技术生产力的 发展方向 云原生技术(容器、K8S等)代表了最先进技术生产力,技术成熟并采用广泛 基础设施和技术理念的陈旧会导致无法满足如今的业务需求,并最终成为产品发展的障碍 企业产品竞争力的 发展要求 快速扩张是目前新产品的典型特点,爆款产品都有着突发性,如果不能抓住机会很快会被淘汰 产品的研发、测试、运维、交付效率直接决定了产品的迭代周期,研效的提升决定了是否能够在同质化竞争激烈的场景下“快人一步” 企业降本增效的 技术保障 企业内部独立的资源池、资源buffer导致经常出现严重的“贫富差距”,弹性能力差,不能高效的利用资源,企业运营成本居高不下 企业不同产品之间存在较大的技术栈、架构、重复的“轮子”导致研效和研发成本高 云原生技术改造,几乎成为企业发展的必然选择 服务部署、升级管理依赖人工操作,启动恢复慢 声明式和自动化运维,业务自适应,快速恢复 业务复杂,跨团队、跨部门联合项目多 DevOps自动化、流程化、快速迭代,周期短 流量突发成为常态,逻辑复杂且压力大 C/C++、Shell Java、Go、Python等 业务类型独立单一,多部门协调少 瀑布式迭代,开发构建周期长 用户访问可控,逻辑简单,压力小 传统应用和现代应用 传统应用 现代应用 业务特征 关注复杂度开发模式 流量压力 可靠性、稳定性 上市速度、快速增长 技术架构 基础设施架构设计可伸缩性部署运维 开发语言 服务器为中心,应用程序和底层操作系统之间依赖关系紧密 紧耦合、单体或中心化架构,本地部署,扩展升级复杂 垂直扩展和按峰值需求常备资源 容器驱动,屏蔽操作系统和硬件,可移植基础设施感知,环境高度统一 松耦合,无状态、微服务架构,本地+云化部署,组件可以独立迭代,API调用 水平扩张和按需分配,弹性伸缩 传统架构的特点和挑战: 腾讯云日志服务老旧系统问题分析 功能更 复杂 规模增 长迅速 业务 流量冲 击大 业务迭 代频繁 基础设施混乱 资源浪费成本高 架构 应突发能力差 服务治理难 性能和稳定性差 基础设施混乱 二进制程序系统/运维组件 应用实例 应用实例 实例存活性、负载、进程数等 二进制程序系统/运维组件 配套运维组件、监控、告警、程序版本等 类库、系统配置 用户操作系统 类库、系统配置 宿主操作系统 类库版本、默认系统参数内核版本、系统性能/安全 虚拟机 物理机 本地IDC、云上(多云)、硬件配置(CPU/MEM等)、硬件型号 应用的基础设施依赖如何选择? 业务进程 1 业务进程 N 1号进程(system/init) 业务进程1 业务子进程 业务进程2 1号进程(system/init) 1号进程(system/init) 业务进程1 业务进程2 1号进程(system/init) 1号进程(system/init) 业务进程3 业务进程4 服务器:基础设施为物理机、虚拟机 富容器:类服务器模式,基础设施为容器 Sidecar:轻量级容器,基础设施为容器 -20132013-20192019–至今 有状态应用vs无状态应用 应用本身需要保存状态或会话 应用不需要存储信息 一个请求只能被某个实例处理 任何请求可以在任何请求处理 应用设计复杂,扩展复杂 故障容忍度低,需要迁移或同步数据 应用设计简单,扩展容易 故障容忍度高,直接剔除即可 有状态服务无状态服务 网关服务 有状态服务分区 服务A 无状态应用SQL数据库或NoSQL数据库 服务A DB 数据集中 复制存储 DBDB 适应新基础设施,如何改造应用的配置管理? •为所有配置保留单一可信来源 •使用自动化的方式来执行配置分发和变更 •集中化配置管理和版本控制 •老服务适应新配置 •兼容不同环境的配置管理和使用 如何平滑完成架构升级? •金丝雀模式:从小地域、部分客户开始切换,逐步灰度完成全部流量的切换 •过程:老服务保持不变,新服务切换完成后仍旧保留2周,后续再下线 •风险:风险极小,出现问题可以随时切回 弹性伸缩——我们为什么需要它? 图表标题 9 流量下降资源缩容滞后, 8资源浪费严重 7 6 5 突发流量增长资源扩容不及 周期性流量变化资源按最大预备,资源浪费严重 时,4服务故障 3 2 1 0 类别1类别2类别3类别4类别5类别6 资源使用资源需求业务流量 弹性伸缩最佳实践:三步走策略+两个原则 应突发降成本保稳定 快扩容+慢缩容 为什么需要流量防护和容错? 场景: •疫情期间,某地突发疫情封控/学校改为线上教学/上班改为远程,会议日志量瞬间突增百倍; •618/双十一大促,电商客户业务量猛增,日志量突10倍以上; •广东连续大雨,下班高峰,某出行客户打车量剧增; •下游服务异常引自身服务也异常,且影响时间和范围不可控 应用A 应用B 应用C 应用D 应用E应用F 应用G 应用H 应用I • • • 突增流量导致系统CPU负载过高,无法正常处理请求或导致实例OOM 流量异常导致消息投递过快,消息队列积压 请求过多导致缓存失效,数据库连接数增加 •依赖消息队列异常,消息写入耗时增加或超时 •慢SQL导致数据库负载高,请求导致进一步雪崩 •存储系统异常写入耗时增加,吞吐量下降,日志大量堆积 全链路流量接入和治理 MQ D N。。。 S 客户端业务接入服务内部服务与依赖 •本地缓存 •退避重试 •异常上报 •流量调度 •鉴权准入 •隔离拉黑 •限流限频 •计量计费 •降级兜底 •弹性伸缩 •削峰填谷 •数据迁移 •回溯恢复 •故障降级 从代码到用 户 监控告警 建设业务可观测 性 全面可 观测性 资源 实例 数据聚合 数据库 智能运维 页面 用户MQ任务 业务分析 异常检测 告警升级 根因分析 趋势预测 弹性伸缩 告警收敛 用户点击 行为追踪用户画像 页面加载崩溃异常 停留时长 请求耗时超时失败 。。。 用户视角 指标 业务埋点 健康状态调用链 性能 日志上报接口调用 执行耗时崩溃捕获 。。。 调用链 应用 日志 SQL耗时实例状态 带宽占用 慢查询使用率 系统日志 缓存访问访问耗时 。。。 中间件 行为 事件 统一监控 打破数据孤岛全面掌控应用 智能运维 告警升级、收敛、异常检测、根因分析、智能定位 业务运营 建设业务大盘、用户视角应用质量和健康情况 用户行为聚合 查询语句特征 上卷下钻分析 语法错误检测 查询热点 业务分析 实体监控 链路追踪 用户会话 依赖分析 性能分析 性能分析 监控大盘 接口成功率 请求来源 访问量 接口返回码 流量趋势 建设应用可观测性:不是只是监控告警 网络带宽 集群状态 CPU/MEM/NET使用率 资源水位 系统日志 实例数量容灾巡检 。。。 基础设施 实体 效能提升 赋能数字化效率提升 DevOps实践 腾讯云日志服务的云原生化架构实践 架构目标:围绕云原生技术(容器、K8S、声明式API、弹性伸缩等),建设符合现代应用和数字化业务的发展需求 业务统一入口,支持业务高性能、安全可靠的服务和生态扩展 基于公司一站式的应用部署和管理平台,复用统一资源池、应用生命周期管理以及服务的统一治理和容灾管控、可观测性建设 从“需求-开发-测试-发布-运维”的一站式DevOps平台,支持业务 研效代码仓库 CI/CD 自动化测试 API 微服务应用tRPC 服务总线 路由分发 协议代理 应用管理TKEx 安全管控 应用管理 服务治理弹性伸缩 核心依赖 数据库DB 缓存服务Redis 为应用提供关系型的数据存储能力,应用重要核心数据和业务资产 提供高性能的读写能力,提升业务应对高并发请求的能力 快速敏捷迭代 容器集群 测试集群 应用生命周期管理 创建应用应用扩容 应用配置升级发布 部署应用停止应用 3AZ 应用编排 IDC兼容 容灾降级 消息队列MQ 分布式事务ZK 服务异构解耦,削峰填谷,提升业务吞吐能力 提供分布式的协调能力,提升业务的任务管理和事务管理 注册 高性能的弹性伸缩容器集群,为应用的生命周期管理提供保障 启动应用删除应用可观测 分布式锁ETCD 提供分布式的锁管理和任务管理能力 生产集群 配置管理服务发现与 任务调度与管理 消息发布ETCD 提供广播式的消息发布和订阅能力,协调多个上下游业务 腾讯云日志服务云原生架构收益 图表标题 100% 30 95% 90% 第一阶段:云原生化上量第二阶段:业务改造攻坚 85% 89%27 26 80% 79%24 第三阶段:弹性25伸缩 70% 69%21 2020 60% 50% 40% 30% 1414 10 31% 1314 12 11 1038% 16 1459%50% 41% 38% 18 57% 44% 49% 45% 10.6 48% 11.2 52% 10.1 57% 15 9.710 27% 7.3 7.1 6.9 6.9 20% 10% 6 28% 30% 15% 40%.6 2.3 6.1 6.1 5.2 5 0.1 1% 2.9 3.2 0.5 1.2 1.9 0% 1月2 345 VM核心数 6 容器核心数 7 云原生渗透率 利用率 89 业务规模 1011 0 12月 **数据已脱敏** 腾讯云日志服务云原生架构收益 成本优化 效率提升 运营成本降低 2千万/年 人力成本减少 2HC 核心数减少 10万核/月 发布/扩缩容耗时 90% 弹性伸缩应突发 0介入 资源利用率 40% 客户价值 服务稳定性99.99%以上,适应客户场景PB级突发流量的弹性接入能力 作为平台级云服务,自身的云原生化助力客户数字化升级的需求快速迭代和交付 **数据已脱敏** 如何给一架高速运行的“飞机”更新引擎? •底线:不能因为升级导致故障 •预期:希望升级过程业务无感知 •挑战: •1.业务快速增长,规模季度增长50%以上 •2.需求压力大,大客户和产品需求迭代几乎消耗了80%的人力 •3.故障不断,几乎每月都有大小故障发生,复盘都没时间复盘 •4.并没有资源(人力、时间)专门来做重构和升级 架构演进的道与术 尽快见效 业务技术 成功的转变 风险压力 短期的业务价值 不为优化而优化 正确的妥协 智慧 勇气 目标制定 技术选型 ++= 转变模式 反对+质疑 向上管理 向下推进人力投入 长期的团队收益 方案设计