2022 年 9 月 24 日,阿里云用戶組(AUG)第 12 期活動在廈門舉辦。活動現(xiàn)場,阿里云消息中間件研發(fā)工程師劉睿,向參會企業(yè)代表分享了阿里云消息生態(tài)及最佳實踐。本文根據(jù)演講內(nèi)容整理而成。
眾所周知,消息中間件作為現(xiàn)代軟件體系中的底層基礎(chǔ)軟件,和數(shù)據(jù)庫一樣廣泛應用于各種場景中。比如大數(shù)據(jù) ETL、日志處理、IoT 的一些場景以及事件分發(fā),還有 SaaS 集成等這些各種各樣的場景里面都需要用到消息中間件。
阿里云消息產(chǎn)品系列
消息全家桶:簡單、穩(wěn)定、開源
面對如此眾多的消息中間件應用場景,阿里云在消息產(chǎn)品這一塊也有非常豐富的產(chǎn)品矩陣。其中,有主打業(yè)務(wù)消息和訂單交易場景的 Rocket MQ;有在國際上知名度也比較高、主打業(yè)務(wù)日志流式處理的數(shù)據(jù)通路消息產(chǎn)品 Kafka;還有其他一些面向細化場景業(yè)務(wù)的產(chǎn)品,例如對標開源,作為業(yè)務(wù)消息選型補充的 Rabbit MQ,面向 IoT 領(lǐng)域的消息隊列 MQTT,以及輕量版的 Rocket MQ——消息服務(wù) MNS。這些產(chǎn)品,組成了阿里云的比較完整的消息中間件產(chǎn)品的矩陣。
阿里云的消息中間件具備較強的技術(shù)優(yōu)勢和核心競爭力,體現(xiàn)在很高的 SLA,最高達到 4 個 9,支持異地多活/災備、故障秒級恢復、高吞吐和低延時的能力,并且支持海量的連接、百萬隊列、分級存儲和 Serverless 彈性能力。
這里重點分享的消息隊列 Kafka,作為一款全托管的 kafka 服務(wù)包括生態(tài)相關(guān)的云產(chǎn)品,解決了非常多的用戶痛點,是大數(shù)據(jù)生態(tài)領(lǐng)域中使用率非常高的產(chǎn)品,其主打的價值是內(nèi)核更加的穩(wěn)定、成本更加的低廉,同時具備更高的性能。
企業(yè)級大數(shù)據(jù)消息通道:消息系列 Kafka
消息隊列 Kafka 版集成了更豐富的生態(tài),不僅是兼容開源的生態(tài),還對接融合了各種阿里云內(nèi)部產(chǎn)品的生態(tài)。具體表現(xiàn)在:
頁面交互上,我們的控制臺會有非常多且直觀的功能,可以讓用戶使用一鍵遷移等生態(tài)功能,通過 Connector 對接其他云服務(wù)例如 RDS。研發(fā)同學也會持續(xù)維護更新 kafka 服務(wù)版本,讓用戶能夠使用到最新的開源對標能力,同時也會持續(xù)做好內(nèi)部優(yōu)化版本,不斷修復各種開源的問題,讓用戶有更好的使用體驗;
支持服務(wù)編排、阿里云內(nèi)部 Tag 的資源管理能力,以及可觀測的一些基本能力;
優(yōu)化模塊,涉及到底層的技術(shù)優(yōu)化,比如分級存儲,多盤的支持等;
完善的運維底座,可以做到自動化的巡檢運維,支持自動化專家診斷。
技術(shù)優(yōu)化
自研雙引擎支持
本節(jié)將簡單介紹一些消息隊列 Kafka 的技術(shù)優(yōu)化。消息隊列 Kafka 同時支持阿里云自研的存儲引擎和開源存儲引擎,可以解決用戶的痛點,如:開源劣勢、兼容性擔憂、支持 Topic 粒度使用不同的存儲引擎。
開源自建 Kafka 很難解決的一些問題可以通過我們的云 Topic 引擎去支持。云 Topic 引擎的優(yōu)勢包括更好的可用性、彈性和更低的成本;研發(fā)同學通過優(yōu)化引擎解決開源的生存 Bug,還可以全面兼容開源的不同版本,包括 0.10 版本、2.2 版本、2.6 版本等;以及支持不同引擎 Topic 混用,引擎設(shè)置粒度細化到 Topic 級別。
刷盤機制優(yōu)化
其次是刷盤機制的優(yōu)化,對于開源 Kafka 來說,他的 ISR 機制支持多副本的能力。但是這個能力需要在不同的 Broker 節(jié)點上去復制和拷貝數(shù)據(jù),要占用相當?shù)囊徊糠志W(wǎng)絡(luò)流量。消息隊列 Kafka 版內(nèi)部做了一些優(yōu)化,包括和底層的阿里云盤,盤古文件系統(tǒng)這些做了深度的整合優(yōu)化,把這個多副本的能力直接做到底層,這樣可以優(yōu)化阿里 Kafka 的刷盤效率,降低磁盤使用和成本,并且提升了性能,同時擴容穩(wěn)定性也得到了保障,數(shù)據(jù)可靠性可以達到 8 個 9。
分級存儲
還有一項比較重要的技術(shù)優(yōu)化是分級存儲。消息隊列 Kafka 通過結(jié)合底層 NAS 等存儲服務(wù),使用分級存儲降低成本,同時提供海量存儲容量的能力,允許用戶自定義時長的消息保存能力,大大延長了消息保留時間,支持保存長達數(shù)月的時間。同時,支持冷熱數(shù)據(jù)分離,保證新的消息讀寫性能不受到影響。
巡檢組件
提到自動化運維,必然少不了巡檢組件。巡檢組件保證了整個服務(wù)的穩(wěn)定性。巡檢系統(tǒng)會及時地檢查所有集群有沒有潛在的問題和故障,然后快速進行自我恢復。自我恢復一般是個秒級響應切換的過程,能夠保證整個集群在運行中保持穩(wěn)定,對用戶來說,是保障高 SLA 的基礎(chǔ)。
容滅方案
消息隊列 Kafka 也具備完善的容災方案,包括如果用戶購買了專業(yè)版,部署的時候可以選擇不同的可用區(qū),對應不同的機房。當其中的一個機房出現(xiàn)故障,容滅方案會自動將這個服務(wù)熔斷并摘除,將服務(wù)的流量切換到其他可用區(qū),這樣就可以達到全集群的自動切換,且切換時間很短,同時保證消息不會丟失。解決了開源可用性和可靠性的矛盾問題。
生態(tài)支持
Connector 組件:支持配置化轉(zhuǎn)儲到大數(shù)據(jù)相關(guān)產(chǎn)品
本節(jié)介紹消息隊列 Kafka 的生態(tài)支持,說到生態(tài),就不得不提到 Kafka Connector 組件。消息隊列 Kafka Connector 支持配置化地設(shè)置轉(zhuǎn)儲任務(wù)將 Kafka 數(shù)據(jù)連通到其他大數(shù)據(jù)相關(guān)云產(chǎn)品。
用戶只需要簡單地配置后,就可以將上游的數(shù)據(jù),比如說從 MySQL、Logstash 進來的數(shù)據(jù),經(jīng)過 Kafka 然后通過 Kafka 的 Connector 組件運維調(diào)度 Connector 運行時任務(wù),自動地對接到下游,比如 OSS、FunctionComputer、Flink 、Hbase 等這些下游的計算,或者是存儲分析的服務(wù),可以自動地做到免運維的全托管的數(shù)據(jù)對接。還支持包括像 ETL 輕量化數(shù)據(jù)清洗轉(zhuǎn)儲,都有非常成熟的行業(yè)解決方案。
ETL 組件:輕量化消息流處理
關(guān)于 ETL 服務(wù)組件,它是輕量級消息流處理系統(tǒng),可以通過接收上游采集的客戶業(yè)務(wù)數(shù)據(jù),例如生產(chǎn)數(shù)據(jù)、數(shù)據(jù)庫的數(shù)據(jù)、物聯(lián)網(wǎng)設(shè)備的 IoT 時序數(shù)據(jù),進入到 Kafka,通過 Kafka 的 ETL 功能,用戶可以自定義數(shù)據(jù)處理的函數(shù),通過配置化的方式填寫到 ETL 頁面中。函數(shù)會自動的對某一些 Topic 的數(shù)據(jù)進行清洗和數(shù)據(jù)的流轉(zhuǎn),將這些數(shù)據(jù)通過這個加工模板/算子傳到下游的目標數(shù)據(jù)源,例如 RDS、OSS、Maxcompute 這些下游的服務(wù),自動實現(xiàn)數(shù)據(jù)的清理、清洗、流轉(zhuǎn)的功能。
最佳實踐 & 場景案列
發(fā)送最佳實踐
本節(jié)介紹 Kafka 客戶端的一些最佳實踐。首先關(guān)于 Producer 這里,有經(jīng)驗上的比較普適的一些建議,如配置的參數(shù)優(yōu)化、配置的計算選取。建議非業(yè)務(wù)需要不要使用 Key,因為如果使用 Key 的話,有可能因為 Key 的分布不均導致一些分區(qū)寫入熱點問題,因為 Key 決定了消息寫入到哪一個分區(qū),為了減少碎片化寫入,更好地負載均衡,建議可以使用粘性的分區(qū)策略,以及分區(qū)數(shù)使用控制臺創(chuàng)建 Topic 時推薦的值。
消費最佳實踐
關(guān)于消費者的最佳實踐,通過文檔建議的參數(shù)調(diào)優(yōu)方法,可以盡量減少發(fā)生 Rebalance 的可能,提高消費能力。具體的典型應用場景,像消息中間件發(fā)布訂閱消息,這是它的基礎(chǔ)能力。在跟蹤網(wǎng)站的應用場景中,可以做到發(fā)布到特定的 Topic 和訂閱 Topic,做到數(shù)據(jù)實時的處理和監(jiān)控。像數(shù)據(jù)監(jiān)控、日志轉(zhuǎn)儲、聚合日志提交,這些都可以基于現(xiàn)有的開源組件來實現(xiàn),例如使用 File beat 開源組件,都可以直接做到基于 Kafka、開源組件這一套的能力去快速地實現(xiàn)日志采集分析。
典型場景
Kafka 也可以應用到反作弊的實時分析場景中,可以通過 Kafka 作為消息的中間流轉(zhuǎn)組件,由上游的 FileBeat 和 LogStash 采集游戲服務(wù)的日志。把消息路由到 Flink 實時去做計算,然后把這個計算后的數(shù)據(jù)存儲到 ES 或者 Click house。把 Kafka 的數(shù)據(jù)流轉(zhuǎn)到一些下游的風控服務(wù),最后反過來形成閉環(huán),對游戲服務(wù)的反作弊分析進行處理。
MQTT 和 Kafka 一起構(gòu)建的車聯(lián)網(wǎng),也是有一套比較成熟的體系,可以通過 Kafka 作為消息中轉(zhuǎn)的總線,把不同的 IoT 數(shù)據(jù)流轉(zhuǎn)到下游的各種服務(wù)。
從上述應用場景中我們可以看到,在 Serverless 趨勢下的現(xiàn)代化軟件架構(gòu)體系中,消息隊列 Kafka,包括其他的消息產(chǎn)品,在云服務(wù) Serverless 化的過程中成為了非常重要的一環(huán)。也希望大家在將來的 Serverless 實踐中多體驗和使用消息中間件 Kafka 云產(chǎn)品,為我們提出寶貴建議。(正文完)文章來源:http://www.zghlxwxcb.cn/news/detail-406365.html
阿里云研發(fā)工程師劉睿:阿里云消息生態(tài)及最佳實踐文章來源地址http://www.zghlxwxcb.cn/news/detail-406365.html
到了這里,關(guān)于阿里云研發(fā)工程師劉睿:阿里云消息生態(tài)及最佳實踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!