本系列文章將介紹如何從零開始構建一個能理解語義的 Linebot,涵蓋多項後端技術。這是我在業餘時間的實踐經驗與不斷修正錯誤後的成果紀錄。內容包括:Linebot 的基本運作原理與部署,利用 NodeJS 及 AWS Lambda 開發 Serverless 架構的訊息接收器,使用 Spring Boot 開發後端訊息處理模組,Kafka 來實現跨系統訊息傳遞,以及整合 OpenAI 和 MongoDB 提供語義理解與資料儲存能力。
透過簡化每個環節所需的技術知識,我希望幫助讀者去除雜訊,快速掌握開發過程中的關鍵技術,減少不必要的困擾,並在短時間內建立解決問題的基礎,最終實現自己的開發目標。
概述 Kafka是由三個主要角色組成的分散式事件流平台: Producer(生產者), Consumer(消費者), 以及Broker(中介)。 根據不同的需...
Topic 在Kafka中,每筆資料都是事件(Event),而 Topic 就是這些事件的儲存空間。 你可以大致將Topic理解為資料庫中的Table,而Ev...
概述 合理的分配Consumer及Partition可以使效能和資源利用最大化: 一個Consumer Group中,理想的Instance數目 = 該Gro...
Rebalance Rebalance是一個動態分配Partition給不同 Consumer Instance的過程。 什麼是 Rebalance? Reb...
Rebalance情境 現在我們已經知道,當某些情況發生變化時,Kafka會自動重新分配 Partition的Consumer,這個過程被稱為 Rebala...
概述 可以使用官方提供的Docker image,使用docker-compose執行kafka。 必須設定好Listner及Advertised Liste...
概述 Kafka Connect是官方提供的資料搬運工具,本文以一個類似本專案的場景,說明將Kafka Topic的資料匯入MongoDB的設定及執行流程。 K...
概述 本專案的服務除了Serverless的AWS Lambda外,其他包括Kafka、BotServer、及MongoDB等,都是部署在AWS EC2上。這個...
概述 本專案的BotServer和其他外部系統都在同一台EC2上運行,因此記憶體監控顯得格外重要,畢竟經費有限。而在上一篇的描述中我們可以知道,影響成本最大的除...
使用 Spring Boot 開發 Backend Bot Server 前面說明了訊息前處理的部分,包括如何使用AWS Lambda接收及解析LINE Pl...