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