AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

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

  • 2023-05-12
    北京
  • 本文字数:1056 字

    阅读完需:约 3 分钟

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

Slack 最近公布了它们是如何实现在全球范围内每天发送数百万条实时消息的。该公司提供了对其Pub/Sub架构的全面讲解,这个架构的设计目标就是管理大规模的实时消息。它强调了在不同时区和地区发送实时消息的独特挑战,以及 Slack 的工程师如何设计基础设施来处理这些挑战的。


Slack 的高级软件工程师Sameera Thangudu阐述了这种架构的重要性:

我们的服务器要为每台主机上的数千万个通道以及数千万个连接的客户端提供服务,我们的系统要在 500 毫秒内将消息传递到世界各地。凭借当前架构的线性可扩展性,我们可以为更多客户提供服务。


她表示,该公司会加强其架构,以服务更多的客户群。


该系统的后端由多个服务组成。通道服务器(Channel Server,CS)是有状态的内存服务器,持有通道的历史。这里会有一个一致性散列机制将每个 CS 映射到通道的一个子集中。在峰值时期,每个主机大约为 1600 万个通道提供服务。一致性哈希环管理器(consistent hash ring manager,CHARM)会管理 CS 的一致性哈希环,确保在 20 秒内替换掉不健康的 CS。Consul 会存储一致性哈希值的最新配置。



图片来源:https://slack.engineering/real-time-messaging/


网关服务器(Gateway Server,GS),与 CS 类似,是有状态的内存服务器。它们维护用户信息和 WebSocket 通道订阅,并作为 Slack 客户端和 CS 之间的接口。GS 会被部署到多个地理区域,以优化连接速度。管理服务器(Admin Server,AS)是无状态的内存服务器,它们是 Webapp 后端和 CS 之间的接口。最后,状态服务器(Presence Server,PS)会跟踪在线用户,支撑 Slack 客户端的绿色状态点(green presence dot)。


每个 Slack 客户端有一个到 Slack 服务器的持久性 WebSocket 连接,以接收实时事件来维护其状态。客户端需要通过几个步骤来搭建 WebSocket 连接,比如从 Webapp 后端获取用户令牌和 WebSocket 连接的设置信息。然后,客户端会初始化一个 WebSocket 连接到最近的边缘区域,GS 获取用户信息并向客户端发送第一条消息。Envoy会平衡传入的流量并处理 TLS 终止。



客户端设置完成后,在通道中发送的每条消息都会广播至通道中所有在线的客户端。消息在发送至全球范围的每个订阅的 GS 之前,要经过 Webapp API、AS 和 CS。每个收到消息的 GS 都会将消息发送至订阅该通道 ID 的客户端。



除了聊天消息,实时改变客户端状态的另一种消息类型是事件。瞬时事件,比如用户在通道中进行输入,会遵循一个略有差异的流程,因为数据库不会持久化保存这些事件。下图说明了这个流程。



原文链接:

Real-Time Messaging Architecture at Slack


相关阅读:

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

Zoom和Slack的第二曲线

2023-05-12 10:374229

评论

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

MySQL8.0.32的安装与配置

Java你猿哥

Java MySQL ssm Java工程师

校企共建|阿里云与西安电子科技大学人才培养交流会顺利举行

云布道师

校企合作

构建系列之webpack窥探上

江湖修行

前端 Web webpack cli 构建

聊聊「低代码」的实践之路

Java 架构 低代码

请查收!一份2023年程序员不得不看的自救提升指南(彩色终极版)

Java你猿哥

Java 面试 JVM 面经

电信及互联网行业数据安全内控审计建设实践 | 盾见

极盾科技

数据安全

分布式存储技术(上):HDFS 与 Ceph的架构原理、特性、优缺点解析

星环科技

hdfs 分布式存储 Ceph

Python面试题

袁袁袁袁满

三周年连更

Databend Parser 快速入门

Databend

关于聚合根,领域事件的那点事---深入浅出理解DDD | 京东云技术团队

京东科技开发者

DDD 企业号 4 月 PK 榜 聚合根 领域事件

企业号 5 月 PK 榜,火热开启!

InfoQ写作社区官方

热门活动 企业号 5 月 PK 榜

大语言模型的本质:会思考的狗、聪明的马和随机鹦鹉

FN0

AIGC 大语言模型

用友iuap 让企业数智化能力深入、让业务价值浅出

用友BIP

用友 用友iuap 用友技术大会 数智底座

统一、飞鹤等快消龙头企业,如何抓住未来10年数智化的机遇?

用友BIP

用友iuap 用友技术大会 快消行业

如何在微服务下保证事务的一致性 | 京东云技术团队

京东科技开发者

架构 微服务 事务 一致性 企业号 4 月 PK 榜

硬核!阿里P8耗时6月打造的架构师速成手册,颠覆你对架构师的认知

Java你猿哥

架构 分布式 ssm 软件架构 架构师

如何创造数据资产价值?如何对内赋能业务运营,对外创造市场价值?

星环科技

数据资产 数据要素流通

戴尔科技园动力计划,携手中南高科赋能中小企业数字化转型

科技热闻

Matlab实现蚂蚁群算法

Shine

三周年征文

15个值得收藏的数据可视化开源工具

2D3D前端可视化开发

数据可视化 数据可视化工具 前端数据可视化 数据可视化设计 数据可视化软件

字节二面:HashMap线程不安全体现在哪里?

Java你猿哥

Java 线程 ssm 架构师 HashMap底层原理

浅谈测试用例设计 | 京东云技术团队

京东科技开发者

测试 测试用例 测试用例设计 企业号 4 月 PK 榜

华为ISDP数字化现场作业,如何助力电力行业安监风险管控?

YG科技

电力行业信息化年会 华为解读“低碳、安全、发展”新思路

YG科技

分布式技术剖析

星环科技

分布式

分布式存储技术(下):宽表存储与全文搜索引擎的架构原理、特性、优缺点解析

星环科技

分布式 全文搜索

第十七届工程建设行业信息化发展大会成功举办,华为工单宝表现亮眼

YG科技

【专栏 03】数据仓库、数据集市、数据湖,你的企业更适合哪种数据管理架构?

星环科技

数据架构

企业如何两步实现数据资产化?

星环科技

数据资产化

企业数据平台建设的基石:构建统一的数据存算能力

星环科技

存算能力

SQL数据库管理:RazorSQL 激活版

真大的脸盆

Mac 数据库管理工具 Mac 软件 数据库软件

Slack实时消息处理架构,更新、更快、更稳定_架构_Eran Stiller_InfoQ精选文章