設計心得——如何架構選型

一、架構的作用

可能對于很多的公司,其實架構本身的重要性并不大。大家一定明白這回事,架構在實際的開發,在大多數的場景下其實用處并沒有書籍和資料中講的那樣重要,甚至是可有可無。這樣講是不有些可笑?是不是覺得挺意外的?但這就是事實。大家可以看看網上對架構師的一些抨擊就明白了。那么為什么會這樣呢?有以下幾個原因:

  1. 大多數的公司和和大多數的項目都規模較小,架構的優勢無法體現或者說體現不明顯。這就導致架構的意義無法被大家重視。一個只有幾千行代碼的小程序,大多數情況下,架構能有多大的優勢?
  2. 現實的工期太短。往往很多項目不光規模小,開發時間還特別緊,都不愿意甚至不安排架構設計
  3. 開源的依賴。很多公司,特別是中小公司,往往習慣于找個開源的項目,在上面改改,然后就推出了。開源的架構就是項目的架構(沒毛病)
  4. PPT架構師的誤導。在一些公司,特別是大廠中,存在著不少的PPT架構師,他們的主要作用就是把各種高大上的技術和架構以及思想雜合(而不是有機的融合),搞一個看上去很炫但實際沒啥用的架構。它們的目的不是做設計,是為了做宣傳
    那架構到底有沒有用呢?當然有用,而且非常大。項目規模越大,軟件越是復雜,架構越能體現它的優秀之處。不過,不能因循守舊,僵化應用從而形成本本主義和教條主義。要因地制宜,實事求是來進行架構的選型和設計。

二、架構的選型

假如面臨一個項目由自己來確定一個架構,如果這是第一次自主進行架構設計,那么第一件事,就是在需求確定的情況下,如何進行架構的選型。正如上面所分析的,要因地制宜,實事求是的進行選擇。這話說得,正確而沒啥用。那就說一點有用的,來解釋下這句話。

  1. 根據項目的大小來選擇
    這個最容易選擇,如果一個規模較小的程序,比如幾千行代碼或功能很少的程序。架構的意義一般來說不大。怎么簡單怎么來,怎么方便怎么干。
  2. 要根據需求的特點來選擇
    這個很容易理解,以一個網站為例,并發是多少?數據量有多大?數據讀多還是寫多或者都多等等,從而確定相關的架構選型。舉一個簡單的例子,公司只是做一個展示形象的網站,那基本就可以不考慮架構,做得漂亮一些就可以了。如果數據量很在并且讀多寫少,就可以使用緩存架構,使用Redis或其它內存型數據庫。
  3. 根據公司的開發人員的情況來選擇
    這個就是根據開發人員的現在技術能力和水平和選型,比如都是菜鳥,如無必要就不必上一些微服務之類的復雜的架構。另外使用消息架構時,公司的開發人員更熟悉哪個就用個。最典型的就是網絡開發,是使用同步還是異步架構?同步簡單但異步對開發人員能力要求高。
  4. 根據適當的擴展預期來選擇
    公司的業務在未來兩到三年,會有一個什么樣的發展,公司的發展方向是什么?就可以適當的選用一些容易擴展的架構來實現設計。比如公司是做軟硬件一起的項目,那么軟件就需要把未來幾年可能的公司的相關的硬件都要預留一些擴展,比如使用工廠+庫的架構設計。
  5. 根據項目的總成本確定
    比如公司的可投入的人力成本和時間成本以及相關的軟硬件成本等。舉個例子,公司開發人員挺多,技術水平也高,但公司只給這個項目一個人,時間還緊,錢也少。就得考慮使用簡單的架構先完成功能。然后有時間再進行重構甚至重寫。

但實際情況是,往往一個項目不是上面一種條件確定的,它一定是全部或幾種共同來確定架構的選型。同時,這其中可能每個條件的權重還有所不同,甚至可能隨著時間這些權重還是變化,這就需要架構師來動態進行調整了。

三、選型的原則和驗證

在上面分析了很多架構選型的方法,那么如何應用他們呢?有以下幾個原則,當然這個原則是個人推薦,不是書籍資料上的公認的,算是私有原則:
1、如果架構選型可大可小,就選小
比如開發一個網站,從單體架構到垂直架構到分布式到微服務等等,選擇的話,在條件允許的情況下,越簡單越好。不要問為什么。
2、如果架構選型可保守可適度可激進,盡可能選擇保守。
這里說的是實際的項目而不是一些實驗性質的或半實驗性質的。說白了就是能簡單則簡單,不要自己給自己找麻煩。等多做幾次架構設計就都明白了
3、如果對未來擴展模楞兩可,盡量不選擴展型架構
這種事情,不多說,明白的都明白,不明白的做幾回就明白了。說句真心的,大概率是用不上的
4、如果可控范圍內,設計者想選用新架構新技術就用
老人常說:“誰拿鋤誰定苗”,想怎么舒服就怎么來
5、如果多種選擇可選擇,哪個方便哪個簡單選哪個
不要自己難為自己,也不要難為手下兄弟們
當然,這些私有原則不能拿到臺面上,但實際是很有用處的,至于對錯,見仁見智吧。

最后,如何能夠認為選型是正確的呢?其實就是項目完成的復盤結果,如果基本達到項目的目的,選型就算成功了。對,基本達到項目要求,或者說達到項目最低要求就算成功了。很多項目,包括大公司也一樣,在整個開發過程,它們的架構會有一個不斷調整的過程。所以,如一個架構基本能堅持到最后并達到了基本的需求,就算成功了。

四、總結

越是抽象,越是靈活。所以做為架構的選型和調整,目的都只有一個,服務于最終的項目成果。架構選擇既要靈活又要符合實際情況,如果能找一個整體的平衡點順利的實現架構目標,那么這個架構就是一個不錯的架構。

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

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

相關文章

vba學習系列(12)--反射率通過率計算復雜度優化25/8/17

系列文章目錄 文章目錄系列文章目錄前言一、反射率通過率1.整體通過率2.整體通過率3.客戶工藝匹配4.機臺通過率分析5.鏡片通過率罩次分析分析1.1分析1.26.鏡片通過率圈數分析分析1.1分析1.28.鏡筒通過率圈數分析分析1.1分析1.29.鏡筒通過率罩次分析分析1.2總結前言 一、反射率通…

Microsoft WebView2

運行效果 代碼如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Form…

GitCode 疑難問題診療:全方位指南

一、問題診斷與解決框架1.1 通用問題排查流程在面對 GitCode 問題時,遵循一套科學的排查流程至關重要。首先,詳細記錄問題出現時的具體操作步驟與相關報錯信息,這有助于精準定位問題根源。例如,若在執行git push命令時出現錯誤&am…

AMD Ryzen AI Max+ 395四機并聯:大語言模型集群推理深度測試

本文介紹使用四塊Framework主板構建AI推理集群的完整過程,并對其在大語言模型推理任務中的性能表現進行了系統性評估。該集群基于AMD Ryzen AI Max 395處理器,采用mini ITX規格設計,可部署在10英寸標準機架中。 Jeff Geerling大佬還開發了名…

深度學習·GFSS

GFSS General Few-Shot Segmentation 任務實現方式與zero-shot有所不同本篇論文只涉及同一個模態(圖像),訓練過程中,novel class有幾個圖像提供,提供k個就稱之為k-shot。先從圖像中提取class prototype,然后這個原型向量作為查詢&…

Transformer架構的數學本質:從注意力機制到大模型時代的技術內核

系列專欄推薦:零基礎學Python:Python從0到100最新最全教程 深入淺出講解神經網絡原理與實現,從基礎的多層感知機到前沿的Transformer架構。包含完整的數學推導、代碼實現和工程優化技巧。 寫在前面:為什么理解Transformer如此重要…

最新微信小程序一鍵獲取真實微信頭像和昵稱方法

使用公開免費插件,快速實現獲取用戶頭像和昵稱,已附uniapp、微信開發工具開發詳細教程。前言為了保護用戶隱私,wx.getUserInfo、wx.getUserProfile都沒法獲取到用戶頭像和昵稱了,只能通過設計用戶主動選擇/輸入形式,操…

路由器配置之模式

文章目錄配置路由器時,有一個模式選擇最佳實踐各個選項的區別11b only11g only11n only11bg mixed11bgn mixed配置路由器時,有一個模式選擇 最佳實踐 ? 追求速度:選 11n only(需所有設備支持)。 ? 兼容性優先&…

評測系統構建

合成數據更“科研驅動”,強調 controllability 和 generalization evaluation: 之前往往直接采用經典數據集如OGB和OGB-large提供的經典數據集和數據劃分思路 該思想從現有真實數據中學習參數,再構造類似但分布略異的數據集,驗證模…

【計算機網絡面試】TCP/IP網絡模型有哪幾層

參考: 2.1 TCP/IP 網絡模型有哪幾層? | 小林coding | Java面試學習 以下為自己做的筆記 應用層 專注于為用戶提供應用功能,如HTTP、FTP、Telnet、DNS、SMTP等。應用層不關心用戶是怎么傳輸的,當兩個設備間的應用需要通信時&…

3 種方式玩轉網絡繼電器!W55MH32 實現網頁 + 阿里云 + 本地控制互通

目錄 1 前言 2 項目環境 2.1 硬件準備 2.2 軟件準備 2.3 方案圖示 3 例程修改 4 功能驗證 5. 總結 1 前言 HTTP(超文本傳輸協議,HyperText Transfer Protocol)是一種用于分布式、協作式、超媒體信息系統的應用層協議, 基于 TCP/IP…

第四篇:科技封鎖與文化滲透篇——T-501 與 M-208 雙引擎布局(節奏增強版)

科技封鎖與文化滲透篇——T-501 與 M-208 雙引擎布局(節奏增強版) 引子 在全球競爭中,光有資本和市場遠遠不夠。 ? 科技封鎖(T-501):通過技術標準、專利網絡、供應鏈控制,讓對手進入成本極高的…

python實現梅爾頻率倒譜系數(MFCC) 除了傅里葉變換和離散余弦變換

語音識別第4講:語音特征參數MFCC https://zhuanlan.zhihu.com/p/88625876/ Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What’s In-Between https://haythamfayek.com/2016/04/21/speech-processing-…

springBoot+knife4j+openapi3依賴問題參考

pom文件附帶版本<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.12</version></parent><dependencies><!-- SpringDoc starter --><d…

XML DOM 高級

XML DOM 高級 引言 XML DOM(Document Object Model)是用于解析和操作XML文檔的一種標準,它允許開發者通過編程方式訪問和修改XML文檔的內容。本文將深入探討XML DOM的高級特性,包括XML解析、節點操作、事件處理以及性能優化等,幫助讀者全面理解并掌握XML DOM的高級應用。…

「第18講 內容生成應用場景與多語言支持」AI Agent開發與應用:基于大模型的智能體構建

第18講核心內容概述內容生成應用場景營銷文案生成&#xff1a;基于產品特征自動生成廣告語、社交媒體文案&#xff0c;支持個性化推薦和A/B測試優化。新聞報道輔助&#xff1a;快速生成財經、體育等領域的結構化新聞摘要&#xff0c;結合實時數據更新內容。教育內容定制&#x…

金融業務安全增強方案:國密SM4/SM3加密+硬件加密機HSM+動態密鑰管理+ShardingSphere加密

國密SM4/SM3 SM4&#xff1a;對稱加密算法&#xff0c;分組長度128位&#xff0c;密鑰長度128位&#xff0c;適用于數據加密&#xff08;如數據庫字段、通信報文&#xff09;】 加密存儲&#xff1a;用戶身份證號、銀行卡號等敏感字段&#xff08;配合ShardingSphere等中間件自…

Chaos Vantage 2.8.1 發布:實時探索與材質工作流的全新突破

作為行業領先的實時光線追蹤渲染器&#xff0c;Chaos Vantage再添利器。2.8.1版本更新聚焦材質工作流、硬件效率與API拓展&#xff0c;為建筑可視化、動畫制作等領域帶來更流暢的操作體驗與更深層的定制化可能。 一、核心功能更新&#xff1a;讓創作更順暢 完整V-Ray材質節點支…

【集合框架List接口】

&#x1f449; 用 ArrayList 存數據&#xff0c;結果插入時卡住了&#xff1f; &#x1f449; 想刪除某個元素&#xff0c;卻發現索引錯亂了&#xff1f; &#x1f449; 不知道該用 ArrayList 還是 LinkedList&#xff0c;選錯了導致性能瓶頸&#xff1f;一、List 是什么&#…

《棒球百科》奧運會取消了棒球·野球1號位

?? 奧運會棒球消失&復活之謎&#xff01;深度揭秘全球體育權力游戲 ??? 2008年為何被踢出奧運&#xff1f;(Why Removed in 2008?)MLB的致命抵制? 奧運賽期撞車MLB常規賽白熱化階段&#xff01;? 球隊老板拒放巨星&#xff1a;2000年悉尼奧運美國隊僅剩"替補陣…