- 性能之道:分布式系統(tǒng)全棧性能優(yōu)化
- 于君澤 曹洪偉 李偉山 秦金衛(wèi) 陳龍泉
- 1184字
- 2025-02-21 17:02:48
1.4 軟件架構(gòu)的常用技術(shù)棧
如果缺乏良好的技術(shù)儲備,那么就很難設(shè)計出良好的軟件架構(gòu)。而當前新技術(shù)層出不窮,若想涉足每個技術(shù)領(lǐng)域,則幾乎是不可能的事情。怎么辦?我們可以嘗試從時空視角對軟件架構(gòu)中的常用技術(shù)棧進行分類。架構(gòu)設(shè)計的常用技術(shù)棧如圖1-2所示。

圖1-2 架構(gòu)設(shè)計的常用技術(shù)棧
圖1-2左側(cè)所示的是空間維度的相關(guān)技術(shù)。
? 操作系統(tǒng):確定了軟件架構(gòu)的環(huán)境邊界。
? 數(shù)據(jù)存儲:因為數(shù)據(jù)是軟件的核心,所以我們必須了解文件系統(tǒng)、對象存儲、關(guān)系型數(shù)據(jù)庫以及NoSQL數(shù)據(jù)庫等與數(shù)據(jù)存儲相關(guān)的技術(shù)。
? 網(wǎng)絡(luò)通信:這是一個覆蓋更廣泛的概念,至少要掌握7層協(xié)議模型和一些主流的通信協(xié)議,如DNS、TCP/IP、HTTP,以及不同網(wǎng)絡(luò)協(xié)議對網(wǎng)絡(luò)編程的影響。
? 框架與庫:與采用的編程語言密切相關(guān),不同的語言有不同的框架與庫,可選項眾多,需要從面向領(lǐng)域和場景的角度進行選擇。
? 安全:這里就不展開介紹了。
? 微服務:這是一種架構(gòu)方法,這里僅將微服務架構(gòu)作為典型代表進行介紹。服務的劃分與業(yè)務緊密相關(guān),服務獨立后需要考慮服務的發(fā)現(xiàn)和服務間的通信,最后是服務治理。
? 云服務:云服務的出現(xiàn)使得小團隊也能完成大事情,這里的云服務指的是基礎(chǔ)設(shè)施即服務(XaaS)。
? 大數(shù)據(jù)/AI:這必將成為工程師團隊的重要戰(zhàn)力,涉及專業(yè)知識、數(shù)學算法和計算環(huán)境。大數(shù)據(jù)的相關(guān)技術(shù)也是人工智能賦能軟件的基礎(chǔ)。
圖1-2右側(cè)所示的是時間維度的相關(guān)技術(shù),主要包括運行架構(gòu)(尤其是與性能相關(guān)的)的技術(shù),以及決策流程所涉技術(shù)和方法(尤其是與研發(fā)效率相關(guān)的)。
? 開發(fā)環(huán)境:工具對工作的重要性不言而喻,開發(fā)環(huán)境在工程效率中占據(jù)首要地位,也是開發(fā)架構(gòu)中的重要組成部分。
? 編程語言:不同的編程語言適用于不同的場景。一般來說,編程語言并沒有優(yōu)劣之分,不同的編程語言各有所長。
? 敏捷開發(fā):每個人都不是“單打獨斗”的,掌握協(xié)同工具以及支持CI/CD的工具鏈或者平臺,可以使團隊更加敏捷并提高整體的研發(fā)效率。此外,敏捷開發(fā)并不是以犧牲軟件質(zhì)量為代價的。
? DevOps:開發(fā)架構(gòu)中的一種組織方式。
? 業(yè)務與代碼:業(yè)務是軟件提供的能力,代碼是軟件的實現(xiàn)載體,都是軟件不可或缺的要素。
? 運行時調(diào)優(yōu):在運行架構(gòu)中,性能是諸多非功能性約束中的首要因素,直接影響用戶的體驗。首先,要從業(yè)務和代碼層面確保性能,而單元測試是必要的條件。在運行時進行調(diào)優(yōu),或者說是單機性能優(yōu)化時,通常從加載和依賴開始,包括代碼優(yōu)化和虛擬機優(yōu)化,如Java語言的VM調(diào)優(yōu)、Linux內(nèi)核參數(shù)調(diào)優(yōu)。
? 數(shù)據(jù)訪問:數(shù)據(jù)庫往往是整個系統(tǒng)的性能瓶頸,數(shù)據(jù)訪問必須具備高可用性,選擇和使用數(shù)據(jù)連接池是必備條件。
? 緩存:該技術(shù)是降低負載、提高系統(tǒng)性能的必備技術(shù),可以在客戶端、網(wǎng)絡(luò)側(cè)和服務端3個環(huán)節(jié)應用緩存技術(shù)。
? 均衡:指的是負載均衡,這同樣是一種以空間換時間的技術(shù)。
? 消息隊列:可以通過消息隊列來提升傳輸性能。
那么,為什么系統(tǒng)性能在諸多非功能性約束中排在第一位呢?下一章將對系統(tǒng)性能展開進一步討論。
- Maven Build Customization
- Learning SAP Analytics Cloud
- Wireshark Network Security
- PostgreSQL 11從入門到精通(視頻教學版)
- 深度學習:算法入門與Keras編程實踐
- MySQL數(shù)據(jù)庫基礎(chǔ)實例教程(微課版)
- C語言程序設(shè)計實驗指導 (第2版)
- D3.js By Example
- Building Serverless Web Applications
- Mastering Apache Storm
- Xcode 6 Essentials
- Java多線程并發(fā)體系實戰(zhàn)(微課視頻版)
- 零基礎(chǔ)學編程系列(全5冊)
- Android應用程序設(shè)計
- 透視C#核心技術(shù):系統(tǒng)架構(gòu)及移動端開發(fā)