使用Kafka重新架構電子商務系統 - Dina
示例是:向經過身份驗證的使用者顯示產品頁面,下圖顯示了在這種情況下如何執行請求。
為經過身份驗證的使用者顯示產品頁面,請注意,必須執行五個請求,但我們應該只計算四個順序請求。儘管如此,由於請求是以同步方式執行的,整個系統不容易擴充套件並且存在很多問題。
由於這種高耦合度,我們的系統可能面臨多個問題,例如:
- 需要時難以擴充套件
- 高負載下效能低
- 外部服務不可用造成的不可用
- 因協調部署而難以維護
解決方案的主要思想是將所有主資料項轉換並聚合為單個派生項,該派生項隨後可以儲存到資料來源中並在需要時進行查詢。
由於我們已經使用Kafka生態系統來解決這個問題,最終的解決方案將是一個Kafka Streams 拓撲以及幾個Kafka Connect元件,這些元件將透過發件箱模式或更改資料捕獲的各種實現風格從資料來源中提取資料併發布將其傳送到 Kafka,以便在流應用程式中攝取。
流拓撲將使用產品 ID作為分割槽鍵來連線所有 Kafka 主題中存在的資料。所有連線的結果將釋出到 Kafka 主題中,然後可以寫入資料庫。正在生成的此資料聚合將稱為SaleProduct。
我們可以在SaleProduct資料庫之上構建一個新服務(REST API、GraphQL API)。前端應用程式可以查詢這個新端點,並且這個端點可以將產品作為響應提供服務,而無需任何中間處理。
結論
總之,讓我們重新審視我們的系統面臨的上述列舉的問題,看看其中是否仍然存在:
- “需要時難以擴充套件”——在當前的解決方案中,元件不再難以擴充套件,因為 Kafka 拓撲可以透過新增分割槽輕鬆擴充套件。我們可以為新的SaleProduct資料儲存選擇特定的資料庫技術,該技術也可以輕鬆擴充套件(例如:Cassandra 資料庫)。此外,SaleProduct API是一個簡單的無狀態服務,可以橫向擴充套件。
- “高負載下的低效能”——透過使用來自“本地”資料庫的單個查詢替換所有用於聚合資料的同步 HTTP 請求,將顯著提高高負載下的效能。此外,查詢不會執行任何連線,資料可以直接儲存在所需的表示中(例如:JSON、XML 等)。
- “由於外部服務不可用而產生的不可用”——如果在之前的場景中,外部元件的不可用會導致所謂的“產品服務”的不可用,在當前的解決方案中,這是避免的,因為我們有資料已經儲存在我們的“本地”資料來源中。必須保持可用的單一元件必須是資料庫本身。
- “由於協調部署而難以維護”——這不再是問題,因為我們不再在空間或時間上與任何外部服務耦合。
不過,我必須說這不是一個防彈解決方案,並且有兩個主要缺點:
- 面對最終一致性——如果沒有人注意到,我已經在本文中基本描述了我們如何以及為什麼從著名的CAP 定理中選擇A(可用性)和P(分割槽容限),我現在要說的是:使用這種方法,我們必須準備好面對最終的一致性!
- 資料治理——通常,在大型複雜企業中,很難像當前解決方案中那樣使用(檢索和派生)主資料和構建派生資料孤島。透過檢視Zhamak Dehghani 的資料網格,可以看到一些關於採用這種方法的概念。
相關文章
- Episerver:重新構想電子商務2020Server
- 使用Apache Kafka對電子商務系統進行擴充套件的思路 - BogdanApacheKafka套件
- 業務中臺系統架構:大中臺+小前臺電子商務系統搭建框架思維架構框架
- 分散式微服務雲架構構建電子商務平臺分散式微服務架構
- 電商系統架構總結1(EF)架構
- 電商系統架構總結2(Redis)架構Redis
- (十四)JAVA springboot微服務b2b2c電子商務系統- Spring Cloud構建分散式電子商務平臺JavaSpring Boot微服務Cloud分散式
- 7-電子商務系統規劃(完結)
- Laravel-admin 電子商務前端系統(招商類)Laravel前端
- 電商系統架構總結4(webapi 版本控制)架構WebAPI
- 微服務架構開發電商系統需要用Redis、ES和MQ嗎?微服務架構RedisMQ
- 訊息佇列之Kafka——從架構技術重新理解Kafka佇列Kafka架構
- PHP 電子商務PHP
- CentOS7系統如何搭建Magento電子商務網站?CentOS網站
- 電商系統架構總結3(webapi授權機制)架構WebAPI
- 關於SpringCloud微服務雲架構構建B2B2C電子商務平臺之-(SpringGCCloud微服務架構
- 【許曉笛】重新理解EOS的系統架構架構
- java B2B2C 仿淘寶電子商城系統-Spring Cloud構建分散式電子商務平臺JavaSpringCloud分散式
- java版 電子商務Springcloud分散式微服務多使用者商城系統-Springboot專案打包JavaGCCloud分散式微服務Spring Boot
- Java版分散式微服務雲開發架構 Spring Cloud 電子招標採購系統Java分散式微服務架構SpringCloud
- 食品行業B2B電子商務網站系統行業網站
- Laravel-admin 碼的電子商務後臺系統 (小白看)Laravel
- 汽車汽配行業B2B電子商務系統行業
- 汽車電子電氣架構開發諮詢服務架構
- ETL架構中的38個子系統架構
- 關於電子商務
- 使用JHipster構建Spring和React構建電子商務應用程式原始碼 -DEVSpringReact原始碼dev
- Kafka體系架構、命令、Go案例Kafka架構Go
- 電商架構淺析架構
- 微服務電商秒殺系統微服務
- SpringCloud微服務雲架構構建B2B2C電子商務平臺分析之-服務消費(Ribbon)SpringGCCloud微服務架構
- 廣告電商系統開發和系統架構分析系列(第一章)架構
- 競拍秒購電商系統開發需求和功能架構分析架構
- 大型分散式電商系統架構如何從0開始演進?分散式架構
- 微服務架構下的系統整合微服務架構
- 微服務架構之「 監控系統 」微服務架構
- (十四)Java B2B2C多使用者商城 springboot架構- Spring Cloud構建分散式電子商務平臺JavaSpring Boot架構Cloud分散式
- 使用LangGraph構建多Agent系統架構!架構