《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

自定义跟踪架构:Slack 高效解决通知问题

作者:Rafal Gancarz

  • 2023-08-07
    北京
  • 本文字数:1122 字

    阅读完需:约 4 分钟

自定义跟踪架构:Slack高效解决通知问题

Slack利用其自定义的跟踪架构来协助排查通知发送问题。该跟踪架构的帮助下,他们解决通知问题的速度提高了 30%,而且减少了将问题升级给开发团队的次数。该架构还简化了分析管道,并为数据科学团队解锁了新的应用场景。

 

消息通知是 Slack 用户体验的关键组成部分。然而,由于通知流横跨 Slack 平台的许多组件,包括服务器端和客户端,所以要对客户体验团队收到的问题进行排查,有时候并不容易。开发团队经常不得不花费好几天的时间,查看多个具有不同日志记录后端、不同日志记录格式的系统。



图片来源:https://slack.engineering/tracing-notifications/

 

之前,Slack 创建了一个自定义的SlackTrace跟踪架构,并使用它来跟踪日常的消息传递。他们用它跟踪了 1%的客户端请求。接下来,该公司决定构建自己的跟踪解决方案,因为他们发现,没有一个现成的第三方解决方案能完全满足他们的需求。

 

为了跟踪消息通知,团队识别出值得注意的事件并确定了属性映射,从而实现流和跟踪的映射。他们决定将通知跟踪与消息请求跟踪分开。这样,他们就可以支持通知流的 100%采样,从而满足 Slack 客户体验团队的要求。

 

通知跟踪改进了问题归类和调试。客户体验团队的成员自己就可以使用跟踪数据来了解出错的位置,不需要求助开发团队就可以解答客户的疑问。这个新功能也为 iOS 和 Android 工程师开始使用Grafana来监控移动应用程序中的通知发送提供了帮助。最后,数据科学团队从跟踪数据中获得了洞察。他们通过漏斗分析来加深对通知打开率的理解,并利用历史通知跟踪数据来识别应用程序中的 Bug 和工具代码。

 

Slack 高级软件工程师Suman Karumuri将跟踪的好处总结如下:

将产品分析数据建模为跟踪,可以在整个复杂的技术栈中以一致的数据格式提供高质量的数据。此外,内置的跟踪数据会话化免除了额外对跟踪数据进行去重和会话化的任务,简化了分析管道。

 

SlackTrace 架构由一个 Go Web 服务器应用程序和一个 Go 消费者服务组成,前者负责向Apache Kafka发布跟踪 span 事件,后者负责将事件持久化到实时存储(ElasticSearch)和数据仓库中。后端服务使用ZipkinJaeger工具库来报告 span 事件,并转换为内部 span 表示,而桌面和移动应用程序可以直接使用 span API。



图片来源:https://slack.engineering/tracing-at-slack-thinking-in-causal-graphs/

 

Slack 选用了一种比较简单的 span 表示,这使得他们的解决方案更加灵活,不用紧紧围绕请求和网络跟踪来开展。Span 的结构简单,数据可以存储在单个表中,并且支持多种查询选项,工程师可以从中提取他们需要的数据来回答特定的问题。

 

原文链接:

https://www.infoq.com/news/2023/06/slack-notification-tracing/


相关阅读:

Slack实时消息处理架构,更新、更快、更稳定

Slack工程师如何解决最常见的移动开发痛点

2023-08-07 08:009490

评论

发布
暂无评论
发现更多内容

如何在通义灵码里使用 MCP 能力?

阿里巴巴云原生

阿里云 云原生 通义灵码 MCP

如何在通义灵码里使用 MCP 能力?

阿里云云效

阿里云 通义灵码 MCP

集成指南:如何基于融云 Flutter IMKit 实现双端丝滑社交体验

融云 RongCloud

React-native脚手架探索

溪抱鱼

typescript html React

按钮导航组件 | 纯血鸿蒙组件库AUI

华哥的全栈次元舱

鸿蒙开发 纯血鸿蒙 ArkUI / eTS 鸿蒙组件库AUI AI极客

YashanDB 知识库|主备切换怎么做?一主一备 & 一主两备完整操作指引

数据库砖家

数据库

图形化编程行业的技术演进与生态重构

代码制造者

低代码 低代码平台

飞桨x昇腾生态适配方案:05_算子适配流程

小顺637

飞桨 昇腾

【浪潮海岳inDatax数据中台专栏】海岳inDataX“易宝特”流程自动化平台建设与实践

inBuilder低代码平台

【免费开源】积木报表MongoDB数据集使用实战

JEECG低代码

mongodb 数据可视化 报表 报表工具

CodeBuddy + MCP 实现一个炫酷的贪吃蛇

悟空聊架构

人工智能 AI 代码助手 MCP CodeBuddy首席试玩官

飞桨x昇腾生态适配方案:02_常用环境变量

小顺637

飞桨 昇腾

微服务架构原理与开发实战!

程序员高级码农

程序员 微服务 架构师

YashanDB 知识库|GBK 库插入生僻字乱码?别忽视编码转换这一环

数据库砖家

数据库

遭遇DDoS攻击为什么不能反击回去?

网络安全服务

CDN 服务器 DDoS 带宽 高防IP

YashanDB 知识库|内存参数这么多,Share Pool 怎么配才不会报错?

数据库砖家

数据库

飞桨x昇腾生态适配方案:00_整体方案介绍

小顺637

飞桨 昇腾

2025年PM产品力领航者大会 | 上海巅峰论道

新消费日报

【免费开源】积木报表文件数据集使用实战

JEECG低代码

数据可视化 报表 报表工具

【免费开源】积木报表ElasticSearch数据集使用实战

JEECG低代码

elasticsearch 数据可视化 报表 报表工具

CodeBuddy Craft,我的编程搭子

悟空聊架构

CodeBuddy 接入 MCP,一键生成网站!

悟空聊架构

人工智能 编程 AI 代码助手 CodeBuddy首席试玩官

一分钟用 MCP 上线一个 2048 小游戏(CodeBuddy版)

悟空聊架构

人工智能 编程 AI 代码助手 CodeBuddy首席试玩官

YashanDB 知识库|删除用户组后 yasql 免密登录失效?问题可能出在这儿

数据库砖家

数据库

YashanDB 知识库|IMP 跨网络导入太慢?一文看懂原因与优化建议

数据库砖家

数据库

CodeBuddy 助力小程序开发,搓了一款面试刷题小程序

悟空聊架构

小程序 人工智能 AI 代码助手 CodeBuddy首席试玩官

飞桨x昇腾生态适配方案:01_基础环境准备

小顺637

飞桨 昇腾

飞桨x昇腾生态适配方案:03_模型训练迁移

小顺637

飞桨 昇腾

十年一诺:一张SPN获奖证书背后的技术征途

脑极体

通信

YashanDB 知识库|insert 写入乱码字符,CPU 占满、线程卡死?你可能踩到了 lex 死循环的坑

数据库砖家

数据库

飞桨x昇腾生态适配方案:04_模型精度对齐

小顺637

飞桨 昇腾

自定义跟踪架构:Slack高效解决通知问题_业务架构_InfoQ精选文章