騰訊雲 Serverless 雲函數實現 CKafka 數據轉存到 ES

背景介紹

騰訊雲 Serverless 雲函數是下一代通用計算平臺,提供安全穩定、高效易用的低成本無服務器運行環境。隨着 Kafka 社區的繁榮,愈來愈多的用戶開始使用 Kafka 來作日誌收集、大數據分析、流式數據處理等。而公有云上的產品 Ckafka 也藉助了開源社區的力量,作了不少優化:安全

  • 基於 ApacheKafka 的分佈式、高可擴展、高吞吐
  • 100% 兼容 Apache KafkaAPI(0.9 及 0.10)
  • 無需部署,直接使用 Kafka 全部功能
  • Ckafka 封裝全部集羣細節,無需用戶運維
  • 支持動態升降實例配置,按照需求付費(開發中)
  • 對消息引擎優化,性能比社區最高提高 50%

同時,在公有云上,雲函數也和 CKafka 作了深度聯動,並推出了不少很是實用的功能。服務器

運行原理

以下圖,雲函數能夠實時消費 Ckafka 中的消息,好比作數據轉存、日誌清洗、實時消費等。而且,像數據轉存的功能已經集成到了 Ckafka 的控制檯上,用戶能夠一鍵開啓使用,大大下降了用戶使用的複雜度。網絡

方案優點

對比使用雲主機自建 Ckafka Consumer 的方式,雲函數幫用戶屏蔽掉了不少沒必要要的開銷:less

  1. 雲函數控制檯上能夠一鍵開啓Ckafka觸發器,幫助用戶自動建立 Consumer,並由雲函數平臺來維護組建的高可用;
  2. Ckafka 觸發器自身支持不少實用的配置:支持配置 offset 位置、支持配置1~1萬消息聚合條數、支持配置 1~1萬次重試次數等;
  3. 基於雲函數開發的業務邏輯,自然支持彈性伸縮,無需額外搭建和維護服務器集羣等。

經常使用場景

以下圖所示,藉助雲函數和 Ckafka 觸發器,能夠很是方便實現 CKafka 消息轉存到 COS、ES、DB等,那本次也會藉助雲函數來替代 Logstash,實現 Ckafka 消息羅盤 ES。運維

和使用 CVM 自建 Logstash 對比,雲函數有如下優點:分佈式

  1. 雲函數自帶 Consumer 組件,可自行聚合;
  2. 雲函數的模板函數已經實現了消息聚合和部分清洗能力,還可自行擴展;
  3. 雲函數集羣自帶高可用和監控日誌能力,業務上線速度更快;
  4. 雲函數採用按實際使用收費,比自建集羣費用更優,能夠節省 50% 的費用。

部署流程

前置條件(以廣州地域爲例):函數

  • 開啓 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

查看 Kibana

擴展能力介紹

若是想要實現高級日誌清洗邏輯,可直接在函數代碼中修改邏輯。

針對函數的運行狀態,能夠自行配置監控告警,實時感知業務運行狀況。

One More Thing

當即體驗騰訊雲 Serverless Demo,領取 Serverless 新用戶禮包 👉 serverless/start

歡迎訪問: Serverless 中文網
相關文章
相關標籤/搜索