写点什么

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

评论

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

熟练使用SSH客户端常用工具SecureCRT

xiezhr

Linux SSH securecrt SSH工具

代码审查:从 ArrayList 说线程安全

mzlogin

Java 代码审查

资深大牛带你了解源码!面试题解析已整理成文档,已拿offer

欢喜学安卓

android 程序员 面试 移动开发

寻找被遗忘的勇气(十三)

Changing Lin

3月日更

美团工作7年,精华全在这份学习笔记里了,已成功帮助多位朋友拿到5个大厂Offer

Java架构之路

Java 程序员 架构 面试 编程语言

竞价实例一小时亏损21万

jinjin

阿里云 抢占式实例 竞价实例 spot

2021年金三银四全新版互联网大厂Java面试题,分类65份PDF,累计2340页

Java 架构 面试

Day01:VBA和Python入门

披头

办公自动化 IT蜗壳教学 数据科学探究

5年Java开发,面试4大厂(阿里、拼多多、字节、美团)后,我总结出大厂高频面试真题及解析

Java架构之路

Java 程序员 架构 面试 编程语言

滚雪球学 Python 之怎么玩转时间和日期库

梦想橡皮擦

28天写作 3月日更

使用Hadoop相关框架进行网站流量日志分析

五分钟学大数据

大数据 hadoop 28天写作 3月日更

浅谈数仓、数仓模型分层

白贺BaiHe

大数据 解决方案 通用设计模型 数仓

资深大牛带你了解源码!最详细的docker中安装并配置redis,实战解析

欢喜学安卓

android 程序员 面试 移动开发

net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data.

wjchenge

阿里Java岗个人面经分享(技术三面+技术HR面):Java基础+Spring+JVM+并发编程+算法+缓存

Java架构之路

Java 程序员 架构 面试 编程语言

基于SparkMLlib智能课堂教学评价系统-相关研究及文献分析(二)

大数据技术指南

大数据 智能时代 28天写作 3月日更

BI币掌柜量化自动交易机器人开发

#区块链#

2021字节面经最新整理: 面试真经/思维导图/学习笔记!火遍全网

比伯

Java 编程 架构 面试 计算机

太简单了!看完这篇还能不会SpringCloud+Nginx高并发?

Java架构追梦

Java nginx 架构 面试 SpringCloud

如何实现可靠UDP传输

赖猫

计算机网络 udp TCP/IP

沟通视窗:改善人际沟通

石云升

28天写作 职场经验 管理经验 3月日更 沟通模型

去年,蚂蚁一面的一道笔试题,中等难度

yes

面试

为什么在做微服务设计的时候需要DDD?

xcbeyond

微服务 DDD 3月日更

量化合约跟单交易系统开发软件

#区块链#

马特量化炒币机器人APP系统开发详情介绍

#区块链#

对话微众和红枣:预言机是区块链提供可信数据的基础设施

CECBC

区块链

谈产品和创业方向

Ryan Zheng

创业 产品

说说RPC架构

Kylin

读书笔记 3月日更 日常积累 RPC架构

种春草肥禾,织数字天下

脑极体

币BI掌柜量化交易策略APP开发(系统案例)

如何在子线程中使用Toast显示消息

Geek_416be1

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