50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

场景 | 大型电商企业运营管理数字化解决方案

九科Ninetech

极客时间运维进阶训练营第八周作业

好吃不贵

多名网络主播因恶意炒作被列入警示名单,如何打击这种违规行为

石头IT视角

chatGPT的49种应用场景介绍,各开发语言接入chatGPT参考指南

非喵鱼

Java Python 前端 编程语言 ChatGPT

SQL查找是否"存在",别再count了!

风铃架构日知录

MySQL 后端 Java、 java程序员 sql

架构实战营模块8作业

冷夫冲

架构 构架 「架构实战营」

凭借这份Java面试复盘笔记,我在2022寒冬之际也斩获了多张Offer!

程序员小毕

spring 程序员 后端 架构师 java面试

模块二 -- 朋友圈高性能复杂度分析

陈实

「架构实战营」

ZBC陆续在主要CEX开启Staking,锁定市场大部分流通量成大利好

BlockChain先知

Chrome浏览器竟然可以用ChatGPT了!

Jackpop

专利进阶(一):软件专利工程师浅谈如何针对计算机软件类专利申请进行技术挖掘

No Silver Bullet

专利 12月月更 软件专利工程师 技术挖掘

C++开发,这些GUI库一定不要错过!

Jackpop

选取数据的原则

穿过生命散发芬芳

数据分析 12月月更

架构训练营-第10期-模块2作业

Geek_4db2d5

数据库原理及MySQL应用 | 数据库安全加固

TiAmo

安全 数据库· 12月月更

AngularJS进阶(四十二)ng-options渲染的第一项为空问题分析及解决方案

No Silver Bullet

12月月更 ng-options 页面渲染 上拉加载

ZBC陆续在主要CEX开启Staking成近期利好,锁定市场大部分流通量

西柚子

模块2

KING

云渲染是什么?云渲染和自己渲染有什么区别?

Renderbus瑞云渲染农场

云渲染 渲染农场 云渲染平台

SpringBoot整合Swagger2,再也不用维护接口文档了!

@下一站

12月日更 12月月更 springboot整合 swagger2

相见恨晚!Git这些功能太好用了!

Jackpop

Python开发游戏?也太好用了吧!

Jackpop

2022中国产业数字化发展成熟度区域指数分析——充分利用特长,形成区域比较优势,夯实中国式现代化建设基础

易观分析

数字化 产业

一文了解 Dubbo 的代码架构

Apache Dubbo

Java 开源 源码 微服务 云原生

2022-12-16:给你一个长度为n的数组,并询问q次 每次询问区间[l,r]之间是否存在小于等于k个数的和大于等于x 每条查询返回true或者false。 1 <= n, q <= 10^5 k

福大大架构师每日一题

golang 算法 福大大

ZBC陆续在主要CEX开启Staking,锁定市场大部分流通量成大利好

股市老人

Vue进阶(贰零柒):Webpack 性能优化措施汇总

No Silver Bullet

性能优化 Vue webpack 12月月更

下一个AI舞台,名叫煤矿

脑极体

横空出世!阿里巴巴Spring全家桶实战笔记真香

Java永远的神

spring 源码 架构师 springboot SpringCloud

实战整了一个后台服务,真香!

风铃架构日知录

多线程 线程池 网络 HTTP CGI

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