架構師面試(二十六):系統拆分

問題

今天我們聊電商系統實際業務場景的問題,考查對業務系統問題的分析能力、解決問題的能力和對系統長期發展的整體規劃能力。

一電商平臺在早期階段業務發展迅速,DAU在 10W+;整個電商系統按水平分層架構進行設計,包括【入口網關層】、【業務邏輯層】和【數據訪問層】。為了進一步提升電商平臺的DAU,幾乎每周都會做幾次運營活動,因此電商系統基本每天都會有新業務上線和服務重啟,這導致電商系統的核心交易邏輯(下訂單、支付等)極易受到影響。另外,電商系統的每個業務單元(如:風控系統、廣告系統、營銷系統等)也都處在不斷地更新迭代中。

如果你是該電商系統的架構師,如何解決現有問題?對該電商系統的后續發展應該如何規劃?

解析

該電商系統目前處于早期階段,業務發展迅速,系統按水平分層架構在運行;這里多啰嗦幾句,對【水平分層架構】進行簡單描述。

水平分層架構一般是在“技術”擴展驅動之下,對單體架構進行水平拆分,通常可劃分出【入口網關層】、【業務邏輯層】和【數據訪問層】;入口網關層負責外部請求的路由、過濾和轉換,業務邏輯層負責處理復雜的業務規則流程,數據訪問層負責對持久化數據進行讀寫。

水平分層架構的每一層是整體系統的橫向切面,沒有拆分出獨立的業務單元,也就是說:業務邏輯層是一個獨立服務或進程在運行,這個獨立的進程中既有運營活動邏輯也有核心的交易邏輯;?即在同一個工程中,運營活動程序很容易影響核心的交易邏輯程序,這是最根本的問題所在。然后業務邏輯層程序除了核心的交易邏輯和運營活動之外,還包括其他業務單元,比如:風控、廣告、營銷等;任何一個業務的升級迭代和重啟,都會導致其他業務單元也需要重啟,正所謂“城門失火殃及池魚”!

那怎么解決現有問題呢?

目前最緊急的問題是“運營活動”影響“核心邏輯”,成本最低的解決方案是:對業務邏輯層拆分出一個附加的業務邏輯模塊,假設目前的業務邏輯層程序叫做 Logic,那就從Logic中把運營活動邏輯單獨拆分出來,不妨叫做 Extlogic;由 Logic 負責最核心的業務邏輯內容(比如下單、交易等),由 Extlogic 負責運營活動內容。

上述問題解決之后,就可以開始著手解決很重要但相對不緊急的問題,即很多業務單元(風控、廣告、營銷、下單、交易等)目前都還糅雜在 Logic 中,最徹底的解決方案是:對每一個業務單元進行服務化拆分;在當前的業務場景中,也叫做垂直化拆分。就是從 Logic 中分別拆分出 SpamLogic(風控邏輯服務)、AdLogic(廣告邏輯服務)、MarketingLogic(營銷邏輯服務)、OrderLogic(訂單邏輯服務)、TradeLogic(交易邏輯服務)等。

這個問題解決之后,就可以坐等業務的發展了,如果業務發展良好,百花齊放,前端孵化出各種業務線時,就可以考慮中臺化了,比如對交易業務、風控業務、廣告業務等進行下沉形成可復用的業務中臺。

簡單總結一下:

1. 從 Logic 中拆分出 Extlogic,解決運營活動影響核心業務邏輯的問題;

2. 從 Logic 中拆分出 SpamLogic、AdLogic、MarketingLogic、OrderLogic、TradeLogic 等,解決業務單元之間互相影響的問題;

3. 業務單元中臺化,解決業務復用問題,助力前端業務發展。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74901.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74901.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74901.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2. Qt界面文件原理

本節主要介紹ui文件如何與窗口關聯,并通過隱式連接方式顯示對話框 本文部分ppt、視頻截圖原鏈接:[萌馬工作室的個人空間-萌馬工作室個人主頁-嗶哩嗶哩視頻] 1 UI文件如何與窗口關聯 1.1 mainwindow.cpp的頭文件ui_mainwindow.h 根據編譯原理的基本規…

雅思大作文寫作——詞伙、簡單句、并列句的使用

詞伙是一些可以表達我們常用觀點的單詞組合,這個組合可能不只是2-3個單詞,也可能是很多單詞組成的一個短句。 一、詞伙使用 1. 不要中譯英 2. 重視詞伙,而非單詞 如何替換表達 1. 如果要替換的是一個名詞,如students,則有下面的一些方法: A. 使用替換詞或者詞組:y…

?算法OJ?滑動窗口最大值【雙端隊列(deque)】Sliding Window Maximum

文章目錄 雙端隊列(deque)詳解基本特性常用操作1. 構造和初始化2. 元素訪問3. 修改操作4. 容量操作 性能特點時間復雜度:空間復雜度: 滑動窗口最大值題目描述方法思路解決代碼 雙端隊列(deque)詳解 雙端隊列(deque,全稱double-ended queue)是…

電機的了解到調試全方面講解

一、什么是電機 電機是一種將電能轉換為機械能的裝置,通常由定子、轉子和電磁場組成。 當電流通過電機的繞組時,產生的磁場會與電機中的磁場相互作用,從而使電機產生旋轉運動。電機廣泛應用于各種機械設備和工業生產中,是現代社會不可或缺的重要設備之一。 常見的電機種…

分布式微服務系統架構第97集:JVM底層原理

加群聯系作者vx:xiaoda0423 倉庫地址:https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ JVM 內存結構 Java 虛擬機的內存空間分為 5 個部分: 程序計數器 Java 虛擬機棧 本地方法棧 堆 方法區 JDK 1.8 同 JDK 1.7 比&…

制定大運維管理體系的標準、流程、機制、規范

規劃并制定大運維管理體系的標準、流程、機制、規范,對于確保平臺的可用性和穩定性至關重要。這一過程涉及從頂層設計到具體執行的全面考量,需要綜合考慮業務需求、技術架構、團隊能力等多方面因素。以下是一個基本框架,用于指導如何構建有效…

TruPlasma RF 3006 軟件TRUMPF HUETTINGER TRUPLASMA RF 3006 調試監控軟件

TruPlasma RF 3006 軟件TRUMPF HUETTINGER TRUPLASMA RF 3006 調試監控軟件

第16屆藍橋杯單片機模擬試題Ⅱ

試題 代碼 sys.h #ifndef __SYS_H__ #define __SYS_H__#include <STC15F2K60S2.H> //ds1302.c extern unsigned char time[3]; void w_ds1302(); void r_ds1302(); //iic.c float v_adc(unsigned char addr); //sys.c extern float light_v; extern float rb2_v; exte…

清華《數據挖掘算法與應用》FP-Growth算法

【例 8.7】實現FP 樹算法,并對模擬數據集 simpDat挖掘頻繁項集,最小支持度為2,繪制 FP樹并輸出頻繁項集。 運行結果&#xff1a; 聲明&#xff1a;著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。 # -*- coding: utf-8 -*- ""&q…

npm 項目命名規則

以下是 npm 項目命名規則的詳細說明&#xff1a; 一、核心命名規則 必須使用小寫字母 名稱中不能包含大寫字母。原因&#xff1a; 跨平臺兼容性&#xff08;如 Linux 區分大小寫&#xff0c;而 Windows 不區分&#xff09;。避免命令行和 URL 中的大小寫沖突&#xff08;例如包…

Ubertool 的詳細介紹、安裝指南及使用說明

Ubertool&#xff1a;多協議網絡分析與調試平臺 一、Ubertool 簡介 Ubertool 是一款開源的 多協議網絡分析工具&#xff0c;專為物聯網&#xff08;IoT&#xff09;、嵌入式系統和工業自動化領域設計。它支持藍牙、Wi-Fi、LoRa、CAN總線等多種通信協議的實時監控、數據包捕獲…

AI重構農業:從“面朝黃土“到“數字原野“的產業躍遷—讀中共中央 國務院印發《加快建設農業強國規劃(2024-2035年)》

在東北黑土地的萬畝良田上&#xff0c;無人機編隊正在執行精準施肥作業&#xff1b;在山東壽光的智慧大棚里&#xff0c;傳感器網絡實時調控著番茄生長的微環境&#xff1b;在云南的咖啡種植園中&#xff0c;區塊鏈溯源系統記錄著每粒咖啡豆的旅程。這場靜默的農業革命&#xf…

FogFL: Fog-Assisted Federated Learning for Resource-Constrained IoT Devices

摘要 提示&#xff1a;這里可以添加系列文章的所有文章的目錄&#xff0c;目錄需要自己手動添加 -在本文中&#xff0c;我們提出了一個支持霧的聯邦學習框架–FogFL–來促進資源受限的物聯網環境中延遲敏感應用的分布式學習。聯邦學習&#xff08;FL&#xff09;是一種流行的分…

linux下編譯Websocketpp,適用x86和armv8

編譯boost庫 下載源文件&#xff1a;Version 1.79.0 編譯&#xff1a; sudo ./bootstrap.sh sudo ./b2 install 安裝websocketpp git clone https://github.com/zaphoyd/websocketpp.git cd websocketpp #進入目錄 mkdir build cd build cmake .. make sudo make ins…

Linux學習筆記——零基礎詳解:什么是Bootloader?U-Boot啟動流程全解析!

零基礎詳解&#xff1a;什么是Bootloader&#xff1f;U-Boot啟動流程全解析&#xff01; 一、什么是Bootloader&#xff1f;&#x1f4cc; 舉個例子&#xff1a; 二、U-Boot 是什么&#xff1f;三、U-Boot啟動過程&#xff1a;分為兩個階段&#x1f539; 第一階段&#xff08;匯…

Word 頁眉設置(不同章節不同頁眉)

需求分析 要給文檔設置頁眉&#xff0c;但是要不同的頁眉不同的頁眉 問題點&#xff1a;一旦設置頁眉 每個頁眉都是一樣的 現在要設置不一樣的 設置了頁眉但是整個文章的頁眉都一樣 問題解決 取消鏈接 前一節&#xff08;不和前面的頁眉同步更新&#xff09; 小結 不同的…

Debezium日常分享系列之:Debezium3.1版本之增量快照

Debezium日常分享系列之&#xff1a;Debezium3.1版本之增量快照 按需快照觸發一次臨時增量快照觸發臨時阻塞快照增量快照增量快照過程如何 Debezium 解決具有相同主鍵的記錄之間的沖突快照窗口觸發增量快照使用附加條件運行臨時增量快照使用 Kafka 信號通道觸發增量快照臨時增量…

音視頻開發從入門到精通:編解碼、流媒體協議與FFmpeg實戰指南

音視頻開發從入門到精通&#xff1a;編解碼、流媒體協議與FFmpeg實戰指南 音視頻技術作為數字媒體領域的核心&#xff0c;正在成為互聯網和移動應用的重要組成部分。本文將全面介紹音視頻開發的學習路徑&#xff0c;從基礎概念到高級應用&#xff0c;從編解碼原理到實戰案例&a…

bookkeeper基本概念

Apache BookKeeper 架構與基本概念 Apache BookKeeper 的架構 Apache BookKeeper 是一個高性能的分布式日志存儲系統&#xff0c;主要用于存儲和管理順序寫入的數據。它被設計用來提供低延遲、高吞吐量和強一致性的服務&#xff0c;常用于分布式系統中的日志存儲需求&#xf…

Scala相關知識學習總結3

包 - 包聲明&#xff1a;和Java類似&#xff0c;作用是區分同名類、管理類命名空間。Scala包名只能含數字、字母等&#xff0c;不能數字開頭、不能用關鍵字。 - 包說明&#xff1a;有類似Java的包管理風格&#xff0c;也有獨特嵌套風格。嵌套風格有兩個特點&#xff0c;一是&…