架構總結記錄

1、架構模型解決的共同問題

1.1、高內聚低耦合:解耦外部依賴,分離業務復雜度和技術復雜度等。

1.2、信息孤島和數據壁壘:單體架構垂直,沒有相互調用和復用。邏輯抽象、能力下沉、多系統復用問題

1.3、熵增

2、?單體架構與分布式架構的核心區別在于

2.1、系統結構與部署

單體架構:一個代碼庫獨立部署,初始開發簡單,代碼臃腫w維護困難。

分布式架構:拆分為多個獨立服務,可獨立開發和部署,,

2.2、耦合度

單體架構:耦合程度高,維護困難。

分布式架構:服務拆分降低耦合度,提高開發效率

2.3、擴展性與性能

單體架構:擴展時需整體復制,資源利用率低。

分布式架構:按需擴展特定服務,適合高并發大數據處理。

3、業務系統的復雜性

業務系統的復雜性,可能來自于多個放面:

1、業務復雜性

2、技術復雜性

3、歷史負債,代碼腐化

無論是哪種情況帶來的復雜性,可以從下面幾個當面來熟悉復雜的業務系統:

1、梳理架構體系。業務架構、應用架構、數據架構(領域模型)、技術架構、部署架構構成整個系統的架構體系,缺一都會影響對系統的全局性認識個把控。

2、了解業務流程。這個其實在梳理業務系統的時候,核心的業務流程應該就已經覆蓋過了。但業務不只有核心流程,一些重要流程也是需要了解和梳理,有助于對系統更細致的了解。

4、屎山代碼/技術債

4.1、功能之間隱秘增加的耦合、

4.2、不可避免的代碼腐化

不可避免的代碼腐化是指在軟件開發過程中,由于需求的不斷迭代、技術債務的累積以及維護不善等原因,代碼質量逐漸下降,變得難以理解和維護的現象。

4.3、熵增

5、業務規模停滯結果(業務復雜度帶來的結果)

5.1、不斷地拓展產品的邊界,創造用戶價值

5.2、優化現有系統,提升用戶體驗。

5.3、好的技術架構和合理的模塊劃分方案,考慮到可復用性可以減少成本

6、軟件開發的增效

6.1、工程效能(業務開發占比和非業務開發占比)

6.2、運營提效

Essential Complexity(本質復雜性)

Accidental Complexity(偶然復雜性)

7、復雜度

7.1、業務復雜度

業務流程復雜,業務模型復雜,業務規則負責

7.2、技術復雜度

高并發,高可用,高性能

8、平臺與中臺的核心區別

平臺側重技術基礎設施的搭建,提供通用能力支撐;

中臺則強調業務能力的沉淀復用和新業務孵化,通過組織架構調整實現快速響應和創新支持。??

中臺和平臺都是某種共性能力,區分兩者的重點一是看是否具備業務屬性,二是看是否是一種組織。中臺是支持多個前臺業務且具備業務屬性的共性能力組織,平臺是支持多個前臺或中臺業務且不具備業務屬性的共性能力。

9、熟悉復雜的業務系統

1、熟悉業務流程

用戶是誰,提供的核心功能是什么?產品的邊界,產品族有哪些,系統的上下游調用關系。

2、梳理架構體系

業務架構,應用架構,技術架構,數據架構,部署架構。

不可避免的代碼腐化是指軟件開發過程中,由于需求的不斷迭代、技術債務的累積以及架構設計的局限性,代碼質量逐漸下降的過程。

當系統變得復雜,功能之間會逐漸產生耦合,它們的關聯關系也會變得復雜。這些無意間引入的耦合,會給后續所有的需求開發增加一些額外的負擔。

架構設計和模塊抽象只能面向當下,它天然是短視的或者說是有局限性的。

腐化除了來自開發者低質量的代碼,更核心的是來自于系統架構的腐化。

瀑布式開發:按順序開發,周期長。

敏捷開發:是部分開發,挑重點開發,因為開發是局部,不能統籌全局,所以當下的架構就會失效,出現代碼腐化。需求本身就是零散的,目標也是模糊的。在沒有全局視圖的情況下,架構自然就是有局限的,只能適應當下。而隨著項目的發展,只能適應當下的架構就會失效。

該分離的分離,該提取的提取,進行邏輯抽象,功能封裝,能力下沉,多系統復用。

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

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

相關文章

Python: file: encode: ‘gbk‘ codec can‘t encode character ‘\xe5‘ in position

錯誤 response requests.get(url, timeout5) # 請求一個網頁 with open(‘response.txt’, ‘w’) as file: # 打開一個文件 file.write(response.text) # 向文件寫入response 提示錯: UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xe5’ in po…

PyTorch深度學習框架60天進階學習計劃 - 第59天模型魯棒性(一):對抗樣本生成機理與PGD攻擊詳解

PyTorch深度學習框架60天進階學習計劃 - 第59天模型魯棒性(一):對抗樣本生成機理與PGD攻擊詳解 🎯 第一部分:對抗樣本的魔法世界 哈嘍各位"反黑客"學員!歡迎來到第59天的課程!今天我…

kibana和elasticsearch安裝

1、elasticsearch 6.8.23 安裝包下載地址: Elasticsearch 6.8.23 | Elastic 通過網盤分享的文件:elasticsearch-6.8.23.zip 鏈接: https://pan.baidu.com/s/1D2SrJ8nVBlqC1QNswmMJXg?pwd1234 提取碼: 1234 2、kibana 6.8.23 安裝包下載地址&#xff…

vue3 el-table row-class-name 行字體顏色失效

在使用 Vue 3 中的 el-table 組件時,如果你遇到了 row-class-name 屬性設置的行顏色失效,并被 el-table 的默認樣式覆蓋的問題,通常是因為 CSS 優先級或者樣式沖突導致的。這里有幾個方法可以幫助你解決這個問題: 1. 增加 CSS 優…

【跨界新視野】信號處理遇上VR/AR:下一代沉浸體驗的核心技術與您的發表藍海

導語: 元宇宙概念雖經歷起伏,但其底層支撐技術——信號處理(Signal Processing)與虛擬/增強現實(VR/AR) 的融合創新正蓬勃發展。從高保真音效定位、腦機接口信號解析,到實時三維重建與交互渲染&…

VMware 2025安裝教程(附安裝包)VMware 2025下載詳細安裝圖文教程

文章目錄 引言第A部分:vmware虛擬機安裝包的獲取與準備第1步:下載VMware虛擬機安裝程序 第B部分:VMware虛擬機安裝步驟第3步:啟動安裝向導第4步:同意軟件許可協議第5步:設定程序安裝路徑第6步:配…

wsl2 用橋接方式連網

安裝 Hyper-V windows 家庭版怎么安裝 Hyper-V-CSDN博客 用管理員打開 PowerShell 執行 Get-NetAdapter 出系統所有的網卡,記住想要橋接的網卡名稱 無線網名稱一般為 WLAN,有線網名稱一般為 以太網,我的是 以太網 2 執行 Get-VMSwitch 查…

<tauri><threejs><rust><GUI>基于tauri和threejs,實現一個3D圖形瀏覽程序

前言 本專欄是基于rust和tauri,由于tauri是前、后端結合的GUI框架,既可以直接生成包含前端代碼的文件,也可以在已有的前端項目上集成tauri框架,將前端頁面化為桌面GUI。 發文平臺 CSDN 環境配置 系統:windows 10 …

C++基礎之指針

文章目錄 指針介紹 C指針的定義與用法指針的定義指針的基本操作指針的常見用法1. 動態內存分配2. 指針與數組3. 指針作為函數參數(傳址調用)4. 函數返回指針 特殊指針類型智能指針(C11起)2.入門代碼3.總結 指針介紹 C指針的定義與…

基于存儲過程的MySQL自動化DDL同步系統設計

在現代SaaS與微服務架構中,數據庫結構的自動化管理成為保障系統迭代效率與數據一致性的關鍵一環。本文將圍繞如何通過 MySQL 存儲過程構建一個自動建表、字段同步、索引維護、錯誤日志記錄于一體的 DDL 自動同步系統,提供一套完整的工程化實現方案。 一…

【cmake學習】添加庫文件

文章目錄 目的一、原理二、步驟1.修改CMakeList2.main函數如下3.編譯運行 目的 上一篇 學習了使用cmake 構建多源文件工程在項目開發工程中,一般都會生成庫文件或者調用其它的一些庫文件,所以我們要學習一下簡單生成和使用庫文件這里主要介紹 add_libra…

Docker容器化部署實戰:Spring Boot + MySQL + Nginx 一鍵部署完整指南

?? 前言 容器化技術已經成為現代軟件部署的標準實踐。作為一名DevOps工程師,我在過去幾年中參與了數十個項目的容器化改造,深刻體會到Docker在提升部署效率、環境一致性和運維便利性方面的巨大價值。 今天我將通過一個完整的實戰案例,詳細展示如何使用Docker部署一個包含…

分布式選舉算法<一> Bully算法

分布式選舉算法詳解:Bully算法 引言 在分布式系統中,節點故障是不可避免的。當主節點(Leader)發生故障時,系統需要快速選舉出新的主節點來保證服務的連續性。Bully算法是一種經典的分布式選舉算法,以其簡…

高效調試 AI 大模型 API:用 Apipost 實現 SSE 流式解析與可視化

借助 AI 大模型的實時接口(如 OpenAI GPT 或其他第三方模型 API),開發者可以通過 SSE(Server-Sent Events)流式處理數據,實時獲取模型的逐步輸出。這一技術已廣泛應用于實時問答、代碼生成等領域。本文將基…

【網絡產品經營】園區網絡

園區網絡的產品經營邏輯發生顯著變化,從傳統的“連接功能”導向轉向“業務體驗驅動”,并結合行業場景化需求、技術架構革新及智能化能力提升,形成多維度的產品策略升級。 一、技術架構變革:從多層復雜到極簡全光 傳統架構的瓶頸與…

EasyExcel 4.X 讀寫數據

文章目錄 EasyExcel與SpringBoot集成讀數據讀取數據的流程定義實體類簡單讀取自定義監聽器 讀取指定sheet和所有sheet多行頭讀取數據格式轉換列表數據實體類自定義轉換器自定義監聽器數據讀取 寫數據簡單數據寫出存儲到磁盤返回前端下載 寫出指定列寬,和數值精度丟失…

JVM內存管理<一>:Java內存異常問題排查

一、 內存溢出問題的排查 1. 使用工具 - jdk自帶 jmapvisualvm 2. 流程 堆轉儲: (1) 方法一:程序運行時,采用:jmap -dump:formatb,filed:\\data\\xxlJob.hprof 23300 進行堆文件的轉儲 (2) 方法二:在內存溢出的時候…

Android中Glide.with().load().into() 應付面試源碼解析

1. with(this):生命周期綁定 Glide.with(Activity/Fragment/Context) 核心機制:創建與 UI 生命周期綁定的 RequestManager 底層實現: 通過 RequestManagerRetriever 獲取單例 非 Application 上下文: 向 Activity/Fragment 添加…

#### es相關內容的索引 ####

倒排索引 結構 #### es倒排索引的結構 ####-CSDN博客 向量索引 結構應用 #### es向量檢索 的 結構及應用_es 向量 文本檢索-CSDN博客 ann算法 ann算法的種類有哪些,之間的區別,各自的適用場景-CSDN博客 地理信息索引 es地理信息索引的類型以及geo_po…

小飛電視:智能電視與移動設備的娛樂新選擇

在數字娛樂時代,人們對于影視內容的需求日益增長,不僅追求豐富多樣的節目選擇,還希望獲得便捷、個性化的觀看體驗。小飛電視正是這樣一款專為智能電視和移動設備設計的視頻娛樂應用,它憑借海量的影視資源、高清流暢的播放效果以及…