java項目學(xué)習(xí)之SpringBoot 2.x 實戰(zhàn)仿B站高性能后端項目
時間:2023-04-23 20:03:01 | 來源:網(wǎng)站運營
時間:2023-04-23 20:03:01 來源:網(wǎng)站運營
java項目學(xué)習(xí)之SpringBoot 2.x 實戰(zhàn)仿B站高性能后端項目: 架構(gòu)的定義
我們來看看軟件架構(gòu)的一般定義:
程序和計算系統(tǒng)軟件體系結(jié)構(gòu)是指系統(tǒng)的一個或多個結(jié)構(gòu)。 該結(jié)構(gòu)包括軟件的構(gòu)建,構(gòu)建的外部可見屬性以及它們之間的相互關(guān)系。
該體系結(jié)構(gòu)不是可操作的軟件。 具體來說,這是一個表達式,它使軟件工程師能夠:
分析滿足監(jiān)管要求的設(shè)計有效性。
在設(shè)計更改相對容易的階段,請考慮架構(gòu)的可能選項。
降低與軟件構(gòu)建相關(guān)的風(fēng)險。
軟件架構(gòu)的重要性
我為什么說軟件架構(gòu)非常重要? 直接編程直接開發(fā),請多看看以下幾點?:
軟件架構(gòu)可以滿足系統(tǒng)的質(zhì)量
體系結(jié)構(gòu)設(shè)計允許受益者達成一致的目標(biāo)
架構(gòu)設(shè)計可以支持規(guī)劃過程
架構(gòu)設(shè)計對系統(tǒng)開發(fā)的指導(dǎo)性
架構(gòu)設(shè)計有效管理復(fù)雜性
架構(gòu)設(shè)計為復(fù)用奠定了基礎(chǔ)
架構(gòu)設(shè)計降低了維護成本
架構(gòu)設(shè)計可以支持沖突分析
什么是好的軟件架構(gòu)
這個問題可能會被大家問到,包括一些IT公司也在問,這個問題的答案可能不僅僅是簡單的句子或者定義可以回答,我們來看下面幾個圖片的例子:
這是什么東西? 樂高玩具,樂高玩具,我們都玩過嗎?
它可以作為一個完整的模型出售給您,您也可以將其全部分解并自由地將其從一個模型重新組裝到另一個模型,因為每個Lego模塊都有一個水平和堅定方向的標(biāo)準(zhǔn)。 界面,這就是我們常說的高內(nèi)聚和低耦合。
什么是壞架構(gòu)
我們來看看上面的圖片。
一個是清代的八封信,另一個是孔乙己。
記住四種寫作方式?
然后,你專門研究了回寫單詞的四種方式,但你有沒有想過我可以將單詞轉(zhuǎn)化為單詞? 這是一個很好的折扣嗎?
要知道最時尚并不一定是最好的
為什么M1A2和Apache直升機中的A8處理器或最新奔騰處理器沒有? 實用,測試是最好的!
成功的軟件又是怎么樣的呢
我們談?wù)撥浖軜?gòu)。 該架構(gòu)的最終體現(xiàn)是一款軟件。 什么是成功的架構(gòu)? 什么是成功的軟件?
我們看上邊的圖片,這是美國的阿里巴巴級宙斯盾驅(qū)逐艦。 右邊是印度的“德里級”驅(qū)逐艦庫里盾,由美國安吉斯自己設(shè)計和建造。
兩艘軍艦有什么區(qū)別?
一種是模塊化設(shè)計,整體線條流暢,模塊可隨意更換。
一種是拼湊而成的,線條被暴露出來,并且甲板上充滿了各種電子設(shè)備和天線。 一旦被損壞,維護起來非常困難。
JAVA通用領(lǐng)域的相關(guān)技術(shù)
當(dāng)然,我們這里主要講JAVA。 所以,作為一名JAVA和J2EE架構(gòu)師,需要什么樣的技能才能達到架構(gòu)師的水平?
上面的圖片,我們這樣看,它分為三部分:
在頂端,我們需要掌握一些技術(shù)領(lǐng)域的知識,它可以使我們能夠解決諸如電子商務(wù),公司OA,銀行保險金融等解決方案和設(shè)計其他領(lǐng)域的共同領(lǐng)域。
在中間,為了達到這些技術(shù)的頂端,我們需要了解一些中間件,數(shù)據(jù)庫,開發(fā)框架知識,它是一個支柱。
底部,底部? 這是我們的基礎(chǔ),為我們達到中層或上層奠定基石,這就是為什么人們有時會發(fā)現(xiàn)我的博客和其他博客有不同的地方,不僅是編程,而且還有“中間”層。也就是說,數(shù)據(jù)庫, 安全和框架建設(shè)混雜在一起,因為我不希望每個人都通過閱讀我的博客而停留在碼,碼和螺絲的水平。
架構(gòu)師的職能
說了這么多架構(gòu)之后,我們來談?wù)劶軜?gòu)師。
如果您看到它,架構(gòu)師的首要責(zé)任是集中于:非功能需求,即非功能需求。
許多人仍然不清楚功能需求與非功能需求之間的界限。 這里有兩個例子來說明:
功能性需求
頁面查詢時,這個查詢與哪個數(shù)據(jù)庫表關(guān)聯(lián),因為我的業(yè)務(wù)是這樣的一個需求,在界面A中有一個按鈕,然后彈出窗口B,在窗口B中顯示什么樣的數(shù)據(jù),最終的界面 點K結(jié)束后,打開界面B時哪個數(shù)據(jù)發(fā)生了變化。
非功能性需求
我們的系統(tǒng)查詢速度小于2S,是否考慮使用異步查詢,采用團隊排隊機制,系統(tǒng)需求可容納1000個并發(fā),這個系統(tǒng)應(yīng)該做成插件,能夠水平擴展,能夠遵守XXX協(xié)議,此Web服務(wù)是否要使用SOAP HEAD和BASIC身份驗證,NTLM身份驗證或令牌環(huán)身份驗證?該下拉框可以被輸入并且可以被下拉。此身份驗證是否可以訪問LDAP?
許多面向商業(yè)的項目公司認為,架構(gòu)師在解決問題(即故障排除,故障排除,錯誤,然后找到架構(gòu)師)時,將架構(gòu)師視為消防員。你不會為自己考慮為什么問題架構(gòu)師已經(jīng)出現(xiàn)了2秒鐘,2分鐘或1天半的時間來解決過去幾個月無法解決的問題。好?
解決這是人們應(yīng)該解決的問題,說人類建筑師失敗了?是不是我們應(yīng)該從這個軟件和架構(gòu)的最早框架中找到問題?
建筑師,這不是一個問題解決問題。
在節(jié)日之前,我還進行了一些采訪。從純粹的技術(shù)角度來看,我選擇了建筑師TECH LEADER的候選人。
我仍然發(fā)現(xiàn)很多問題。這在中國是一個普遍的問題:我們的程序員經(jīng)常不做程序,但更多時候他們在做業(yè)務(wù)邏輯并成為某個領(lǐng)域的商人。
當(dāng)然,我們的程序員在他們職業(yè)生涯的頭三年和四年都會為某個領(lǐng)域編寫代碼。這不是問題,但請務(wù)必記住我們是編碼,IT和程序員。 ,而不是“業(yè)務(wù)人員”!
它是什么?什么是程序員?什么是技術(shù)領(lǐng)導(dǎo)者?什么是建筑師?
我們必須很好地問自己這個問題。好好想一想。建筑師的要求是什么?
我隨便在這里說些什么:我相信這對于一些想要走技術(shù)之路的學(xué)生很有幫助:
TCP / IP協(xié)議,加密和解密,計算機原理(附加補碼),JPG代碼,MPEG2-3協(xié)議,邏輯電子電路,計算機編譯原理(堆棧,堆棧,隊列),這些東西在工作時總是使用?這些是你一直關(guān)注的底層嗎?
如果您要采取技術(shù)路線,一定要記住“數(shù)據(jù)庫 ASP / JSP”不是技術(shù)。它只比表格制作強大一點。報告作者有點強大。
請記住,技術(shù)線主要關(guān)注非功能性需求。非功能性需求只是一站式的東西。有了這個基礎(chǔ),任何需求都很清楚。你什么都沒有。 “困難”,或者如果你去上學(xué),你可以用不同的方式來做。
我最近一直在采訪一些候選人并擔(dān)任建筑師。我對這個過程深感不安。找到一名程序員來開發(fā)和招聘一名建筑師并不困難。這很難......呃,我認為我們需要考慮一下,如果我采用技術(shù)路線,我缺少什么,如何補充它,還有什么我應(yīng)該注意?
科學(xué)技術(shù)是第一生產(chǎn)力。所謂的六西格瑪管理方法論是六西格瑪?shù)牡谝粋€。 “技術(shù)人才是當(dāng)前企業(yè)的第一生產(chǎn)力?!弊屛覀兛纯茨男┕究梢园l(fā)財。阿里,淘寶,支付寶,GOOGLE,騰訊,互聯(lián)網(wǎng),高科技等等,以及其他一些公司,他們依靠的不是業(yè)務(wù)邏輯,而是真正的技術(shù),這足以解釋問題,所以如果你想走技術(shù)路線,請注意更多細節(jié)和更低層次的東西。
關(guān)鍵詞:項目,性能,實戰(zhàn),學(xué)習(xí)