写点什么

自定义跟踪架构: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:009362

评论

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

从Deepl说起,聊一聊未来的“安全职业”

孤岛旭日

程序员 AI 职业

SQL 生成斐波那契数列

zero

sql 斐波那契 MySQ

linux文件系统-inode学习整理

戈坞昂

Linux inode

谁能让你安稳

Neco.W

工作 稳定性 努力工作

生活就是这么讽刺,有时候你嘲笑他,有时候你想成为他......

代码诗人

中年危机 文艺 短片小说

「Postman教程 」功能介绍-1

Megatron7

测试 Postman

程序员的晚餐 | 5 月 19 日 蒜香鸡腿,味道令人惊讶

清远

美食

我的读书笔记-樊登读书法

lmymirror

学习 读书笔记 方法论 读书方式

看得懂的区块链及智能合约概念

石君

区块链 智能合约

部门最漂亮的妹子离职了

Geek_6rptuk

团队管理 生涯规划 企业文化 职场

「Postman教程 」接口测试-2

Megatron7

测试 Postman

Oracle 数据恢复一例

wong

oracle windows dbf

中小型城市商业银行数字化转型实践(三)数据中台建设思路和路径

泡菜小仙

数据中台 数字化转型 数据架构

奇怪知识点系列:Office 365 CDN 揭秘

手艺人杨柳

Office 365 Microsoft 365 SharePoint Online

2020年5月19日 Java并发编程专题

瑞克与莫迪

Java

MyBatis支持的jdbcType 枚举类型

Kevin Liao

如何设计一款“高可用高性能”的发号器?

捉虫大师

Java 高可用 发号器 高性能 raft

关于键盘的一些事

BabyKing

vim 缓存 键盘 快捷键 karabiner

回“疫”录(21):你这样做的样子真丑

小天同学

疫情 心理 回忆录 现实纪录 纪实

看完这篇 HTTPS,和面试官扯皮就没问题了

苹果看辽宁体育

https

比特币是新生事物吗?

Haiyung

比特币

实现一个比LongAdder更高性能的计数器有多难?

捉虫大师

Java jdk LongAdder

中小型城市商业银行数字化转型实践(一)整体技术架构转型(双态IT)

泡菜小仙

数字化转型 架构设计 技术架构

中小型城市商业银行数字化转型实践(二)集成关系ESB APIGateway ServiceMesh

泡菜小仙

架构设计 集成架构 ESB

在Gitlab-ce的Docker中使用自定义端口

天飞

Docker gitlab

520 我用算法帮女朋友的闺蜜选男友

cherubines

Python 算法 数据分析 蒙特卡洛 最优解

Kubernetes时代的云容器平台:各家云产品模式逐渐丰富

韩超

腾讯云 阿里云 Kubernetes IaaS PaaS

你的c++团队还在禁用异常处理吗?

泰伦卢

c c++ C#

MacOS 下使用VSCode进行GoLang Test报错

北纬32°

macos vscode Unit Test debug Go 语言

《零基础学 Java》 FAQ 之 9-Java里的各种数据类型占用多少内存空间

臧萌

Java

Android | Tangram动态页面之路(四)vlayout原理

哈利迪

android

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