Slack系統架構簡介 - jinlow
Slack 是最著名的工作平臺和團隊訊息傳遞應用程式之一。它使分佈在不同地點的團隊之間的溝通更加容易。目前,它已幫助全球超過 70 萬家公司改善了溝通。
Slack=聊天群+65個工具整合(SMS、Google Drives、Twitter、Trello、Asana、Github、Dropbox、Salesforce、Zendesk等)+檔案整合+統一搜尋。
Slack = 所有對話和知識的可搜尋歷史記錄
替代產品:
- Discord
- Google Hangouts
- Mattermost
- Rocket.Chat
- Basecamp
- Microsoft Teams
- Guilded
- Corteza Messaging
- Additor.io
- Lark
- DingTalk
- Notion
- Trello
功能要求
- 支援命名通道
- 會員可以建立自己的頻道
- 允許人們在管理員批准的情況下將公告發布到受限頻道
- 向使用者傳送通知
- 傳送檔案、影像和影片
- 即使使用者離線也向其他使用者傳送訊息
- 支援群聊
- 按時間順序排列訊息
- 加入/離開群組
- 新增/刪除使用者(不是那麼重要)
- 直接訊息傳遞
- 打字時的打字指示器
- 瞭解使用者狀態(線上或離線)
- 允許透過 WiFi/資料通話
- 允許我們刪除訊息
- 支援“提醒我”功能
- 可以將訊息、檔案、影片等儲存到已儲存的專案中
- 可以在一個執行緒中回覆
- 可以將訊息分享到其他社交媒體平臺
- 允許我們複製訊息
- 允許我們複製連結
- 允許我們將其固定到頻道
- 允許我們刪除訊息
- 允許我們新增註釋
- 允許我們在釋出後編輯訊息
- 提供表情符號
- 與其他應用程式(Twitter、Google Drive、Dropbox 等)整合或安裝多達 10 個第三方或自定義應用程式
- 支援“提及”服務
- 只能檢視和搜尋最近的 10k 條訊息
- 檔案儲存高達 5GB
- 使用者可以無限傳送訊息
- 支援帶關鍵字的搜尋欄位
非功能性要求
- 低延遲
- 高可靠性
- 安全
- 資料持久化
- 快取一致性
- 持續的
系統元件
客戶端 = Web、移動、桌面
訊息伺服器——監聽來自後端伺服器的更新,並向所有客戶端傳送事件
WebApp 後端 = 業務邏輯
資料庫 = 儲存層
使用者資料
- 儲存有關使用者的個人資料資訊,例如狀態、個人資料圖片、個人資料 ID、電子郵件、使用者名稱、密碼等
- 檢索有關使用者的詳細資訊。
對映
- 對於建立的每個頻道,都會建立 channel_Id。channel_Id 將對映到組中的所有使用者。然後伺服器為組的成員建立一個新程式(一個執行緒)。伺服器將找出這些接收者的名稱,然後從資料庫中取出資料並找出這些使用者的程式 id (pid),從而保證訊息可以傳遞給使用者。
- 此外,還將考慮來自公共渠道、私人渠道、直接訊息和群組直接訊息的對話型別。不同型別的對話將具有不同級別的可見性和釋出許可權,這在傳送訊息機制中很重要。
- 負載均衡器將用於處理訊息負載過多的佇列,並確保向不同的使用者傳送任何訊息都不會失敗。
- WebSocket 協議 用於訊息伺服器,因為連線不會立即關閉,而是對所有活動使用者開放。但是,Web 套接字處理程式無法跟蹤所有使用者,它只跟蹤活動使用者。處理程式將找出組列表中剩餘的使用者,並在網路恢復後將訊息傳遞給剩餘的使用者。
訊息伺服器
- 它是系統中所有訊息的儲存庫。
- 它將找出訊息的型別。一旦訊息服務檢測到訊息的格式為媒體,它將被儲存在媒體資料庫中。然後將這些媒體的連結儲存在 SQL DB 中,並對映到使用者詳細資訊。
- 當使用者想要將訊息匯出或在 slack 上共享訊息到外部系統時,它會找出 messageId。
高階系統架構
技術棧
- Web 客戶端:帶有 ReactJS 的 Javascript 和 ES6
- 桌面應用程式:電子
- Android 應用程式: Java 和 Kotlin
- IOS 應用程式: Objective C 和 swift
- 後端: PHP & Hacklang
- 資料儲存: MySQL
- 快取: Memcached
- 搜尋和排名:SolrCloud、Java 服務
- 實時訊息: WebSockets
- 負載均衡器: HAProxy & Consul
- 語音和視訊通話服務: Elixir
- 非同步任務佇列系統: Kafka & Redis
- 資料倉儲: Presto、Spark、Airflow、Hadoop 和 Kafka
- 伺服器管理: Terraform、Chef 和 Kubernetes
- 雲和網路服務:亞馬遜
- 網路伺服器:阿帕奇
- 資產管理:品牌資料夾
- Javascript 編譯:通天塔
- 監控錯誤: Bugsnag
相關文章
- 【Android系統】Android系統架構簡介Android架構
- Android初級之路-Android系統架構簡介Android架構
- Pixhawk系統架構介紹架構
- RAG系統架構介紹架構
- 軟體架構簡介架構
- Android 圖形架構簡介Android架構
- 四種JavaEE架構簡介Java架構
- Redux技術架構簡介(一)Redux架構
- spring cloud架構整合-springcloud簡介SpringCloud架構GC
- TiDB簡介與整體架構TiDB架構
- 《Kettle構建Hadoop ETL系統實踐》簡介Hadoop
- WebServiceCXF與Restful架構風格簡介WebREST架構
- 人工智慧中代理架構簡介人工智慧架構
- 資料湖架構及概念簡介架構
- 一. SpringCloud簡介與微服務架構SpringGCCloud微服務架構
- Tomcat系統架構Tomcat架構
- 根檔案系統簡介與BusyBox構建根檔案系統
- 大資料分類和架構簡介大資料架構
- springcloud微服務分散式雲架構簡介SpringGCCloud微服務分散式架構
- 微服務架構的特徵簡要介紹微服務架構特徵
- Scrapy架構及資料流圖簡介架構
- Spring Cloud系列(一):微服務架構簡介SpringCloud微服務架構
- SAP Commerce Cloud 裡的 Solr 架構簡介CloudSolr架構
- 資料庫 Mysql 邏輯架構簡介資料庫MySql架構
- HDFS架構指南(分散式系統Hadoop的檔案系統架構)架構分散式Hadoop
- IOS的系統架構iOS架構
- Android系統架構圖Android架構
- Android-系統架構Android架構
- FACEBOOK 的系統架構架構
- 廣告系統架構架構
- 系統架構演變架構
- 安卓系統架構安卓架構
- Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介Java架構SpringCloud微服務分散式
- springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- Hive簡介、應用場景及架構原理Hive架構
- 微服務架構:自動擴充套件簡介微服務架構套件
- 十大常用軟體架構模式簡介架構模式
- 簡單介紹架構設計的原則!架構