【實(shí)踐】網(wǎng)絡(luò)貨運(yùn)平臺的技術(shù)架構(gòu),其戰(zhàn)略層和戰(zhàn)術(shù)層設(shè)計原則,避免走哪些彎
時間:2023-03-17 01:52:01 | 來源:電子商務(wù)
時間:2023-03-17 01:52:01 來源:電子商務(wù)
市面上很多網(wǎng)絡(luò)貨運(yùn)平臺,可以應(yīng)付部分省份的資質(zhì)申報。但在運(yùn)營層面是否好用,是否能靈活的、低成本的二次開發(fā),選擇適用的技術(shù)架構(gòu)是關(guān)鍵。本文適合已經(jīng)獲得網(wǎng)絡(luò)貨運(yùn)資質(zhì)的企業(yè)管理層,技術(shù)總監(jiān)類崗位閱讀。
在網(wǎng)絡(luò)貨運(yùn)領(lǐng)域,技術(shù)架構(gòu),是將貨運(yùn)的監(jiān)管需求和業(yè)務(wù)需求轉(zhuǎn)變?yōu)榧夹g(shù)實(shí)現(xiàn)的過程。技術(shù)架構(gòu)解決的問題包括了如何進(jìn)行純技術(shù)層面的分層、開發(fā)框架選擇、語言選擇(這里以 JAVA 語言為主)、涉及到各自非功能性需求的技術(shù)點(diǎn)(安全、性能、大數(shù)據(jù))。技術(shù)架構(gòu)是確定組成應(yīng)用系統(tǒng)實(shí)際運(yùn)行的技術(shù)組件、技術(shù)組件之間的關(guān)系,以及部署到硬件的策略。本文參考了,菜鳥風(fēng)控系統(tǒng)的網(wǎng)絡(luò)技術(shù)專家胡斌的觀點(diǎn),以及結(jié)合筆者在網(wǎng)絡(luò)貨運(yùn)平臺的開發(fā)經(jīng)驗(yàn),做技術(shù)框架的簡單說明。
技術(shù)架構(gòu)面臨最大的挑戰(zhàn)是“不確定性”。在技術(shù)架構(gòu)上,很多時候就會面臨這種選擇。是要選擇業(yè)界最新的技術(shù)?還是選擇團(tuán)隊最熟悉的技術(shù)?如果選擇最新的技術(shù),遇到新技術(shù)出了問題怎么解決?如果選擇目前熟悉的技術(shù),后續(xù)技術(shù)演進(jìn)怎么辦?這些都是架構(gòu)師在做技術(shù)架構(gòu)過程中需要考慮的。
貨運(yùn)業(yè)務(wù)在千變?nèi)f化、技術(shù)在層出不窮,沒有一套通用的技術(shù)架構(gòu)模式來適用所有的系統(tǒng)。那么,我們?nèi)绾伪WC在做技術(shù)架構(gòu)時,能夠?qū)崿F(xiàn)一個穩(wěn)定、出色的系統(tǒng)。面對這些“不確定性”時的架構(gòu)設(shè)計問題,這里從戰(zhàn)略和戰(zhàn)術(shù)兩個層面來提供一些設(shè)計原則。戰(zhàn)略層提供的是技術(shù)架構(gòu)的方法和思路,屬于頂層設(shè)計;戰(zhàn)術(shù)層提供的是技術(shù)架構(gòu)的技術(shù)實(shí)踐方式,更偏向詳細(xì)設(shè)計。
首先,簡單說明一個技術(shù)框架選取不夠謹(jǐn)慎的真實(shí)案例,這也是一次在技術(shù)選型層面走彎路的典型分享:
(1)起因:筆者在2017年開始,幫公司招聘了大約30人的研發(fā)團(tuán)隊,專注無車承運(yùn)人平臺(2020年開始,更名:網(wǎng)絡(luò)貨運(yùn))的研發(fā)。最早采用c#開發(fā)語言,以及.NET Core的軟件開發(fā)框架,app重點(diǎn)采用RN混合開發(fā)框架。
(2)問題:近4年的實(shí)踐,也服務(wù)了200多家網(wǎng)絡(luò)貨運(yùn)企業(yè)。在部分企業(yè),獲得網(wǎng)絡(luò)貨運(yùn)資質(zhì)后,開始正式做網(wǎng)絡(luò)貨運(yùn)的運(yùn)營。在實(shí)踐過程中,月度運(yùn)費(fèi)高于1億以上,就會出現(xiàn)各類技術(shù)問題,比如:并發(fā)量問題、系統(tǒng)卡頓、數(shù)據(jù)丟失等問題。嚴(yán)重影響,中大型客戶,在實(shí)際運(yùn)營中的體驗(yàn)。
(3)解決:即便技術(shù)團(tuán)隊,無數(shù)夜晚的加班,用心修復(fù)BUG,近10次的技術(shù)重構(gòu),500次以上的更新迭代,依然無法根除系統(tǒng)不穩(wěn)定的情況。這類問題,我們不是最嚴(yán)重的,但這也是很多技術(shù)供應(yīng)商,共同面臨的問題。導(dǎo)致該問題的核心原因:最初的團(tuán)隊,只擅長.net相關(guān)的技術(shù),對其他技術(shù)無法把控。但.net相關(guān)開發(fā)人員,在成都市場,乃至北上廣深,都面臨轉(zhuǎn)型的情況,出現(xiàn)牛人不好找,新人不好用的局面。
(4)反思:這個彎路,無論是網(wǎng)絡(luò)貨運(yùn)技術(shù)供應(yīng)商的同行,還是即將采購平臺源碼做二次開發(fā)的企業(yè)客戶,都應(yīng)該避免。不是每一個人都舍得棄用,已經(jīng)相對熟悉的方案;棄用,就代表著重頭開始。棄之可惜,食之無味,是最難受的。
新的改變:基于這類情況,筆者于2020年12月再次組建一個25人的研發(fā)團(tuán)隊,重新研發(fā)一套全新的網(wǎng)絡(luò)貨運(yùn)平臺,以滿足新老企業(yè),在運(yùn)營層面穩(wěn)定性的需求。新的技術(shù)總監(jiān),結(jié)合以往對物流供應(yīng)鏈、鋼鐵大數(shù)據(jù)、OA辦公的研發(fā)經(jīng)驗(yàn),重新選了新的開發(fā)框架。PC端,采用java開發(fā)語言;app采用flutter框架開發(fā);小程序采用uniapp的跨端開發(fā)框架。(技術(shù)框架的選型說明有6頁,本段僅簡單提一下)
Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個特征。Java的優(yōu)勢,學(xué)過計算機(jī)的都大致理解,該部分不需要重點(diǎn)闡述。app采用的技術(shù)框架,簡單對比一下 :
RN框架(Facebook開源)
(1)React Native兼容性較差,版本升級難度大;
(2)重點(diǎn)支持安卓和ios。
flutter框架(Google開源)
(1)谷歌在創(chuàng)建flutter框架,也重點(diǎn)參考了RN的情況,產(chǎn)生靈感和開發(fā)思路,避免兼容性差,版本升級成本高等因素。
(2)支持安卓,ios,web,mac,window,嵌入式。
新的結(jié)果:平臺高速的版本迭代,以及客戶實(shí)踐證明:無論新舊技術(shù),適合為王,可掌控為皇!不到1年時間,在沒有做任何廣告推廣的前提下,新的平臺逐步征服了中大型專業(yè)客戶,在競爭激烈的網(wǎng)絡(luò)貨運(yùn)技術(shù)供應(yīng)商市場中,贏得了一席之地。平臺的合規(guī)性,不僅體現(xiàn)在業(yè)務(wù)層面的管理,也體現(xiàn)在功能細(xì)節(jié)的差異性。運(yùn)營層面的多元化,需要軟件產(chǎn)品,逐步適配。摒棄4年的開發(fā)經(jīng)驗(yàn),優(yōu)勝劣汰,吸取以往的經(jīng)驗(yàn),避免走了很多彎路。以下簡單說明一下,技術(shù)框架戰(zhàn)略層的設(shè)計原則。
戰(zhàn)略層設(shè)計原則
戰(zhàn)略層的設(shè)計原則就是:合適原則、簡單原則、演化原則。
1.1 合適原則
技術(shù)人員有一種很強(qiáng)的技術(shù)情懷,就是在做設(shè)計的過程中,很希望挑戰(zhàn)新的技術(shù)、在項目中采用最新的框架、或者自己重造一個比業(yè)界的還要牛的輪子。這樣才能夠顯示出自己的優(yōu)秀,以至于不讓自己顯得那么平庸。比如,在項目中重新造一個能夠解決億萬級數(shù)據(jù)的新的 xx 流式計算技術(shù),比 flink 還要牛一百倍;又或者在項目中使用最新的 xx 技術(shù),能讓系統(tǒng)承擔(dān)億級用戶的訪問。
如果在設(shè)計過程中一味追求新技術(shù),往往失敗的可能性很高。因素:
(1)沒有那么多人,卻想干那么多活
現(xiàn)實(shí)環(huán)境中我們一個業(yè)務(wù)團(tuán)隊可能就十幾個人,項目工期短、上線要求快。在這種情況下,如果還要抽調(diào)幾個人去研究、搭建、維護(hù)新的技術(shù)框架,對于項目勢必會造成延期的影響。
(2)沒有那么多積累,卻想一步登天
很多業(yè)界領(lǐng)先的方案,不是一幫優(yōu)秀的開發(fā)加在一起,加班加點(diǎn)就能做出來的。而是經(jīng)過幾年時間的發(fā)展才逐步完善和初具規(guī)模。如果我們也想自己做一套類似的技術(shù),不是說不可能。我們需要集合當(dāng)下的技術(shù)實(shí)力、技術(shù)積累,做出適合自己團(tuán)隊情況的技術(shù)評估。
(3)沒有最新,只要最合適
所有新的技術(shù)剛出來都是打著比舊技術(shù)擁有更加出色的性能、提供更加優(yōu)秀的擴(kuò)展性。是不是使用新技術(shù),就能解決一切問題了?新技術(shù)的出道,勢必是解決某一場景下的問題,并不是一味萬能良藥。只有了解清楚每種技術(shù)的產(chǎn)生背景,適用場景,才能出一個對自己項目最優(yōu)的選擇。技術(shù)選型沒有最新,只有最合適。但無論選用哪種技術(shù)框架,市面上這類人才需能把控,且能招聘到,才是基本前提。否則再先進(jìn)或陳舊的技術(shù),一旦團(tuán)隊換人,找不到合適的人才,就無從適應(yīng)。
總結(jié)一下,合適原則就是適合優(yōu)于業(yè)界領(lǐng)先。
1.2 簡單原則
我們總是希望能將我們的軟件設(shè)計的精美、宏大,這樣才能彰顯我們系統(tǒng)的復(fù)雜度和難度。我們是不是會遇到這樣的場景,在做設(shè)計方案的時候,如果一個解決方案很簡單,而且能很快的滿足需求。在評審方案時,就會有人覺得這個方案是不是太簡單了,沒有什么技術(shù)含量,是不是需要再設(shè)計的復(fù)雜一點(diǎn)。
系統(tǒng)是不是一定要設(shè)計的復(fù)雜?在回答這個問題前,我們先看下軟件領(lǐng)域的結(jié)構(gòu)復(fù)雜性和邏輯復(fù)雜性。
(1)結(jié)構(gòu)復(fù)雜性
結(jié)構(gòu)復(fù)雜的系統(tǒng)有兩個特點(diǎn):第一,組成的組件數(shù)量很多;第二,這些組件之間的關(guān)系很復(fù)雜。如下圖:
圖 1
結(jié)構(gòu)上的復(fù)雜性存在的第一個問題是,組件越多,就越有可能其中某個組件出現(xiàn)故障,從而導(dǎo)致系統(tǒng)故障。假設(shè)組件的故障概率是 1%(有 1% 的時間不可用),那么 2 個組件的系統(tǒng)可用性是 99%*99%=98%,5 個組件的系統(tǒng)可用性是 99%*99%*99%*99%*99%=95%,兩者相差 3%。說明組件越多,系統(tǒng)穩(wěn)定性就越差。
結(jié)構(gòu)上的復(fù)雜性存在的第二個問題是,某個組件改動,會影響關(guān)聯(lián)的組件。比如上圖中 C 組件發(fā)生改動,會影響 A、B、D,而 A 又會影響 E。這樣就會形成一連串的多比諾效應(yīng)。
(2)邏輯復(fù)雜性
意識到結(jié)構(gòu)復(fù)雜性的問題后,只要減少組件就能讓系統(tǒng)結(jié)構(gòu)變簡單?這樣做還是行不通,原因在于除了結(jié)構(gòu)的復(fù)雜性,還有邏輯的復(fù)雜性,如果一個組件的邏輯太復(fù)雜,通用會帶來問題。
我們試想一下,把淘寶的所有功能都在一個組件中實(shí)現(xiàn),可以想象這個系統(tǒng)要有多龐大:幾百人維護(hù)一個系統(tǒng)、代碼分支幾十個、需求變更應(yīng)接不暇、不同分支的回歸測試、修改一段代碼可能影響整個系統(tǒng)的運(yùn)行等等。這些場景相信大家都不希望看到的。
總結(jié)一下,簡單原則就是大道至簡。
1.3 演化原則
軟件架構(gòu)和建筑架構(gòu)很多相同的地方,架構(gòu)這個詞也是從建筑領(lǐng)域借鑒過來的。比如,軟件架構(gòu)描述的是系統(tǒng)的結(jié)構(gòu)、以及各模塊之間的關(guān)系。而建筑結(jié)構(gòu)描述的是一幢建筑的結(jié)構(gòu),以及建筑內(nèi)部各部件如何有機(jī)的組成。
但是,軟件架構(gòu)和建筑架構(gòu)有一個本質(zhì)上的差異:那就是建筑一旦完成就不會再變,而軟件卻需要根據(jù)業(yè)務(wù)的發(fā)展不斷的變化。對于建筑來說,永恒是主題;而對于軟件來說,變化才是主題。
如果沒有意識到“軟件架構(gòu)需要根據(jù)業(yè)務(wù)發(fā)展不斷變化”這個本質(zhì),在做架構(gòu)設(shè)計的時候很容易陷入一個誤區(qū):試圖一步到位設(shè)計一個軟件架構(gòu),期望不管業(yè)務(wù)如何變化,架構(gòu)都穩(wěn)如磐石。如果是按照這樣的目標(biāo)是設(shè)計,一開始上來就做出一套看似是終極的方案,投入龐大的資源做各種預(yù)測、分析。結(jié)果是投入巨大的資源、開發(fā)周期漫長,最終跌跌撞撞落地的系統(tǒng),卻發(fā)現(xiàn)已經(jīng)無法很好的滿足現(xiàn)有的業(yè)務(wù)。
所以技術(shù)架構(gòu)設(shè)計需要一個過程:
首先,要滿足當(dāng)前的業(yè)務(wù)需求進(jìn)行技術(shù)架構(gòu)設(shè)計
其次,架構(gòu)要不斷地在實(shí)際應(yīng)用過程中迭代,保留優(yōu)秀的設(shè)計,修復(fù)有缺陷的設(shè)計,改正錯誤的設(shè)計,去掉無用的設(shè)計,使架構(gòu)逐漸完善。
第三,當(dāng)業(yè)務(wù)發(fā)生變化時,架構(gòu)要擴(kuò)展、重構(gòu)、甚至重寫;代碼也許會重寫,但有價值的經(jīng)驗(yàn)、教訓(xùn)、邏輯、設(shè)計卻可以在新架構(gòu)中延續(xù)。
總結(jié)一下,演化原則就是演化優(yōu)于一步到位。
戰(zhàn)術(shù)層設(shè)計原則
戰(zhàn)術(shù)層的設(shè)計原則分為 3 部分:高并發(fā)原則、高可用原則、業(yè)務(wù)設(shè)計原則。這些原則是對技術(shù)架構(gòu)設(shè)計過程中提供詳細(xì)的指導(dǎo)思路,幫助你做技術(shù)選型、技術(shù)拆分。
2.1 高并發(fā)原則
設(shè)計高并發(fā)的系統(tǒng),需要考慮以下幾個方面的設(shè)計:無狀態(tài)、拆分、服務(wù)化、消息隊列、數(shù)據(jù)異構(gòu)、緩存。
(1)無狀態(tài)
- 無狀態(tài)應(yīng)用,便于水平擴(kuò)展。
- 有狀態(tài)配置可通過配置中心實(shí)現(xiàn)無狀
(2) 拆分
- 系統(tǒng)維度:按照系統(tǒng)功能、業(yè)務(wù)拆分,比如購物車、結(jié)算、訂單等。
- 功能維度:對系統(tǒng)功能再做細(xì)粒度拆分。
- 讀寫維度:根據(jù)讀寫比例特征拆分;讀多,可考慮多級緩存;寫多,可考慮分庫分表。
- AOP 維度:根據(jù)訪問特征,按照 AOP 進(jìn)行拆分.
- 模塊維度:對整體代碼結(jié)構(gòu)劃分 web、service、dao。
(3)服務(wù)化
- 服務(wù)化演進(jìn):進(jìn)程內(nèi)服務(wù) - 單機(jī)遠(yuǎn)程服務(wù) - 集群手動注冊服務(wù) - 自動注冊和發(fā)現(xiàn)服務(wù) - 服務(wù)的分組、隔離、路由 - 服務(wù)治理。
- 考慮服務(wù)分組、隔離、限流、黑白名單、超時、重試機(jī)制、路由、故障補(bǔ)償?shù)取?/li>
(4)消息隊列
- 目的:服務(wù)解耦(一對多消費(fèi))、異步處理、流量削峰緩沖等。
- 大流量緩沖:犧牲強(qiáng)一致性,保障最終一致性。
- 數(shù)據(jù)校對:解決異步消息機(jī)制下消息丟失問題。
(5)數(shù)據(jù)異構(gòu)
- 數(shù)據(jù)異構(gòu):通過消息隊列機(jī)制接受數(shù)據(jù)變更,原子化存儲。
- 數(shù)據(jù)閉環(huán):屏蔽多重數(shù)據(jù)來源,將數(shù)據(jù)異構(gòu)存儲,形成閉環(huán)。
(6)緩存應(yīng)用
- 用戶層:DNS 緩存、瀏覽器 DNS 緩存、操作系統(tǒng) DNS 緩存、本地 DNS 服務(wù)商緩存、DNS 服務(wù)器緩存、客戶端緩存、瀏覽器緩存、APP 客戶端緩存。
- 代理層:CDN 緩存(一般基于 ATS、Varnish、Nginx、Squid 等構(gòu)建,邊緣節(jié)點(diǎn) - 二級節(jié)點(diǎn) - 中心節(jié)點(diǎn) - 源站)
- 接入層:Nginx 的 Proxy_cache 代理緩存,或者 Nginx+Lua+Redis 做業(yè)務(wù)數(shù)據(jù)緩存。
- 應(yīng)用層:頁面靜態(tài)化、業(yè)務(wù)數(shù)據(jù)緩存(Redis/Memcache/ 本地文件等)、消息隊列
- 數(shù)據(jù)層:NoSQL(Redis、Memcache、SSDB 等)
2.2 高可用原則
1. 降級
- 降級開關(guān)集中化管理:將開關(guān)配置信息推送到各個應(yīng)用。
- 可降級的多級服務(wù):如服務(wù)調(diào)用降級為只讀本地緩存。
- 開關(guān)前置:如 Nginx+Lua 配置降級策略,引流流量;可基于此做灰度策略。
- 業(yè)務(wù)降級:高并發(fā)下,保證核心功能,次要功能可由同步改為異步策略或屏蔽功能。
2. 限流
- 目的:防止惡意請求攻擊或超過系統(tǒng)峰值
- 惡意請求流量只訪問到 Cache
- 穿透后端應(yīng)用的流量 Nginx 的 limit 處理
- 惡意 Ip 使用 Nginx Deny 策略或者 iptables 拒絕
3. 可回滾
- 發(fā)布版本失敗時,可隨時快速回退到上一個穩(wěn)定版本。
2.3 業(yè)務(wù)設(shè)計原則
- 防重設(shè)計
- 冪等設(shè)計
- 流程定義
- 狀態(tài)與狀態(tài)機(jī)
- 后臺系統(tǒng)操作可反饋
- 后臺系統(tǒng)審批化
- 文檔注釋
- 備份
技術(shù)架構(gòu)圖
技術(shù)架構(gòu)圖是將系統(tǒng)的技術(shù)方案、技術(shù)選型通過視圖的方式進(jìn)行展現(xiàn)。技術(shù)架構(gòu)圖分為兩類:一類,功能需求技術(shù)架構(gòu)圖(邏輯架構(gòu)圖),是描繪如何通過技術(shù)組件來實(shí)現(xiàn)系統(tǒng)產(chǎn)品功能的圖。另一來,非功能需求技術(shù)架構(gòu)圖(物理架構(gòu)圖),是描繪如何通過物理部署的來實(shí)現(xiàn)系統(tǒng)運(yùn)行的圖。
3.1 邏輯架構(gòu)圖
功能需求技術(shù)架構(gòu)圖以產(chǎn)品架構(gòu)圖和應(yīng)用架構(gòu)圖為基礎(chǔ)。實(shí)現(xiàn)每個功能點(diǎn)需要使用什么技術(shù)、技術(shù)實(shí)現(xiàn)邏輯如何,就體現(xiàn)在技術(shù)架構(gòu)圖上。功能需要技術(shù)架構(gòu)圖繪制可以按照“整體 - 局部 - 整體”的思路實(shí)現(xiàn)。
1. 整體
首先可以按照應(yīng)用架構(gòu)圖的應(yīng)用分布得到應(yīng)用分布框架。如下:
圖 2
2. 局部
在整體框架的基礎(chǔ)上,對每一個局部的子系統(tǒng)進(jìn)行詳細(xì)的技術(shù)實(shí)現(xiàn)的表達(dá)。子系統(tǒng)的技術(shù)架構(gòu)圖中需要展示每個子系統(tǒng)使用的技術(shù)組件,比如(緩存技術(shù)、消息中間件、流程引擎、流式計算框架等等)。同時,這些技術(shù)組件是如何實(shí)現(xiàn)業(yè)務(wù)功能,需要清晰的展示技術(shù)實(shí)現(xiàn)邏輯。
下圖是對風(fēng)控系統(tǒng)中的實(shí)時引擎、離線引擎、準(zhǔn)實(shí)時引擎三個子系統(tǒng)的進(jìn)行的技術(shù)架構(gòu)。在實(shí)時引擎中,主要使用 RuleEngine(規(guī)則引擎)作為技術(shù)特點(diǎn),這里就重點(diǎn)列出 RuleEngine。準(zhǔn)實(shí)時引擎使用 Blink 作為流計算的技術(shù)框架,并概要的展示了計算邏輯。
圖 3
3. 整體
在完成每個子系統(tǒng)的技術(shù)實(shí)現(xiàn)后,最終進(jìn)行一次整合,繪制一張總體的系統(tǒng)技術(shù)架構(gòu)圖。各子系統(tǒng)之間通過服務(wù)接口、數(shù)據(jù)庫、緩存或消息中間等技術(shù)實(shí)現(xiàn)數(shù)據(jù)交互,以此將打通各個子系統(tǒng),實(shí)現(xiàn)最終整個產(chǎn)品,在數(shù)據(jù)、技術(shù)的串聯(lián)。
圖 4
3.2 物理架構(gòu)圖
物理架構(gòu)偏重于網(wǎng)絡(luò)設(shè)計、集群設(shè)計、中間件設(shè)計、數(shù)據(jù)存儲設(shè)計等基礎(chǔ)軟硬件的設(shè)計架構(gòu)。非功能需求的技術(shù)架構(gòu)圖重點(diǎn)在于展示企業(yè)系統(tǒng)在物理上是如何部署。物理架構(gòu)規(guī)定了組成系統(tǒng)的物理元素、物理元素之間的關(guān)系以及他們的部署策略。物理架構(gòu)反映出軟件系統(tǒng)動態(tài)運(yùn)行時的組織情況。從物理架構(gòu)圖中,我們能夠全局的得知整個系統(tǒng)是如何從流量訪問、數(shù)據(jù)流轉(zhuǎn)、數(shù)據(jù)存儲到技術(shù)組件的運(yùn)轉(zhuǎn)。
圖 5
總 結(jié)
我們從架構(gòu)的本質(zhì)開始,分別對業(yè)務(wù)架構(gòu)、產(chǎn)品架構(gòu)、數(shù)據(jù)架構(gòu)、應(yīng)用架構(gòu)、技術(shù)架構(gòu)的設(shè)計提供了一些思路和原則。這些思路和原則在進(jìn)行架構(gòu)設(shè)計和畫架構(gòu)圖的過程中提供一些指導(dǎo)幫助。最后我們再來思考一個問題,好的軟件架構(gòu)是規(guī)劃還是演化出來?
架構(gòu)規(guī)劃對架構(gòu)的影響是很重大的。好的架構(gòu),系統(tǒng)的性能和質(zhì)量都將很高。架構(gòu)設(shè)計的質(zhì)量直接影響架構(gòu)后續(xù)向好的方向演化的難易程度。架構(gòu)設(shè)計如同城市規(guī)劃一樣,缺少規(guī)劃將難于演化。在現(xiàn)有規(guī)劃的基礎(chǔ)上進(jìn)行演化,我們無法得到普適的架構(gòu),但可以得到確定領(lǐng)域的通用架構(gòu),可以在特定領(lǐng)域通過演化使架構(gòu)逐步優(yōu)化,幫助業(yè)務(wù)快速的發(fā)展。
本文不做任何商業(yè)推廣,僅做技術(shù)交流與分享。歡迎網(wǎng)絡(luò)貨運(yùn)的技術(shù)大牛,共同交流與學(xué)習(xí),索取闊天科技旗下<貨超多>在研發(fā)網(wǎng)絡(luò)貨運(yùn)平臺,技術(shù)框架采用的細(xì)節(jié)說明。
關(guān)注貨超多,汲取業(yè)內(nèi)精華
關(guān)鍵詞:設(shè)計,戰(zhàn)術(shù),原則,避免,戰(zhàn)略,平臺,貨運(yùn),網(wǎng)絡(luò)