|
一、前言
如果說編程只是單純的承接產(chǎn)品需求開發(fā)系統(tǒng)功能,那么基本可以把程序開發(fā)簡單理解成按照需求PRD, 尤其是在一些大公司中,會有易用的、完善的、標準的架構(gòu)體系和運維服務(wù),例如:RPC、MQ、Redis集群、分布式任務(wù)、配置中心、分庫分表組件、網(wǎng)關(guān)等搭配出來的系統(tǒng)架構(gòu)。也因此 讓程序員只關(guān)心業(yè)務(wù)開發(fā),有成熟的系統(tǒng)架構(gòu)、有標準的開發(fā)流程、有通用的功能設(shè)計,對于團隊效能提升來說是非常好的事。但一部分程序員正因為有這樣的 如果是框架和中間件的存在,是了讓程序員只關(guān)心業(yè)務(wù)開發(fā)。那為什么你面試的時候會被問到核心組件的設(shè)計和原理呢? 在這個年代,別放棄學(xué)習(xí)是你幾乎唯一的生存途徑。 二、多線程和鎖沒用過?面試必問的 互聯(lián)網(wǎng)應(yīng)用中有些業(yè)務(wù)場景開發(fā),確實很少能用到多線程,也幾乎不需要你去加鎖。即使你能用到多線程的地方也可以用其他更好的方式處理,就像你需要多個線程把數(shù)據(jù)落庫,那么就可以使用異步MQ的方式,把壓力分散到各個應(yīng)用實例上去。而這一開發(fā)方式的演變,是因為現(xiàn)在的應(yīng)用開發(fā)和部署都是基于分布式的思想,所以也就很少會有非得用線程來壓榨單實例CPU。 在基于RPC+MQ+數(shù)據(jù)庫路由+網(wǎng)關(guān),以及各類配合的組件下,構(gòu)建出的分布式應(yīng)用,在某些時候是改變了我們的開發(fā)模式的。可能原來我們需要大量使用多線程在單個實例下的開發(fā)思路,在使用分布式架構(gòu)后,就需要轉(zhuǎn)變這一思想,所以隨時而來的使用多線程和鎖的場景也會減少。 圖 14-1 分布式簡化的應(yīng)用部署
但,也不是就沒有多線程和鎖的業(yè)務(wù)場景,就比如我們的核心組件中,數(shù)據(jù)庫連接池、分布式任務(wù)中,都會涉及到多線程和鎖的使用。也有一些類似商品秒殺的場景,同樣需要使用到鎖。 那么,使用多線程為了更大限度的利用資源提升效率,加鎖是為了在同一個資源有競爭的情況保證業(yè)務(wù)流程的正確性。就像:數(shù)據(jù)庫連接池為了合理分配數(shù)據(jù)庫資源、商品秒殺是為了庫存的競爭。 可是,在沒有需要競爭和分配資源的情況下,一般并不會在分布式場景下使用到多線程。假如我們做一個用戶資源單次計數(shù)的操作,那么原來的應(yīng)用是單實例還是可以加鎖累加計數(shù)的。但現(xiàn)在是分布式應(yīng)用部署,也就是你可能這一時刻是A實例提供你的需求,當你再次刷新頁面后可能訪問到的就是B實例。這時候在想做一些實例上的累加,就沒那么方便了。 這也就是在分布式應(yīng)用框架的應(yīng)用中,讓你能用到多線程和鎖的地方并不多的原因。但如果你有需要去了解一些中間件或者核心組件的設(shè)計時,就需要了解相關(guān)的核心知識。 很多紙上談兵的技術(shù),也就是你造輪子、造火箭、成為架構(gòu)師的根基! 如果你還想奔著這條路能走的更遠,就需要繼續(xù)學(xué)習(xí)。 三、你的成長階段目標?
就編程開發(fā)這條道路而言,每一個成長階段的目標都會有它隨著帶來的難以攻克的
隨著年齡的增長,每一階段都有難以跨越的難。而那些看上去突破了瓶頸,達到了你想要的高度的人。其實每一個階段,他們都跑在前面。 但就單純的技術(shù)成長而言,其實理論知識并不難,只要你學(xué)就還能會,只是付出的時間成本不同罷了。但過了理論知識這一關(guān)后,接下來要面對的是創(chuàng)造能力,也就是為什么你感覺自己會了那么多技術(shù)內(nèi)容,但是實際開發(fā)時卻總感覺寫不出好代碼的階段。 會了核心技術(shù)但又寫不出好代碼,就很像是: 所以,多實戰(zhàn)一些項目代碼,多看一些設(shè)計模式,會讓你更好的理解代碼該怎么用,也就能提升突破當前的階段屏障。😄推薦小傅哥的《重學(xué)Java設(shè)計模式》,公眾號:bugstack蟲洞棧,回復(fù):設(shè)計模式,下載。 四、怎么成長為架構(gòu)師?
講到架構(gòu)師,其實真的挺難因為報名一個課程學(xué)習(xí)完就能成為架構(gòu)師。架構(gòu)師的成長更多的取決你們的研發(fā)組是否需要一個架構(gòu)師,也同時需要你在這個崗位起到應(yīng)有的作用。 如果你還不是架構(gòu)師,但想成為架構(gòu)師。那么還取決于你的老板是否愿意把你培養(yǎng)成架構(gòu)師,以及你自己的多方面能力是否具備。另外,并不一定高級開發(fā)就低于架構(gòu)師。高級開發(fā)有時候比架構(gòu)師做的事更專一、更核心。 那么除了圖 14-3 對于架構(gòu)師的能力概況,有哪些具體的事項呢?
**做好架構(gòu),遠看是部門效率,近看是解決爛代碼!**很多時候的急,可能讓整個工程爛掉。爛的越來越多,最終也會影響業(yè)務(wù)發(fā)展。那么這些爛代碼都怎么來的呢?
爛,來自于很多方面,而且這并不是你報名個課程就能學(xué)到的。業(yè)務(wù)、產(chǎn)品、研發(fā),三方共同努力才能更好的減少爛的出現(xiàn),而這些也是每一個研發(fā)都應(yīng)該努力的方向,也幾乎是你要成為架構(gòu)師的必經(jīng)之路。 五、總結(jié)
六、系列推薦
|
|
|