在網(wǎng)絡(luò)貨" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 電子商務(wù) > 【實(shí)踐】網(wǎng)絡(luò)貨運(yùn)平臺的技術(shù)架構(gòu),其戰(zhàn)略層和戰(zhàn)術(shù)層設(shè)計原則,避免走哪些彎

【實(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)

(2) 拆分

(3)服務(wù)化

(4)消息隊列

(5)數(shù)據(jù)異構(gòu)

(6)緩存應(yīng)用

2.2 高可用原則

1. 降級

2. 限流

3. 可回滾

2.3 業(yè)務(wù)設(shè)計原則

技術(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ò)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉