Slack使用開源元件構建自動驅動Kafka叢集
Slack工程師介紹了他們如何構建和操作 Kafka 叢集以大規模執行。
Slack 將 Kafka 廣泛用於他們的作業佇列和移動關鍵任務資料(分析、日誌記錄、計費資料等)
這篇博文介紹了 Slack 如何(以及為什麼)使用 Chef 和 Terraform 自動化管理 Kafka 叢集的操作方面。
Kafka 在 Slack 中用作釋出-訂閱系統,在最重要的Job Queue中發揮著重要作用,這是我們的非同步作業執行框架,幾乎涉及使用者在 Slack 上執行的每一個操作(例如展開通道中的連結、傳送通知、通知機器人、更新搜尋索引和執行安全檢查)。此外,Kafka 充當神經系統,用於跨 Slack 移動關鍵任務資料,為我們的日誌記錄管道、跟蹤資料、計費管道、企業分析和安全分析資料提供動力。
什麼是自驅動 Kafka 叢集?
Kafka 是一款出色的軟體,可在 Slack 的數百個節點上執行。但是,如果您曾經嘗試過部署或管理 Kafka,您就會知道這並非易事。我們經常因為緩慢的,有時是當機的代理或容量管理問題而被尋呼。
自動化 Kafka 操作的目標是消除日常管理 Kafka 的操作開銷。
為此,我們為 Kafka 叢集確定了一些常見的操作任務,包括:
- 例行的 Kafka 管理操作,例如建立主題、更改分割槽計數和將分割槽重新分配給代理
- 容量規劃操作,例如向叢集新增/刪除代理
- 更換代理或部署新版本軟體等運營問題
- 診斷 Kafka 叢集中問題的隨叫隨到的負擔
- 客戶支援解釋 Kafka 消費者是否跟上
因此,當我們遷移到新版本的 Kafka 叢集時,我們決定將其操作方面自動化,或者使其成為自助服務。
我們的 Kafka 設定由以下元件組成:
構建、釋出、配置和部署:Chef 和 Terraform
使用 Cruise Control、Kafka Manager、Chef 和 Terraform 等開源元件大規模執行自我修復的 Kafka 叢集。此外,使用標準 SRE 原則和適當的工具(如 Kafka Manager 和 Kafka offset exporter),可以使 Kafka 變得可靠、自助服務和自動運作。
可以在此處找到我們的 Kafka 配置。
展望未來,Kafka 將在 Slack 中扮演更重要的角色,因為它是新的變更資料捕獲 (CDC) 專案的一部分。新的 CDC 功能將支援 Slack 許可權服務的快取需求,該服務用於授權 Slack 中的操作,還將實現對我們的資料倉儲的近實時更新。為此,我們在 Slack 組建了一個新的資料流團隊來處理所有當前和未來的 Kafka 用例。新的資料流團隊將維護和支援 Slack 的所有 Kafka 叢集。該團隊還將負責構建與 Kafka 相關的標準化庫和工具,並將致力於進一步改進當前的 Kafka 操作和效率。
點選標題見原文
相關文章
- 使用開源元件構建自動運維Kafka叢集 - Slack元件運維Kafka
- redis5.* 手動構建叢集Redis
- 雅虎開源的Kafka叢集管理器(Kafka Manager)Kafka
- oracle 11gR2 grid 叢集資源設定跟隨叢集自動啟動Oracle
- Apache Kafka – 叢集架構ApacheKafka架構
- kafkaer:基於模板的 Kafka 主題/叢集/ACL 管理自動化Kafka
- Zookeeper叢集 + Kafka叢集Kafka
- 使用 TDD 測試驅動開發來構建 Laravel REST APILaravelRESTAPI
- redis 叢集構建Redis
- Oracle叢集技術 | 叢集的自啟動系列(一)Oracle
- 【Kafka】Kafka叢集搭建Kafka
- 1款開源工具,實現自動化升級K3S叢集!開源工具
- 使用docker-compose構建elasticsearch叢集DockerElasticsearch
- zookeeper叢集及kafka叢集搭建Kafka
- 使用Hudson搭建自動構建伺服器伺服器
- 使用Gulp構建前端自動化解決方案前端
- 使用ChatGPT自動構建知識圖譜ChatGPT
- Kafka叢集配置Kafka
- kafka叢集搭建Kafka
- Gradle自動實現Android元件化模組構建GradleAndroid元件化
- Mac 使用 docker 搭建 kafka 叢集 + Zookeeper + kafka-managerMacDockerKafka
- 使用chrome瀏覽器驅動自動開啟瀏覽器Chrome瀏覽器
- 總結下 ui 自動化驅動架構UI架構
- 事件驅動架構EDA中的元件事件架構元件
- 「移動開發」iuap mobile玩轉前端自動化構建移動開發前端
- 搭建高可用的rabbitmq叢集 + Mirror Queue + 使用C#驅動連線MQC#
- [實戰] 使用 MongoDB Go 驅動與 Iris 構建 RESTful APIMongoDBRESTAPI
- Jenkins + GitHub 自動構建JenkinsGithub
- Jenkins github自動構建JenkinsGithub
- 自動化構建映象:Packer
- 使用vue構建一個自動建站專案Vue
- 使用Kubernetes 構建自動化平臺
- 如何構建自動化的前端開發流程前端
- 基於資料驅動的FMEA元件失效模式矩陣構建元件模式矩陣
- 根據JSON自動構建的vue篩選框元件JSONVue元件
- Kafka學習之(五)搭建kafka叢集之Zookeeper叢集搭建Kafka
- 使用Kafka Streams構建事件源系統的經驗Kafka事件
- 使用JulieOps管理Kafka自動化部署?Kafka