文字内容
1. 微服务场景化实践 腾讯游戏数据应用微服务实战 张志欢 腾讯游戏_数据应用_负责人
3. content 01 引言 • 微服务概念和历史 • 大数据应用与微服务结合 02 微服务实践 • mock体系 • Devops架构 03 其他关键点优化 • 服务网关优化 • 调用跟踪优化 04 总结
4. 01 引言
5. 1.1 越来越“流行”的微服务 大公司“微服务”布局 国外 国内 Spring Cloud Tars Dubbo Istio ServiceFabric ServiceComb 小团队“微服务”理解 接口服务? 问题: 究竟什么才是微服务? 业务一定用微服务就好吗? 某系统 模块1 系统重组 模块2 Restful api 模块3 模块4 接口1 接口2 接口拆分 接口3
6. 1.2- 架构发展的历史 单体服务架构 集群服务架构 Service SOA服务架构 Service Service Proxy 业务1 业务2 Service 优点: •开发更快捷简单 •调试方便 •部署简单 缺点: • 性能瓶颈 A服务 A服务 A服务 优点: •支持更高并发 带来的问题: •无状态服务 •部署和扩缩容 •负载均衡与容灾 业务 服务A 服务 集群A 业务 服务B 服务 集群B 服 务 业务… ESB 服务总线 单体服务 微服务架构 业务 服务C 服务 集群B 优点: •更好的扩展性 •能力沉淀与更快的 集成能力 带来的问题: •总线开发维护成本 •性能问题 服 务 服 务 服 务 服 务 服 务 优点: • 更好的扩展性 • 开发敏捷与灵活 • 具备SOA架构的优点 带来的问题: • 服务治理 • 服务集成 • 问题跟踪与调试 • 服务运维 • 性能问题,等更多..
7. 1.3 微服务的概念 微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区 块 (Small Building Blocks) 为基础,利用模块化的方式组合出复杂的大型应用程序,各功 能区块使用与语言无关 (Language-Independent/Language agnostic) 的 API 集相互通信。 -----来自于wiki的解释 微服务关键词: 微服务框架标准 核心理念 服务拆分 RPC(跨语言) + 需要解决带来的问题 高效集成部署 海量服务治理 快速问题排查 服务柔性可用 服务测试 服务容量管理 …. 分布式事务 服务注册 服务契约 流量控制 熔断隔离 服务路由 服务通讯 负载均衡 服务监控 服务网关 CI/CD CD CO 日志 链路跟踪 现有技术支撑 Docker技术 分布式事务组件 K8S pipline Consul配置中心 微服务网关Envoy等 微服务开发框架 ….. 如何实践 微服务? 他们解决 了什么样 的问题?
8. 1.4 腾讯游戏数据应用 DataMore 技术 • 大数据 离线计算 价值 • 决策辅助 产品 iData 腾讯游戏数据分析 • 问题定位 • 大数据 实时计算 更具价值的服务 数据报表 多维分析 用户画像 用户包提取 DataMore腾讯游戏数据应用服务
9. 1.5 腾讯游戏数据应用DataMore 一般游戏运营架构 DataMore游戏运营服务架构 运营开发 DataMore数据应用服务 Web 营销应用 App 运营应用 平台 运营应用 方案中心 游戏 新进留存方案 活跃增长方案 付费促进方案 流失挽回方案 … 游戏开发 游戏接口服务 应用中心 客户端 游戏DR 用户关怀系统 实时干预系统 用户任务系统 游戏个人中心 实时排行系统 … 标准化道具接口 游戏DB 营销 能力 服务器 海量游戏日志 游戏服务器 问题与挑战: 运营对研发侧依赖大 运营策略变更依赖版本 实时 计算 能力 数据存储 用户 画像 能力 数据中心 优势: 不依赖版本运营 更复杂数据计算 游戏侧计算能力有限 精细化运营能力 精细化运营能力较弱 更多&更全数据服务 离线 计算 能力 触达 能力
10. 1.6 腾讯游戏数据应用DataMore 增值服务 工程服务 能力 数据分析 运营问题 收集&定位 已有策略 选取&应用 效果分析 迭代优化 用户运营系统 游戏数据功能 创新数据玩法 用户关怀系统 标签系统 社区应用 用户引导系统 任务系统 社交应用 实时干预系统 个人中心 小程序应用 实时计算服务 用户分层 数据分析 用户触达 游戏营销服务 数据挖掘 用户画像 … 微服务化
11. 1.7 微服务化架构 服务直连架构 — Service Mesh 架构 利用内嵌服务的代码框架提供高性能 的服务基础设施 代码零改动,以sidecar代理网络通信的方式满足应用程序多样化需求 — Node B Node A Node B Service A Service B Service A Service B 业务逻辑 业务逻辑 业务逻辑 业务逻辑 Sidecar Sidecar 负载均衡 负载均衡 服务发现 服务发现 流量控制 流量控制 … … Node A Library 无性能损耗 Library 负载均衡 负载均衡 服务发现 服务发现 流量控制 流量控制 … … 多语言版本微服务框架 提供微服务基础功能实现 Service Mesh Control Plane Service Mesh Control Plane
12. 1.8 微服务化 微服务配置中心 服务治理 consul 服务开发 开发 Dori微服务开发框架 业务PaaS Envoy 服务网关 业务PaaS 支撑 服务监控告警 网关 服务 调用跟踪服务 日志服务(离线&实时) 自动化测试服务 接口控制服务(流控,降级等) 服务注册&发现 Envoy 服务网关 业务PaaS Envoy 服务网关
13. 1.9 腾讯游戏数据应用DataMore —服务集成 DataMore是基于腾讯游戏大数据离线&实时计算能力,为业务提供游戏实时运营系统、游戏数据功能模块 (例如任务中心、个人中心)、游戏数据产品等的一站式数据应用解决方案。 增值服务 工程服务 能力 数据分析 运营问题 收集&定位 已有策略 选取&应用 效果分析 迭代优化 用户运营系统 游戏数据功能 创新数据玩法 用户关怀系统 标签系统 社区应用 用户引导系统 任务系统 社交应用 实时干预系统 个人中心 小程序应用 实时计算服务 用户分层 数据分析 用户触达 游戏营销服务 数据挖掘 用户画像 … 服务集成
14. 1.10 设计兼顾通用&个性化的高效架构 传统解决方式 一站式数据应用解决方案 数据应用1 统一网关 业务API 业务API 数据应用2 数据应用3 数据应用4 SaaS 应用组合 业务API 服务编排 开发框架 业务集成中心 DevOps 服务治理 … iPaaS 服务开发 业务 逻辑 业务 逻辑 业务 逻辑 业务 逻辑 问题: 1 平台臃肿,功能错综复杂,变更影响大 2 开发成本高,需要了解这个复杂系统 3 维护成本高,无用代码累计 4 中心化的部署影响性能 业务 微服务 存储资源 业务 微服务 业务 微服务 网络资源 业务 微服务 业务 微服务 计算资源 业务 微服务 其他资源 优点:更小的团队撬动更大的能力,提升创新力 • 能力复用,PaaS服务沉淀同时更加专注 • 一站式开发运营集成服务,开发成本 • 提供通用的服务保障能力,降低运营成本 PaaS IaaS
15. 02 微服务实践
16. 2.1 mock体系引言 01 02 微服务日常问题 开发阶段 • 并行开发问题 • 开发自测问题 测试阶段 • 多分支测试问题 • 故障模拟问题 03 运营阶段 • 容量评估问题 • 服务降级问题
17. 2.2 Mock的应用场景 开发 测试 海量服务依赖下,如何实 现快速开发 让服务调用路由到mock 中,替代原有服务调用 服 务 mock 运营 如何实现更加高效的服务 降级 调 用 压 力 压 力 服 务 服 务 服 务 服 务 服 务 mock 服 务 mock 服 务 服 务 服 务 不 可 用 mock 难点: 如何让mock无需侵入服务代码? 全链路多策略自动化测试? 降级服务配置化? 进阶: 使用何种工具链实现更加高效,完善的结果分析
18. 2.3 腾讯游戏数据应用DataMore 调用跟踪链分析 压测中心 资源管理 数据分析中心 数据录制重放 调用跟踪服务 数据构造 数据引流 l 通过压测中心配合 mock策略实现自动 化无侵入测试&配 置化 数据导入 压力输入与控制 Mock策略共享 storm Mock策略嵌入header中 ES 微服务 微服务 sidecar sidecar 降级配置下发 数据上报 性能分析 服务治理配置中 服务路由表 心 服务注册表 性能分析服务 降级策略 storm 微服务 sidecar 微服务 sidecar durid 实时监控 实时监控服务 grafana prometheus Mock中心 Mock标准化接口 openapi+swagger 数据模拟配置 故障注入配置 Mock构造器 资源管理 Mock降级配置 Mock策 略存储 l Sidecar实现调用跟 踪自动化上传跟踪 链,配合es实现无 侵入调用跟踪 l 使用prometheus实 现实时数据采集计 算监控 降级配置下发 l Mock数据根据网关 请求自动采集结构 与模拟
19. 2.4 Mock的应用场景 单链路测试 1 利用服务间sidecar调用,通过命令启动进行请求录制 2 请求录制回放中心,根据命令启动回放(回放时间段可选择) 3 回放数据导入结合mock策略中心可以制定测试某一个链路 优点: 1 无侵入,自动录制&回放 2可以制定某个服务为起点测试,而无需全链路测试 3 通过mock策略可以屏蔽链路上某些不需要测试的链路 链路测试范围 Mock服务 回放请求 + mock策略 回放请求 + mock策略 模拟 引流 导入 sidecar Mock 策略中 心 压力 中心 sidecar 微服务 微服务 sidecar 微服务 sidecar sidecar 微服务 sidecar sidecar 微服务 sidecar sidecar sidecar sidecar 微服务 sidecar 录制请求数据 回放请求 请求数据录制存储与回放 服务名:服务录制时间:服务请求内容
20. 2.5 Mock的应用场景 测试数据自动化清理 微服务 微服务 微服务开发框架 微服务开发框架 微服务开发框架 业务逻辑 业务逻辑 业务逻辑 Redis SDK Undo日志上报 微服务 协议解析 Side-Car Redis SDK 协议解析 Side-Car envoy envoy Redis SDK 1 提供SDK以及sidecar两种 模式,一种性能较高,另外 一种无侵入 2 自动上报Undo日志并存储 协议解析 3 数据清理中心按照多种规 则实现一键数据清理 Side-Car envoy 测试数据清理中心 时间段清理 存储类型清理 定期清理 自定义规则清理 …
21. 2.6 微服务Devops DevOps是强调产品管理,软件开发和运营专业人员之间沟通和协作的软件开发过程。 DevOps还可以自动化软件集成,测试,部署和基础设施变更过程。DevOps旨在建立一套快 速、频繁、稳定地进行构建,测试,发布软件的文化与环境。
22. 2.7 为什么微服务更加需要devops 1. 微服务让更小的组织发挥更大的创新,让服务面临更 加频繁的迭代 2. 不同团队的开发环境,开发语言各不相同,无法统一 运维环境 3. 互联网快节奏产品下,开发运维界限更加模糊,一个 人可能完成整个开发到上线,需要更低的门槛 4. devops提供更加高效的质量&安全工具,保障微服务 即敏捷又确保质量和安全
23. 2.9 微服务场景下的服务关系 微服务应用 CI/CD场景(以某一个数据应用为例) 特点: 某MOBA限时排行应用 报名服务 排行榜服务 奖励服务 鉴权服务 1. 单个服务职责单一并且结构较为简单 2. 各个服务构建对其他服务的依赖较少 3. 各个服务构建环境各不相同 4. 服务变更频繁 总结: 实时指标服务 排序服务 需要对原来的devops方案进行优化,让 其更加适应微服务场景
24. 2.10 微服务Devops方案 微服务架构,结合Devops编排 Devops原子服务 git服务 CI服务 资源服务 部署服务 扫描服务 更多服务… 调度引擎 Devops编排工具(如Pipline等) Devops模版 Devops模版 Devops模版 服务1 服务2 服务3 服务4 服务5 服务6 服务7 Pipeline方案 度量数据 监控数据 日志服务 报告服务 特点: Devops模块拆分成多种微服务, 使用devops编排工具快速编排 Devops模版,各种服务应用模 版进行Devops操作
25. 2.12 Devops架构 基于微服务的Devops架构 PLAN CI/CD TEST CO CD Pipline 代码 拉取 代码 质量 编译 构建 通知 测试 发布 管理 资源 管理 版本 管理 审批 管理 CI/CD 插件服务 Svn 服务 cove rity 软件 依赖 单元 测试 短信 通知 Git服 务 安全 扫描 编译 环境 性能 测试 微信 通知 … 代码仓库 … … Docker环境 … K8S … 文件系统 服 务 镜 像 doc ker doc ker doc ker doc ker doc ker doc ker 实时 监控 模块 日志 查询 模块 调用 跟踪 模块 Prom etheu s+ grafa na log jaeger influx db 文件 es 日志系统 扩缩 容管 理 K8S
26. 03 其他关键点优化
27. 3.1 运营场景 预期解决方案: sidecar性能优化 1 中间件采用配置化可选编译,所有应用在 使用paas时选择中间件,按需编译 微服务 Consu l 策略 中心 业务应用 Envoy 名字服务 流量控制 2. sidecar策略下发 过多,导致性能下降 2 sidecar策略以业务或者服务进行归类和划 分,对应服务只下发指定策略 3 尝试使用DPDK or ebpf+xdp方案,减少 用户态到内核态数据复制 降级服务 1 中间件过多, 调用跟踪 导致sidecar性能下降… 服务1 服务2 3. 大量请求通过envoy转发 转发效率成为瓶颈 服务3
28. 3.2 运营场景 调用跟踪优化 APP OpenTracing API 调用跟踪控制台 问题: 1 数据量过大带来的服务压力 2 降低调用跟踪开发侵入式 配置下发 服务1 各语言SDK 查询 TGLOG UI展现 队列 Query结果聚合 实时\离线计算引擎 Elasticsearch kafka 1 入口采样 (自适应采样) 服务2 服务3 2 agent上报 (柔性上报,自动上报) agent ES 服务4 开发框架 3 统一开发框架,较 少侵入 (注解编译,跨语言) UI 服务5 服务6 4 错误上报,节约资源 链路跟踪精髓并不止在链路查询,更在于 1 性能分析 2 异常分析 3 路由分析 4 容量校正
29. 欢迎关注msup微信公众账号 个人技术公众号 大数据与微服务应用 关注大会微信公共账号,及时了解大会动态、 日程及每日更新的案例! 关注公众号获得 更多案例实践