具體到Java上通常是涉及java.util.concurrent、并發(fā)鎖機制、NIO等方面,當然最近比較火爆的Netty框架也可以作為高并發(fā)處理的備選方案之一,這需要對Java的線程調(diào)度機制有著比較深的理解。
不過這些可能會涉及并發(fā)控制的對象(比如reentrantlock等)只能存在于一個JVM里的問題,一旦系統(tǒng)規(guī)模大到需要部署多個JVM來處理并發(fā)的情況,則需要采用共享session的技術(shù)(比如spring-session),或者盡可能將系統(tǒng)后臺設計為無狀態(tài)的服務,這需要對RESTful有著較深的理解。
2、高可用、負載均衡技術(shù)。
互聯(lián)網(wǎng)產(chǎn)品、企業(yè)級應用通常要求一年里的Downtime控制在很小的范圍內(nèi),這需要足夠的高可用和負載均衡架構(gòu)來支撐,這個一般和Java技術(shù)本身沒太大關(guān)系,但卻是一名初級程序員向高級程序員甚至是架構(gòu)師CIO進階的必備技術(shù),因此可以適當了解一下Nginx、HAProxy等對這方面的支持。
另外現(xiàn)在最“時髦”的做法是將應用docker化,配合ETCD、kubernetes等工具在容器的層面上實現(xiàn)高可用和負載均衡,當然這需要看實際的需求,最時髦的不見得是最適用的,要考慮構(gòu)建成本。
3、緩存技術(shù)。
緩存應該是大型系統(tǒng)中或高并發(fā)條件下提高響應速度的亙古不變的真理(雖然也看到過淘寶搜索商品功能采用的大數(shù)據(jù)處理技術(shù)實現(xiàn)的零緩存的文章,但能達到淘寶的體量和技術(shù)水平一般不太可能)。
這方面的工具太多了,ehcache、memcached、redis……從Java的角度來講,需要了解的一是Java對這些工具的連接器,二是緩存技術(shù)背后的JSR-107標準,可以參考spring-cache的實現(xiàn),閱讀一下源碼加深理解。
4、異步處理技術(shù)。
這通常也是抵消高并發(fā)的處理手段之一,從Java的角度看最簡單的異步處理就是新啟動一個異步線程,這同樣也需要對Java的線程調(diào)度有所了解,當然也可使用Spring中的 Async之類的也可以簡單實現(xiàn)異步線程的處理。
如果是非常消耗資源的業(yè)務處理,簡單的異步線程是滿足不了需求的,這就需要一些消息中間件來做這些異步處理了,消息中間件有很多,activemq、rabbitmq、kafka……需要了解的是Java對這些中間件的連接器。不過異步處理中最關(guān)鍵的是事務的問題,這可能需要對事務的兩步提交有所了解。
1、具有1-5工作經(jīng)驗的,面對目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的。
2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內(nèi)進修、跳槽拿高薪的。
3、如果沒有工作經(jīng)驗,但基礎非常扎實,對java工作機制,常用設計思想,常用java開發(fā)框架掌握熟練的。
4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的。