架構師在IT行業(yè)中占比大概不到10%。Java架構師分為初級、中級、高級三檔,目前高水平的軟件架構師占比更少了。成為架構師不僅是工作上的簡(jiǎn)單積累,更需要大量的專(zhuān)業(yè)知識,要熟練掌握復雜的數據結構和算法、熟練使用linux操作系統,Linux線(xiàn)上排除故障、熟悉tcp協(xié)議、系統集群、負載均衡、反向代理、動(dòng)靜分離,網(wǎng)站靜態(tài)化、數據庫設計能力、隊列中間件等知識。
1.掌握基礎
熟練使用各種框架以及實(shí)現的原理、JVM虛擬機原理、JVM調優(yōu),懂得jvm能讓你寫(xiě)出性能更好的代碼;池技術(shù):什么對象池連接池,線(xiàn)程池;Java反射技術(shù),寫(xiě)框架必備的技術(shù)。
Java各種集合對象的實(shí)現原理,了解這些可以讓你在解決問(wèn)題時(shí)選擇合適的數據結構,高效的解決問(wèn)題,比如hashmap的實(shí)現原理,好多五年以上經(jīng)驗的人都弄不清楚,還有為什擴容時(shí)有性能問(wèn)題?不弄清楚這些原理寫(xiě)不出高效的代碼。越基礎的東西越重要,僅知道如何調用api離會(huì )用還差的遠。
2.復雜的數據結構和算法
熟練使用各種數據結構和算法,數組、哈希、鏈表、排序樹(shù)...,一句話(huà)要么是時(shí)間換空間要么是空間換時(shí)間,這里展開(kāi)可以說(shuō)一大堆,需要有一定的應用經(jīng)驗,用于解決各種性能或業(yè)務(wù)上的問(wèn)題。
3.熟練使用linux操作系統
linux操作系統,Linux線(xiàn)上排除故障,以及性能監控等。
4.熟悉tcp協(xié)議
創(chuàng )建連接三次握手和斷開(kāi)連接四次握手的整個(gè)過(guò)程,不了解的話(huà),無(wú)法對高并發(fā)網(wǎng)絡(luò )應用做優(yōu)化。熟悉http協(xié)議,尤其是http頭,我發(fā)現好多工作五年以上的都弄不清session和cookie的生命周期以及它們之間的關(guān)聯(lián)。
5.系統集群、負載均衡、反向代理、動(dòng)靜分離,網(wǎng)站靜態(tài)化。
分布式存儲系統nfs,fastdfs,tfs,Hadoop了解他們的優(yōu)缺點(diǎn),適用場(chǎng)景。分布式緩存技術(shù)memcached,redis,提高系統性能必備,一句話(huà),把硬盤(pán)上的內容放到內存里來(lái)提速,順便提個(gè)算法一致性hash。工具nginx必備技能超級好用,高性能,基本不會(huì )掛掉的服務(wù)器,功能多多,解決各種問(wèn)題。
6.數據庫設計能力
MySQL慢查詢(xún)日志分析,主從復制的配置,至少要成為半個(gè)mysqldba。其他nosql數據庫如mongodb。
7.隊列中間件
消息推送,可以先把消息寫(xiě)入數據庫,推送放隊列服務(wù)器上,由推送服務(wù)器去隊列獲取處理,這樣就可以將消息放數據庫和隊列里后直接給用戶(hù)反饋,推送過(guò)程則由推送服務(wù)器和隊列服務(wù)器完成,好處異步處理、緩解服務(wù)器壓力,解藕系統。
常用的技術(shù)有需要自己摸索學(xué)習,要成為一名合格的架構師,要有強大的自學(xué)能力。
8.服務(wù)業(yè)務(wù)
架構師還要針對業(yè)務(wù)特點(diǎn)、系統的性能要求提出能解決問(wèn)題成本*低的設計方案才合格,人家一個(gè)幾百人用戶(hù)的系統,訪(fǎng)問(wèn)量不大,數據量小,你給人家上集群、上分布式存儲、上高端服務(wù)器,為了架構而架構,這是*扯淡的,架構師的作用就是*滿(mǎn)足業(yè)務(wù)需求,第二*低的硬件網(wǎng)絡(luò )成本和技術(shù)維護成本。