其實都是在做一個項目奶赠,項目是一個大型的多節(jié)點部署的項目鱼填,做了好幾個版本,中間用到了很多技術(shù)和框架毅戈,也用了一些管理工具和敏捷實踐苹丸。我這里不是來說項目的,因為最近看了一些招聘信息苇经,結(jié)合項目中用到的一些知識和管理措施赘理,作為一個程序員,需要去實時評估下自己當前的能力是否能跟上時代的步伐扇单,所以商模,總結(jié)了下作為一個中高級Java開發(fā)人員或架構(gòu)師,到底需要掌握哪些技能。
當一個資深開發(fā)者變得更高級時會發(fā)生什么施流?一般的凉倚,他們會被提拔為“架構(gòu)師”。有時一個架構(gòu)師不一定必須成為一個開發(fā)者嫂沉,只要他們擁有更寬廣的視角稽寒。“最后趟章,總有一個人任命為“架構(gòu)師”的職位杏糙,他要開發(fā)的系統(tǒng)和正在開發(fā)的系統(tǒng)做出架構(gòu)上的決策。在一些更大的公司蚓土,還有“架構(gòu)師議會”宏侍,每個團隊指定的架構(gòu)師們聚在一起決定著一些明智的事情。
但是我不認為專門設(shè)立“架構(gòu)師”這樣的職位是一個好的主意蜀漆。架構(gòu)師應(yīng)該是建筑行業(yè)的一個職位谅河,這是無可厚非的,因為不能在項目中期改變和調(diào)整原有的架構(gòu)确丢。但是軟件架構(gòu)是十分靈活的绷耍,會在開發(fā)的過程中需要不斷的進行調(diào)整,不應(yīng)該預(yù)先就嚴格地定義好鲜侥。而且開發(fā)工作和架構(gòu)設(shè)計是如此的緊密關(guān)聯(lián)褂始,所以說某個人決定“什么要做”和“什么不要做”是不科學(xué)也不嚴謹?shù)摹_@會帶來各種各樣的問題描函,主要是因為架構(gòu)師經(jīng)常無法全面的考慮到具體的實現(xiàn)是怎么樣崎苗。如果一個架構(gòu)師長時間不寫代碼,他們更加傾向于忽略“實現(xiàn)細節(jié)”舀寓,轉(zhuǎn)而僅僅考慮抽象設(shè)計胆数。但是,抽象總是會造成遺漏互墓,只考慮抽象而不考慮特定的實現(xiàn)這樣的解決方案很少可行有效的必尼。
我主張的第一個觀點就是:如果你不知道如何詳細地編寫所有代碼地情況下,你就無法在成為一個優(yōu)秀的架構(gòu)師轰豆。大多數(shù)情況下都不是“簡單地編碼”胰伍。如果你已經(jīng)成為架構(gòu)師多年齿诞,同時也多年沒有寫過代碼了酸休,那幾乎可以肯定你不是一個優(yōu)秀的架構(gòu)師。
1祷杈、對于Java基礎(chǔ)技術(shù)體系(包括JVM斑司、類裝載機制、多線程并發(fā)、IO宿刮、網(wǎng)絡(luò))有一定的掌握和應(yīng)用經(jīng)驗互站。
JVM內(nèi)存分配、JVM垃圾回收僵缺;
類裝載機制胡桃;
性能優(yōu)化:
反射機制;
多線程磕潮;
IO/NIO翠胰;
網(wǎng)絡(luò)編程;
常用數(shù)據(jù)結(jié)構(gòu)和相關(guān)算法:
2自脯、java架構(gòu)工程師 對面向?qū)ο蟮能浖_發(fā)思想有清晰的認識之景、熟悉掌握常用的設(shè)計模式;
設(shè)計模式:單例模式膏潮;工廠模式锻狗;代理模式;模板方法模式焕参;責(zé)任鏈模式等
3轻纪、熟練掌握目前流行開源框架(spring/springmvc/ibatis),并且對其核心思想叠纷、實現(xiàn)原理有一定認知桐磁;
開源框架:spring;
開源框架:hibernate讲岁;
4我擂、熟悉Oracle、MySQL等數(shù)據(jù)庫開發(fā)與設(shè)計以及緩存系統(tǒng)REDIS或 Memcached的設(shè)計和研發(fā)缓艳;
關(guān)系數(shù)據(jù)庫:oracle
關(guān)系數(shù)據(jù)庫:PostgreSQL
緩存系統(tǒng):Redis(Nosql)
緩存系統(tǒng):Memcached
5校摩、java架構(gòu)工程師 熟悉底層中間件、分布式技術(shù)(包括緩存阶淘、消息系統(tǒng)衙吩、熱部署、JMX等)
底層中間件:
應(yīng)用服務(wù)器:Jetty(Tomcat)
消息中間件:ActiveMQ溪窒、RabbitMQ
事務(wù)處理中間件:
數(shù)據(jù)訪問中間件:ODBC
工作流中間件:JBPM
分布式技術(shù):
緩存系統(tǒng):
消息系統(tǒng):
Restful:
熱部署:
JMX:
6坤塞、至少一種Java 應(yīng)用服務(wù)器如tomcat
Jetty:
7、精通shell編程澈蚌,熟練應(yīng)用awk摹芙、sed、grep宛瞄、strace浮禾、tcudump、gdb等常用命令;
8盈电、有大型分布式蝴簇、高并發(fā)、高負載(大數(shù)據(jù)量)匆帚、高可用性系統(tǒng)設(shè)計開發(fā)經(jīng)驗
分布式:(多節(jié)點部署)
高并發(fā):
高負載(大數(shù)據(jù)量):
高穩(wěn)定:
高可用:
9熬词、對配置管理和敏捷研發(fā)模式有所了解
配置管理工具:
SVN:
Github:
10、業(yè)務(wù)能力:
java架構(gòu)工程師
系統(tǒng)升級吸重、雙機荡澎、部署、容災(zāi)晤锹、備份恢復(fù)摩幔、DFX
加分技術(shù):
腳本語言:python
遠程調(diào)用:
精通Internet基本協(xié)議(如TCP/IP、HTTP等)內(nèi)容及相關(guān)應(yīng)用
有一定安全意識并了解常見的安全問題解決方案
熟悉常見的一些解決方案及其原理:單點登錄鞭铆、分布式緩存或衡、SOA、全文檢索车遂、消息中間件封断,負載均衡、連接池舶担、
nosql坡疼、流計算等
架構(gòu)之路任重而道遠。程序設(shè)計和架構(gòu)設(shè)計是互通的衣陶,每個人都可以從設(shè)計好一個程序往設(shè)計好一個系統(tǒng)架構(gòu)前進柄瑰。如果現(xiàn)在還無從下手的,我推薦大家可以從領(lǐng)域驅(qū)動設(shè)計這個概念入手剪况,這是由業(yè)務(wù)為導(dǎo)向的設(shè)計方式教沾,可以對培養(yǎng)設(shè)計出落地的架構(gòu)有很大的幫助。希望可以給大家一些思路和啟發(fā)译断。最后引用“俞軍”一句名言授翻,我們作為架構(gòu)師要有“懷疑精神:自我迭代”的心。
想要學(xué)習(xí)高性能及分布式孙咪、深入淺出堪唐。性能調(diào)優(yōu)、Spring翎蹈,MyBatis淮菠,Netty源碼分析可以加群:668395460
1、具有1-5工作經(jīng)驗的杨蛋,面對目前流行的技術(shù)不知從何下手兜材,需要突破技術(shù)瓶頸的可以加群。
2逞力、在公司待久了曙寡,過得很安逸,但跳槽時面試碰壁寇荧。需要在短時間內(nèi)進修举庶、跳槽拿高薪的可以加群。
3揩抡、如果沒有工作經(jīng)驗户侥,但基礎(chǔ)非常扎實,對java工作機制峦嗤,常用設(shè)計思想蕊唐,常用java開發(fā)框架掌握熟練的,可以加群烁设。
4替梨、覺得自己很牛B,一般需求都能搞定装黑。但是所學(xué)的知識點沒有系統(tǒng)化副瀑,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加群。