亚马逊|前后端、多语言、跨云部署,全链路追踪到底有多难?( 二 )
【亚马逊|前后端、多语言、跨云部署,全链路追踪到底有多难?】2、前后云(多)端联动
目前开源的链路追踪实现主要集中于后端业务应用层 , 在用户终端和云端组件(如云数据库)侧缺乏有效的埋点手段 。 主要原因是后两者通常由云服务商或三方厂商提供服务 , 依赖于厂商对于开源的兼容适配性是否友好 。 而业务方很难直接介入开发 。
上述情况的直接影响是前端页面响应慢 , 很难直接定位到后端哪个应用或服务导致的 , 无法明确给出确定性的根因 。 同理 , 云端组件的异常也难以直接与业务应用异常划等号 , 特别是多个应用共享同一个数据库实例等场景下 , 需要更加迂回的手段进行验证 , 排查效率十分低下 。
为了解决此类问题 , 首先需要云服务商更好的支持开源链路标准 , 添加核心方法埋点 , 并支持开源协议栈透传与数据回流(如阿里云 ARMS 前端监控支持 Jaeger 协议透传与方法栈追踪) 。
其次 , 由于不同系统可能因为归属等问题 , 无法完成全链路协议栈统一 , 为了实现多端联动 , 需要由 Trace 系统提供异构协议栈的打通方案 。
异构协议栈打通
为了实现异构协议栈(Jaeger、SkyWalking、Zipkin)的打通 , Trace 系统需要支持两项能力:一是协议栈转换与动态配置 , 比如前端向下透传了 Jaeger 协议 , 新接入的下游外部系统使用的则是 ZipKin B3 协议 。 在两者之间的 Node.js 应用可以接收 Jaeger 协议并向下透传 ZipKin 协议 , 保证全链路标记透传完整性 。 二是服务端数据格式转换 , 可以将上报的不同数据格式转换成统一格式进行存储 , 或者在查询侧进行兼容 。 前者维护成本相对较小 , 后者兼容性成本更高 , 但相对更灵活 。
3、跨云数据融合
很多大型企业 , 出于稳定性或数据安全等因素考虑 , 选择了多云部署 , 比如国内系统部署在阿里云 , 海外系统部署在 AWS 云 , 涉及企业内部敏感数据的系统部署在自建机房等 。 多云部署已经成为了一种典型的云上部署架构 , 但是不同环境的网络隔离 , 以及基础设施的差异性 , 也为运维人员带来了巨大的挑战 。
由于云环境间仅能通过公网通信 , 为了实现多云部署架构下的链路完整性 , 可以采用链路数据跨云上报、跨云查询等方式 。 无论哪种方式 , 目标都是实现多云数据统一可见 , 通过完整链路数据快速定位或分析问题 。
跨云上报
链路数据跨云上报的实现难度相对较低 , 便于维护管理 , 是目前云厂商采用的主流做法 , 比如阿里云 ARMS 就是通过跨云数据上报实现的多云数据融合 。
跨云上报的优点是部署成本低 , 一套服务端便于维护;缺点是跨云传输会占用公网带宽 , 公网流量费用和稳定性是重要限制条件 。 跨云上报比较适合一主多从架构 , 绝大部分节点部署在一个云环境内 , 其他云/自建机房仅占少量业务流量 , 比如某企业 toC 业务部署在阿x云 , 企业内部应用部署在自建机房 , 就比较适合跨云上报的方式 , 如下图所示 。
跨云查询
跨云查询是指原始链路数据保存在当前云网络内 , 将一次用户查询分别下发 , 再将查询结果聚合进行统一处理 , 减少公网传输成本 。
跨云查询的优点就是跨网传输数据量小 , 特别是链路数据的实际查询量通常不到原始数据量的万分之一 , 可以极大地节省公网带宽 。 缺点是需要部署多个数据处理终端 , 不支持分位数、全局 TopN 等复杂计算 。 比较适合多主架构 , 简单的链路拼接、max/min/avg 统计都可以支持 。
跨云查询实现有两种模式 , 一种是在云网络内部搭建一套集中式的数据处理终端 , 并通过内网专线打通用户网络 , 可以同时处理多个用户的数据;另一种是为每个用户单独搭建一套 VPC 内的数据处理终端 。 前者维护成本低 , 容量弹性更大;后者数据隔离性更好 。
- 5G|关于5G,华为赢了
- 封顶|雄安新区:城市计算(超算云)中心提前完成主体结构封顶
- 迈克尔·杰克逊 45 度前倾是怎么做到的?
- 封顶|雄安新区:城市计算(超算云)中心提前完成主体结构封顶
- GitHub|目前最值得入手的三款鸿蒙手机,全部都在降价,最后一款仅1239元
- 玉兔二号发现的“神秘小屋”前不久|玉兔二号拍到的月球背面的房子到底是什么,终于揭晓了
- 支付宝集五福活动 1 月 19 日正式开始,现可提前领福
- 腾讯|前腾讯员工爆料:鹅厂的末位淘汰制让人心理崩溃!
- |为什么以前在飞机上不能开手机,而现在可以了?
- 快来领取随日本亿万富翁进行月球旅行的免费入场券!仅限前8人