背景

蘑菇街旨在做一家高科技輕時尚的互聯網公司,公司的核心宗旨就是購物與社區的相互結合,為更多消費者提供更有效的購物決策建議,
蘑菇街上每天有幾百萬網友在這里交流時尚、購物的話題,相互分享,這些行為會產生大量的資料,當這些資料源產生資料后,需要有一個組件獲取資料源的資料,將資料寫到 kafka,蘑菇街研發團隊以往的解決辦法,一是通過 Lofstash、Filebeat 等開源的資料存盤方案處理,二是自己寫代碼實作這種邏輯,
開始資料量小的時候還可以,隨著業務的不斷擴張,資料越來越大,為了保障可用性、可靠性以及性能相關的內容,需要大量的研發資源投入,因此,亟待新的解決方案支持,
CKafka 全稱是 Tencent Cloud Kafka ,是一款適合公有云部署、運行、運維的分布式、高可靠、高吞吐和高可擴展的訊息佇列系統,它 100% 兼容開源的 Kafka API,目前主要支持開源的 0.9, 0.10, 1.1.1, 2.4.2 四個大版本,并提供向下兼容的能力,
目前 Tencent Cloud Kafka 維護了近萬節點的集群,堆積資料達到了 PB 級,是一款集成了租戶隔離、限流、鑒權、安全、資料監控告警、故障快速切換、跨可用區容災等等一系列特性的,歷經大流量檢驗的、可靠的公有云上 Kafka 集群,
CKafka 目前服務物件包括拼多多、微信、嗶哩嗶哩,以及騰訊內部的一些大的應用,包括騰訊視頻、微視等,
蘑菇街的選擇
蘑菇街團隊對比市場上的技術解決方案,從學習成本、擴縮容能力以及人工維護成本和穩定性方面考慮,
騰訊云 Serverless 云函式具有天然的優勢:
- 支持多語言
- 學習成本低,不需要學習開源方案,不需要學習分布式調度
- 無限的彈性擴容能力
- 多重觸發方式,事件觸發、定時觸發、主動觸發
- 集群穩定性和可用性的維護成本幾乎沒有
- 按實際用量計費,1ms計費,費用很低
同時,騰訊云 Serverless 云函式+ Ckafka 提供自建的 UI 互動界面,可進行流量告警配置,同時控制臺上可進行擴容配置且安全可靠,
騰訊云 Serverless 團隊為蘑菇街提供的業務解決方案,是通過云函式將一個實體中某個 Topic 的訊息轉儲至另一個實體對應的 Topic上,對比原來的 Connector 方案,騰訊云云函式 SCF 能夠通過騰訊云控制臺進行管理,能控制觸發閾值,觸發開關等,可以很方便地對每個函式進行管理,簡單來講,
- 訊息轉儲:將 Topic 的訊息同步至離線集群
- 集群遷移:在集群遷移合并的程序中起到一個雙寫的作用

經過對比,騰訊云 Serverless 云函式 + Ckafka 是最優的解決方案,蘑菇街最終決定選擇使用騰訊云 Serverless 云函式 + Ckafka 運用在的訊息同步業務上,
騰訊云 Serverless 云函式 + Ckafka 解決方案的優勢
Kafka 社區的繁榮,讓越來越多的電商用戶開始使用 Kafka 來做日志收集、大資料分析、流式資料處理等,而公有云上的產品 Ckafka 也借助了開源社區的力量,和云函式結合,推出了非常實用的功能,其優化點包括:
- 基于 ApacheKafka 的分布式、高可擴展、高吞吐
- 100% 兼容 Apache KafkaAPI(0.9 及 0.10)
- 無需部署,直接使用 Kafka 所有功能
- Ckafka 封裝所有集群細節,無需用戶運維
- 支持動態升降實體配置,按照需求付費(開發中)
- 對訊息引擎優化,性能比社區最高提升 50%
如下圖,云函式可以實時消費 Ckafka 中的訊息,比如做資料轉存、日志清洗、實時消費等,并且,像資料轉存的功能已經集成到了 Ckafka 的控制臺上,用戶可以一鍵開啟使用,大大降低了用戶使用的復雜度,

對比使用云主機自建 Ckafka Consumer 的方式,云函式幫用戶屏蔽掉了很多不必要的開銷:
- 云函式控制臺上可以一鍵開啟 Ckafka 觸發器,幫助用戶自動創建 Consumer,并由云函式平臺來維護組建的高可用;
- Ckafka 觸發器自身支持很多實用的配置:支持配置 offset 位置、支持配置1~1萬訊息聚合條數、支持配置 1~1萬次重試次數等;
- 基于云函式開發的業務邏輯,天然支持彈性伸縮,無需額外搭建和維護服務器集群等,
騰訊云 Serverless ETL 通用資料處理能力
互聯網競爭日益激烈,無論是蘑菇街還是其他產品都在尋找新的突破,當產品團隊嘗試做產品迭代或者產品新功能時,初期要做一些新專案的驗證,資料拉取、資料分析自然是必要的,
這部分的資料需求可能會給團隊帶來很大的壓力,一方面,對已有資料處理的主流程和資料結構有適配成本,需要考慮穩定性的風險,這部分需要投入大量的人力和時間成本;另一方面,由于這個程序時間周期比較長的,可能會影響迭代的速度,趕不上競品,
這個時候不妨試試騰訊云 Serverless 云函式,前面提到的 CKafka -> SCF -> CKafka 只是騰訊云 Serverless 云函式支持的 ETL 場景中的一條鏈路,Serverless 云函式能支持通用的資料處理,
ETL 場景是指業務上需要做資料抽取(Extract)、資料轉換(Transform)、資料加載(Load)的場景,騰訊云 Serverless 云函式在這方面有很大的優勢:
- 更輕量,無需要購買服務器,即可實作產品快速迭代中資料方面的需求,
- 更快速實作,由于學習成本低,資料團隊只需很輕松地寫個腳本,上下游鏈接一下資料源,中間做一些資料邏輯即可,
- 費用成本低,云函式 1ms 計費原則,且只對運行的函式付費,對于有波峰波谷的業務場景,在成本方面更是節省很多,
- 靈活,不影響已經有專案的資料處理流程,可單獨運行并滿足資料驗證需求,
- 省心,從資料抓取、轉存、分析、報表,全流程都實作了,

實戰部署
說了這么多,一起來實戰,了解了原理,操作起來其實也是非常簡單了,
前置條件
以廣州地域為例:
- 開啟 Elasticsearch 服務
- 開啟 Ckafka 服務
1. 創建云函式
登錄云函式控制臺,選擇地域后,新建函式,選擇運行環境Python3.6,搜索“Ckafka”,選中模板函式后,下一步,

在下一步中,點開高級設定:配置環境變數,如下:
必填引數:
ES_Address,ES_User,ES_Password,ES_Index_KeyWord
可選填入:
ES_Log_IgnoreWord(需要洗掉的關鍵詞,預設則全量寫入,如填name,password)
ES_Index_TimeFormat(按照天或者小時設定Index,預設則按照天建立索引,如填hour)

在高級設定中,配置私有網路,需要選擇和 ES 相同 VPC,完成函式創建,

2. 創建 Ckafka 觸發器
在函式的【觸發管理】頁面,創建觸發器,配置對應 Topic 的觸發方式,提交后即可生效,

3. 查看 ES 和函式運行日志
- 查看函式運行日志

- 查看 Kibana

- 擴展能力介紹
如果想要實作高級日志清洗邏輯,可直接在函式代碼中修改邏輯,

針對函式的運行狀態,可以自行配置監控告警,實時感知業務運行情況,

One More Thing
立即體驗騰訊云 Serverless Demo,領取 Serverless 新用戶禮包 ?? serverless/start
歡迎訪問:Serverless 中文網!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/68353.html
標籤:其他
上一篇:兩層的autoencoder重建誤差比一層的大,是正常的嗎?
下一篇:求各位測驗大佬幫我看看fiddler安裝問題,今天說安裝fiddler抓個包,發現安裝出錯,百度也沒得解決辦法,報錯問題如下圖
