技术中台在中通的实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1.
2. 技术中台在中通的实践 中通科技-基础平台部-肖文科 2021年05月
3. 自我介绍 肖文科 技术中台负责人 2013年加入中通,近几年主要负责技术中台的建设工作, 包含了公司内部的统一框架、统一接入层、中间件平台、应 用性能监控等。 这里放图片 ZMS(中通消息平台) https://gitee.com/zto_express/zms ZCAT(中通应用性能监控系统) https://gitee.com/zto_express/zcat
4. 01 背景介绍 02 CONTENT 目录>> 实践分享 1、整体介绍 2、实践过程 03 存在问题 1、当前问题 2、原因分析 04 未来规划 1、概览 2、技术选型
5. 背景介绍 介绍中通科技技术中台建设的背景以及当前 实践的具体情况
6. 背景介绍 2013 自研业务系统(.NET+Java) 开始全面由外包业务系统转变为自研业务系统 (.NET为主,Java为辅) 2017 新一代业务系统(Java) 2017年全面替代上一代自研业务系统拥抱微服 务(Java) 当下 研发团队规模 技术团队人员规模超过1000人,覆盖快递业务全场景, 同时提供生态圈(快运、国际、云仓、优选、金融) 业务全方位的研发支持 双十一大考 经历了多年的双11大考,在日处理订单量峰值已超 过2亿+的业务场景下,技术中台已覆盖上游数百 套业务产品线2000+应用高效、稳定的运行
7. 实践分享 从整体上介绍技术中台概貌以及在中通的实 践过程
8. 实践分享-整体介绍 技术中台能力介绍 技术中台能力在从统一框架、统一接入层、应用监控诊断、 配置与治理、中间件平台五个部分组成,涵盖了业务应用从 创建到上线的整个过程 统一框架 主要分为服务端框架Titans、前端框架ZUI、移动框架 LEGO。 统一接入层 接入层,避免重复性劳动,解耦业务和非业务的功能, 让业务更加聚焦,提升整体的系统健壮性和可用性。 应用性能监控 应用上线后,监控、链路跟踪是帮助研发识别问题、 快速止血的有效手段,能够帮助应用在线上健康运行 配置与治理 配置与治理服务于应用生命周期内提供配置的热更新, 服务熔断 、降级、蓝绿、灰度,全链路的压测等能力 中间件平台 基于主流中间件在消息、缓存、调度、搜索等领域不 断探索技术深度,在对应领域提供最佳的解决实践方 案,为研发人员赋能,降本增效
9. 实践分享-统一框架 资源浪费 相同的技术栈重复性的经历预 研、使用、踩坑等多个阶段, 造成人员、设备的浪费 01 02 跨团队协作 跨团队之间的协作,如API调 用、消息投递、权限、加密等 标准问题,无法达成一致,造 成团队之间的协作问题 为什么要 统一框架 项目风险 项目交接、人员变更对项目的 影响太大 产品体系化 04 03 1、对外基于框架输出的产品统一 2、对内研发过程统一
10. 实践分享-统一框架(Titans后端框架) 基础框架 基于SpringBoot之上实现通用的容器来管 理组件/插件的生命周期(注册、启用、 停用、更新),使组件/插件具备自由的 可插拔的能力,同时借助统一配置分发 可做到组件/插件配置热更新 通用组件/插件 组件:框架主动提供的核心能力(微服 务、调度、MQ、分库分表) 插件:框架针对部分能力做了扩展 (APM、治理、全链路压测、健康检查) 研发工具 1、脚 手架 2、代码生成 3、规范、扫描、多环境全局配置
11. 实践分享-统一框架(Lego移动框架) 基础框架 基于Android/IOS分别实现了原生、RN、 H5组件的运行容器及统一路由,便于上 层组件的业务功能实现 业务/技术组件 业务组件:通过路由唤起一个完整的业 务功能的组件(扫描、网络电话、打印) 技术组件:框架本身的增强特性(推送、 配置、升级、热修复) 研发工具 1、组件的创建脚手架 2、发布工具 3、日志、监控等
12. 实践分享-统一框架(ZUI前端框架) UI/SDK库 UI 组 件 库 : 基 于 ZTODesign 定 制 了 ZUI/MZUI的组件样式 SDK组件库:通用的框架功能增强库(监 控、灰度、推送等) 模板 1、工作台模板:基于ZUI的完整后台模 板,可以随意切换多种模式,SSO版/网 关版 2、在线设计器:基于界面拖拉拽生成 json配置即可生成UI界面 研发工具 1、脚手架 2、图标库 3、API代码生成
13. 实践分享-统一接入层(应用场景介绍) 开放平台商户 PC 端用户 手机端用户 提升效率 1、解耦业务与非业务之间差异(协议、 前后端对接流程、多端推送等) 2、统一提供鉴权,限流,熔断等 3、减少定制化开发(聚合、映射) 通知 ZPush (推送) Ingress 提升稳定性 推送 针对新版本服务上线可自定义流量放入 比例,也支持自定义groovy脚本定制化 指定标签特性的用户流量流入新版本, 用户 ZGW (网关) 从而缩小不稳定的风险 ZGW (网关) 排班 提升安全性 降低业务线产品直接向外网开放的风险, 网点 业务域 A 轨迹 组织 架构 班车 与安全团队协作针对网关安全漏洞针对 性测试,及提供定制化的黑白名单、防 刷等特性 业务域 B
14. 实践分享-统一接入层(ZGW网关) 运管平台 统一管理网关的整个生命周期,包含以 下步骤:环境->namespace->api->鉴 权->治理等 同时也承担了运维工作如网关的在创建、 伸缩、监控等 Proxy进程 1、全异步通讯提高性能 2、两大插件体系 执行过滤器实现参数映射、鉴权、灰度、 限流等特性 协议适配器实现了多种后端服务协议 (dubbo/http/mq) 服务聚合进程 支持两种聚合语法,分别是内嵌了 Groovy和GraphQL两大引擎,借助运营 平台API管理模块的在线编写聚合服务, 可以较快的定制一个服务聚合后的新API
15. 实践分享-统一接入层(ZGW网关)
16. 实践分享-统一接入层(ZGW网关)
17. 实践分享-统一接入层(ZPush推送平台) 客户端/渠道 1、全面覆盖多种类型终端统一推送API 2、对接多个厂家渠道保证送达率 推送平台 1、渠道优先级路由 2、按标签拆分批量推送 3、推送指标分析 运管控制台 管理推送应用的完整声明周期:应用申 请->渠道配置->消息/标签/设备管理 同时也支承担了送达率、及时性的监控 告警职责
18. 实践分享-应用监控(背景) 2019 2017 基于内部Titans框架标准化埋点实现, 将上下游链路打通,标准化定义入口流 量类型及出口流量类型 同时搭建ELK补全Log采集的能力 ELK升级为ZLog系统,支持了在线 Agent安装、采集、解析、分析的能力 从而提升了各类型日志采集效率,日志 量从每天不到10T增长到近百T 开源版本CAT定制需求开发 2020 开源版本CAT升级为ZCAT,重新从数 据采集到底层存储再到UI展示完全重新 开发,支持定制化需求。 2016 开源版本CAT内部部署小范围适用,自 由埋点,追踪问题混乱 2021 研
19. 实践分享-应用性能监控(ZCAT) 多客户端SDK 1、基于用户无感知的自动插桩SDK 2、标准上报协议打通前后端链路 3、兼容开源版CAT的协议(新版本采用 PB) 数据收集计算服务 1、收集计算基于无锁环队列做缓冲,采 用多播模式实现Message存储及各类报 表。 2、Message和报表存储都采用近期内 存存储,超过一定时间或者大小后压缩 写磁盘,在允许少量数据丢失前提下保 证磁盘最大化顺序写入 3、数据查询引入SQL引擎,简化报表查 询复杂度 监控门户 1、以全局逐步放大到局部的视角展现应 用全方位信息,降低排障门槛。 2、通过路由规则实现统一门户应对多个 机房应用监控
20. 实践分享-应用性能监控(ZCAT排障之从全局到局部)
21. 实践分享-应用性能监控(ZCAT)
22. 实践分享-应用性能监控(ZLog) ZLog控制台 1、以向导模式将agent->采集->解析- >查询的步骤简化,降低日志分析的难度 2、内嵌Kibana提供日志检索及报表定 制 日志采集Agent 基于七牛Logkit二次开发,支持自定义 日志分隔符及统一控制台下发配置 解析存储 input->kafka多线程poll+本地缓存的机 制提升消费速度 filter->标准日志禁用正则匹配解析来降 低CPU占用 output->ES按分片元信息计算目标节点 写入,提升ES写入吞吐量
23. 实践分享-配置与治理(统一框架的扩展能力集合) 配置中心 微服务平台 移动灰度平台 全链路压测平台 基于开源产品Apollo二次开发,与 微服务平台提供了基于微服务的全 移动灰度平台配置移动框架Lego及 借助Titans框架的插件机制提供直 内部框架深度集成做到配置的动态、 生命周期管理(创建、上线、文档、 H5框架提供了App应用/模块/H5 接在生产环境对应用进行性能压测 各类资源链接动态、各类线上的开 Mock、熔断 、降级、蓝绿、灰度 的管理、热更新、灰度发布、配置 的能力,包含可视化的压测任务管 关、阈值的动态 等)的能力。 下发等能力 理平台、压测数据清洗、数据偏移、 数据隔离、压测指标收集与熔断等 功能。
24. 实践分享-配置与治理(Apollo配置中心之资源授权) 统一管理资源配置 做到资源的配置统一下发、变更,防止 资源配置到处复制带来的资源配置管理 混乱 精准化资源授权 资源授权关联到AppId级别,精准控制 某个资源能被哪些App访问 安全管控 针对资源配置全部加密返回(appId级 别),由框架运行时根据AppId的secret 进行解密,避免资源配置泄露风险
25. 实践分享-配置与治理(ZSM微服务平台) 服务全生命周期管理 从服务的定义->服务的开发->服务的测试 生成API文档 (开发阶段) ->服务的上线->服务的治理的全生命周期 管理,用户都可以在服务平台完成相关 的操作 生成前端代码 (开发阶段) 发布服务网关 (上线阶段) 提升各环节对接效率 统一服务元信息 推行服务开发的最佳实践,标准化服务 服务探测 Maven插件生成 后端API实现类 (开发阶段) 研发流程,统一定义后端服务元数据, 自动对接前端开发及测试,降低人员沟 线上服务治理 (上线阶段) 通成本,提升各环节的开发效率 沉淀服务集市 统一沉淀公司所有服务到服务平台,做 生成测试用例 (测试阶段) 到服务定义明确,随用随取。
26. 实践分享-配置与治理(ZSM服务平台)
27. 实践分享-配置与治理(ZSM服务平台)
28. 实践分享-配置与治理(ZGP灰度平台)
29. 实践分享-配置与治理(ZPT全链路压测) 全链路压测SDK SDK由内核和基于框架的插件两部分组成: 内核:提供通用的压测过程中对请求染色、 链路传递过程中保证标记不丢失的能力 插件:实现了各类数据存储过程中准确的 写入影子资源的能力 压测端 压测端基于Jmeter做为施压工具,通过 本地agent来管理压测工具的启停、压测 任务的下发等功能。 压测运营平台 负责压测机、压测任务、影子资源的管 理,同时也可以基于平台构建压测数据、 出具压测报告、日常的配置等功能
30. 实践分享-配置与治理(ZPT全链路压测)
31. 实践分享-中间件平台(提供了哪些能力) ZMS消息平台 ZSS调度平台 ZMS消息平台是屏蔽底层消息中间件类型,通过唯一标识动态 ZSS统一任务调度平台是一款弹性调度中间件,提供分布式 路由消息,为开发运维人员提供主题、消费组申请与审批、实时 调度、弹性伸缩、支持国际通用的Cron时间表达式、丰富的 监控、自动告警、容灾迁移等功能。 生命周期管理机制、DAG有向无环图任务执行工作流。 ZSearch搜索平台 ZDTP数据同步平台 ZSearch是基于ES集群化的运维管理产品,提供统一的搜索 数据同步平台,旨在为中通内部提供任意数据源到任意数据 Proxy,ES集群生命周期管理(创建,扩缩容,启停,插件, 源的实时、离线数据同步功能,满足各种异构数据源之间的 索引,脚本,定时任务),监控告警等。满足了内部多业务 实时、增量、自定义转换的同步,支撑公司业务的快速发展。 线,多版本,多集群的需求 ZCache缓存平台 ZCache统一的缓存平台提供了统一的缓存的Proxy,缓存的 一键部署、伸缩、配置变更、流控、监控、智能告警;
32. 实践分享-中间件平台(ZMS消息平台) 消息运管平台 从环境->集群->主题/消费的申请、安装、 升级/下线等管理功能到日常的监控、告 警、运维在线迁移等综合一体的运管平 台 ZMS SDK 1、屏蔽差异,统一API 2、集群路由热迁移 3、增强消息 ZMS各类组件服务 1、消息组件(RocketMQ/Kafka) 2、指标数据采集及告警组件 3、消息同步组件
33. 实践分享-中间件平台(ZSearch搜索平台) ZSearch控制台 包括主机池、ES集群、逻辑Index申请、 创建、升级等运维操作以及日常使用的 监控告警等功能 Proxy Proxy提供了标准的ES rest API转发能力, 根据逻辑Index路由到物理集群的能力, 以及提供SQL查询的能力,同时也在写入 场景做了加速优化. 逻辑Index 逻辑Index是面向用户的最小单元,他是 由1个Index模板、0+个Index、外加index 拆分策略如按月/日/周组成,逻辑Index 可以独占一个ES集群,也可以和其它集 群共享。
34. 实践分享-中间件平台(ZCache缓存平台) Group Group是面向用户最小单元,一个Group 由N组Redis Sentinel+其它存储组成,借 助Proxy来做数据分片,其它存储解决大 内部占用需要 Proxy Proxy是一个兼容了Redis协议的代理进程, 主要屏蔽Group内部多节点、多类型缓存 的复杂性,同时借助Proxy层也可以做到 资源层面的控制,如流量控制、客户端 使用的指令控制 ZCache运管平台 运管平台包含了日常环境的创建/删除, Group的申请、审核,Group里面Redis节 点的创建、更新,Proxy的路由及扩容等, 也支持多个Group之间的数据同步,监控 数据的采集告警等日常运维操作。
35. 实践分享-中间件平台(ZSS分布式调度平台) 调度器 调度器主要负责执行器的实例管理,状 态收集,任务的派发,批处理分片, DAG工作流节点触发等功能,所有任务 都由调度器来管理,分配给具体执行器 执行 执行器/SDK 1、任务注册 2、任务执行 3、状态上报 运管平台 包含了多环境的创建、任务元信息的同 步、调度器的伸缩能力等以及任务的编 排、监控、告警等功能
36. 实践分享-中间件平台(ZSS调度平台)
37. 实践分享-中间件平台(ZDTP同步平台) 任意源->任意目标端 基于Flink CDC扩展各类数据源及管理其 Schema , 通 过 简 单 的 SQL 实 现 多 个 Schema之间的数据同步 数据同步需求自助化 通过平台化的方式区分出不同用户的职 责,如运维工程师管理数据源及数据源 对应的数据流向审核权,研发工程师负 责同步任务创建、申请。
38. 实践分享-中间件平台(ZDTP同步平台)
39. 存在问题 描述当前技术中台遇到哪些困难及问题分析
40. 存在的问题 侵入性强、升级成本高 框架SDK侵入业务代码中,边界不够清晰, 同时带来框架升级困难,依赖业务方重 新打包发布 中间件能力碎片化 随着中间件能力的不断迭代,新的特性 必须兼容老的API,造成各种历史包袱, 严重拖慢中间件的演进 安全管控能力弱 针对各类资源操作、服务间调用层面加 上安全策略困难,需要硬编码并升级 SDK/插件。效率低下
41. 未来规划 从整体上来介绍未来的方向及初步的技术选 型
42. 未来规划-ServiceMesh 数据面 不仅仅只是支持微服务层面的数据面, 期望数据面同时承载分库分表能力、搜 索Proxy路由能力、缓存路由能力,并提 供标准的资源原生协议(mysql/redis) 工程化 以产品、应用视角将服务的治理、应用 的配置、所能使用的中间件资源容量、 路由借助控制面统一下发、统一管理, 应用只需与sidercar进行交互,无需关注 中间件资源具体分布及大小
43. 未来规划-技术选型及初步实现 Sidercar扩展 基于MOSN扩展中间件资源代理 1、dubbo协议(自带) 2、redis路由(移植ZCacheProxy) 3、分库分表(移植小米的Gaea) 4、移植ZSearchProxy/ZMS SDK/.... 控制面 1、自研Dubbo注册中心兼容ZK注册信息 同时支持MCP协议 2、实现各类配置推送(治理、安全、自 定义配置、中间件资源配置、路由规则) 3、对接应用运管平台及实现各类数据的 上报及采集
44. QA QA Q 有什么想知道的? What would You like to know? 我想知道... I wank to know... A
45.

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