系統架構設計知識體系總結

1.技術選型

1.什么是技術選型?

技術選型是指評估和選擇在項目或系統開發中使用的最合適的技術和工具的過程。這涉及考慮基于其能力、特性、與項目需求的兼容性、可擴展性、性能、維護和其他因素的各種可用選項。技術選型的目標是確定與項目目標相符合、能夠有效解決項目挑戰和目標的最佳技術。

技術選型的過程通常包括:

項目評估:了解項目的目標、需求、約束和范圍,以確定需要哪些技術。

研究:對不同技術、框架和工具進行徹底的研究,以滿足項目的潛在需求。

比較:評估每種技術選項的優勢和劣勢,考慮功能、性能、社區支持、可擴展性、安全性和成本等因素。

概念驗證:構建原型或進行小規模實驗,以驗證在項目中使用特定技術的可行性。

風險分析:識別與每個技術選擇相關的潛在風險,包括兼容性問題、學習曲線、廠商依賴性和未來支持等。

專家咨詢:尋求對所考慮技術有經驗的專家、同事或行業專業人士的建議。

長期可行性:評估所選技術的長期可行性和未來增長潛力,以確保其能夠在一段時間內保持相關性和支持。

成本考慮:評估實施和維護所選技術的初期和長期成本。

反饋與迭代:在選型過程中融入利益相關者、開發人員和用戶的反饋,以確保與其需求保持一致。

決策:基于對選項及其影響的全面理解做出明智的決策。

有效的技術選型至關重要,因為技術選擇可以顯著影響項目的成功。恰當選擇的技術可以簡化開發流程、提高性能、改善用戶體驗并促進長期維護。另一方面,糟糕的技術選型可能導致項目延遲、增加成本、兼容性問題甚至項目失敗。因此投入時間和精力進行研究、比較和選擇合適的技術是實現成功項目成果的基本步驟。

2.為什么要技術選型?

技術選型的重要性體現在以下幾個方面:

  1. 滿足項目需求: 不同的項目有不同的需求和目標。技術選型可以確保所選的技術和工具能夠滿足項目的功能、性能、安全性和可擴展性等需求。
  2. 提高開發效率: 選擇合適的技術可以加快開發過程,減少開發人員的工作量。適合項目的技術能夠提供更多的開發工具、庫和框架,從而簡化開發流程。
  3. 優化性能: 不同技術在性能方面有所差異。選擇性能良好的技術可以確保項目具有快速的響應時間和高效的運行。
  4. 降低風險: 經過充分的調研和驗證后,選擇合適的技術可以降低項目失敗的風險。避免了可能的技術問題和不穩定性。
  5. 適應未來發展: 選用能夠適應未來技術發展的技術,可以延長項目的壽命并減少技術遷移的成本。
  6. 提高用戶體驗: 選擇適合項目的技術可以提供更好的用戶體驗,包括更快的加載時間、友好的界面和響應式設計等。
  7. 降低成本: 正確選擇技術可以減少項目開發和維護的成本。合適的技術可以減少不必要的資源浪費。
  8. 避免廠商鎖定: 在技術選型時,考慮到技術的開放性和廠商支持,可以避免在未來被特定供應商限制。
  9. 可維護性: 選擇易于維護的技術可以確保項目在長期內保持穩定和可維護。
  10. 支持社區: 選擇有活躍社區的技術可以獲得更多支持、文檔和解決問題的資源。

綜上所述,技術選型是項目成功的關鍵因素之一。通過仔細考慮項目需求、調研不同的選項、驗證適合性并做出明智的決策,可以確保項目在開發、上線和維護過程中取得更好的成果。

3.技術選型案例

跨境電商企業在技術選型時選擇了Service Mesh Istio,但是在沒有經過充分調研和驗證的情況下,直接在開發環境中部署。這導致了一系列問題,包括項目延遲和長時間的適應期,最終影響了項目的正式上線。

從中提取出了一些重要的教訓:

  1. 充分調研: 在決定采用新技術之前,進行充分的調研,了解技術的特點、優勢、劣勢以及適用場景。不要輕率地選擇技術,而是確保它能夠滿足項目需求。
  2. 小規模嘗試: 在大規模采用之前,嘗試在小規模環境中引入新技術。這有助于發現潛在問題、了解技術的運作方式,并在實踐中積累經驗。
  3. 驗證和適應期: 對于新技術,預留一段適應期是很重要的。技術的實際表現可能與預期不同,因此給予項目團隊足夠的時間來適應和解決問題是必要的。
  4. 項目風險: 技術選型不僅需要考慮技術本身的特點,還需要考慮其可能引發的項目風險。不穩定的技術可能導致項目延遲、成本增加等問題。
  5. 經驗積累: 通過小規模引入和驗證,項目團隊可以積累關于技術的經驗,了解如何優化和解決潛在問題。

綜合來看,這個案例強調了在技術選型中謹慎而有計劃的重要性。不要急于采納新技術,而是通過調研、驗證和小規模試驗來確保技術能夠穩定地支持項目的成功實施。

2.系統設計方法

1. 前端

在這里插入圖片描述

2. 后端

在這里插入圖片描述

3. API gateway網關架構

在這里插入圖片描述

4. 7種分布式系統設計模式

在這里插入圖片描述

5. 6種API架構風格

在這里插入圖片描述

6. 常見應用架構模式

在這里插入圖片描述

7. api安全的12個要點

在這里插入圖片描述
在這里插入圖片描述

8. 提升api性能的7中方法

在這里插入圖片描述

9. 系統設計應遵循的原則

在這里插入圖片描述

10. Redis常見用法

在這里插入圖片描述

11. 25篇經典分布式架構設計論文

在這里插入圖片描述

12.DevOps&SRE

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

13. 5種部署方法

在這里插入圖片描述

3.微服務架構方法

1.微服務架構設計理論

1.NFR(非功能性需求):

在這里插入圖片描述

2.架構的構成元素:

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

3.軟件架構的4+1視圖模型

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

4.編寫FTGO應用架構文檔案例

4+1視圖架構:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
架構愿景(vision)
在這里插入圖片描述
系統上下文
在這里插入圖片描述
架構涉及的核心用戶故事和場景
在這里插入圖片描述在這里插入圖片描述

在這里插入圖片描述
非功能性需求:
在這里插入圖片描述
編寫服務清單文檔
在這里插入圖片描述
編寫服務領域模型文檔
在這里插入圖片描述
記錄架構決策
在這里插入圖片描述
總結
在這里插入圖片描述

2.微服務設計模式

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

4.云原生架構要點

0.架構演進的過程

在這里插入圖片描述

1.云原生應用設計的12個要素

在這里插入圖片描述

基準代碼:指代碼版本管理,基于同一個版本代碼開發
依賴:顯式的依賴
配置:代碼與環境配置分開
進程:應用以一個或多個進程進行運行,應用無狀態
端口綁定:端口與服務綁定
日志:日志以事件流的形式來看,方便處理

2. 云原生架構

在這里插入圖片描述

3.下一代云原生架構serviceMesh(服務網格化)

在這里插入圖片描述

微服務與Service Mesh 的區別和聯系:

在這里插入圖片描述

4.Docker

在這里插入圖片描述Docker原理
在這里插入圖片描述

5.k8s

在這里插入圖片描述
k8s架構
在這里插入圖片描述

5.參考資料

  • 《微服務架構設計模式》 & 代碼: https://github.com/microservices-patterns/ftgo-application
  • 微服務理論網站:
    https://microservices.io/
    https://eventuate.io/

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

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

相關文章

基于3DMax與Vray引擎的輕量級室內場景渲染實踐

歡迎踏入3DMAX室內渲染的沉浸式學習之旅!在這個精心設計的實戰教程中,我們將攜手揭開3DMAX與Vray這對黃金搭檔在打造現實室內場景時的核心奧秘。無論您是渴望入門的3D新手,還是追求極致效果的專業設計師,這里都將為您呈現從場景藍圖構建到光影魔法施加的完整技術圖譜。我們…

邏輯卷,vdo,(阿里加速器)

一、邏輯卷 10 20 30 1.邏輯卷的2個特點 (1)邏輯卷可以將多個分區或者磁盤整合成一個更大的邏輯磁盤,然后可以從邏輯磁盤上劃分出分區(邏輯磁盤的大小等于整合的物理磁盤大小之和。) (2)能…

檢索增強生成(2)本地PDF 本地嵌入模型

from langchain_community.document_loaders import PyPDFLoader from pathlib import Pathdef load_local_pdf(file_path):if not Path(file_path).exists():raise FileNotFoundError(f"文件 {file_path} 不存在!")loader PyPDFLoader(file_path)try:do…

安全守護:反光衣檢測技術的革新之路

視覺分析助力船上工人反光衣檢測 在現代工業生產與作業環境中,安全始終是首要考慮的因素。對于水上作業,如船舶維護、海上施工等場景,工人穿戴反光衣是預防事故、提高可見性的重要措施。然而,傳統的人工檢查方式不僅效率低下&…

【Scrapy】Scrapy教程8——處理子鏈接

通過前面幾篇文章,已經了解了如何去爬取網頁內容并存儲到數據庫,但是目前只是存儲了一個頁面的內容,現在想要獲取每篇文章鏈接內的文章內容,我們來看看怎么獲取。 生成新請求 首先我們肯定要先拿到鏈接,所以第一步都獲取文章標題和鏈接肯定少不了,然后再爬取獲取到到子…

Centos6配置yum源

Centos6配置yum源 為Centos6配置CentOS Vault源—防止yum源過期為Centos6配置epel源為Centos6配置ELRepo源---已ELRepo被官方清空Centos6安裝dockerdocker配置國內鏡像加速 為Centos6配置CentOS Vault源—防止yum源過期 參考:https://mirrors.ustc.edu.cn/help/cen…

“智改數轉”新風口,物聯網如何重構制造業競爭力?

一、政策背景 為深化制造業智能化改造、數字化轉型、網絡化聯接,江蘇省制定了《江蘇省深化制造業智能化改造數字化轉型網絡化聯接三年行動計劃(2025-2027年)》,提出到2027年,全省制造業企業設備更新、工藝…

制作Oracle11g Docker 鏡像

基于Linux系統&#xff0c;宿主主機要設置如下環境變量&#xff0c;oracle為64位版本 dockerfile中需要的數據庫安裝包可從csdn下載內找到 #!/bin/bash # 在宿主機上運行以設置Oracle所需的內核參數 # 這些命令需要root權限cat > /etc/sysctl.d/99-oracle.conf << EO…

從GTC2025首次量子日看英偉達量子AI融合算力網絡前景與趨勢

GTC2025 Quantum Day 最新內容全部匯總: 技術名稱描述合作伙伴/開發者應用場景/目標量子模擬器優化方案NVIDIA與IonQ、D-Wave合作,針對量子模擬器進行性能優化,提升量子計算任務效率。IonQ、D-Wave量子算法開發、復雜系統模擬混合量子-經典計算架構結合量子計算與經典GPU加速…

UE4學習筆記 FPS游戲制作12 添加第二把槍,制作槍的父類,動態生成物體,切換武器

我們添加一個發射器類型的槍 我們目前有了一個Rifle的槍械藍圖&#xff0c;我們在添加Launcher時&#xff0c;需要為他們添加一個父類&#xff0c;將公共方法放到父類里&#xff0c;方法體由子類實現 添加父類 方法1 新建一個Gun的藍圖&#xff0c;Gun繼承Actor&#xff0c;…

【原創首發】開源基于AT32 SIP/VOIP電話

前言 本次為了反饋各位粉絲的關注&#xff0c;特此分享 AT32_VOIP 工程&#xff0c;此功能其實跟我之前發過的《STM32F429的VOIP功能》是一樣的&#xff0c;只是用了AT32F437。 其實那個工程是一個比較Demo中的Demo&#xff0c;很多功能和硬件依賴性太大了。后面項目中發現AT…

通俗易懂搞懂@RequestParam 和 @RequestBody

&#x1f4cc; 博主簡介: &#x1f4bb; 努力學習的 23 級科班生一枚 &#x1f680;&#x1f3e0; 博主主頁 &#xff1a; &#x1f4ce; 灰陽陽&#x1f4da; 往期回顧 &#xff1a;Session和Cookie我不允許你不懂&#x1f4ac; 每日一言&#xff1a; 「流水不爭先&#xff0c…

dubbo版本與分組

Dubbo服務中&#xff0c;接口并不能唯一確定一個服務&#xff0c;只有 接口分組版本號 的三元組才能唯一確定一個服務。 當同一個接口針對不同的業務場景、不同的使用需求或者不同的功能模塊等場景&#xff0c;可使用服務分組來區分不同的實現方式。同時&#xff0c;這些不同實…

RAG現有技術方案

RAG現有技術方案 一、現有技術方案的核心問題 檢索質量不足 挑戰:傳統RAG系統依賴單輪檢索,難以應對智能電網的海量異構數據(如傳感器讀數、控制參數),導致檢索結果相關性低、覆蓋不全。案例:BM25稀疏檢索在處理長文本或專業術語時,易遺漏語義關聯;BGE等稠密檢索模型對…

redis MISCONF Redis is configured to save RDB snapshots報錯解決

直接上解決方案 修改redis配置文件 stop-writes-on-bgsave-error no 重啟redis

個人學習編程(3-22) leetcode刷題

連續子數組&#xff1a;&#xff08;難&#xff09; 示例 1: 輸入: nums [0,1] 輸出: 2 說明: [0, 1] 是具有相同數量 0 和 1 的最長連續子數組。 示例 2: 輸入: nums [0,1,0] 輸出: 2 說明: [0, 1] (或 [1, 0]) 是具有相同數量0和1的最長連續子數組。 需要理解的知識&a…

希爾排序

希爾排序是一種改進的插入排序算法&#xff0c;它通過將原始數據分成多個子序列來改善插入排序的性能&#xff0c;每個子序列的元素間隔為 d&#xff08;增量&#xff09;。隨著算法的進行&#xff0c;d 逐漸減小&#xff0c;最終減為 1&#xff0c;此時整個序列就被排序好了。…

JavaScript基礎-DOM事件流

在Web開發過程中&#xff0c;理解和掌握DOM事件流是實現高效交互的關鍵。DOM事件流描述了當一個事件發生時&#xff0c;它在文檔樹中的傳播路徑。了解事件流的概念有助于我們更精確地控制事件處理邏輯&#xff0c;避免不必要的行為&#xff0c;并提升用戶體驗。本文將深入探討D…

C語言基礎知識07---預編譯模塊化

目錄 預編譯指令 1.1 編譯流程 1.2 文件包含 1.3 條件編譯 1.4 宏定義 1.5 無參宏 1.6 typedef和無參宏的區別 1.7 有參宏 1.8 函數與有參宏的區別 1.9 取消宏定義 #undef 1.10 符合使用 模塊化操作 1.1 H文件&#xff1a;固定模版 1.2 C文件&#xff1a;源文件-…

自由學習記錄(46)

CG語法的數據類型 // uint : 無符號整數&#xff08;32位&#xff09; // int : 有符號整數&#xff08;32位&#xff09; // float : 單精度浮點數&#xff08;32位&#xff09;&#xff0c;通常帶后綴 f&#xff08;如 1.0f&#xff09; // half : 半精度浮…