08年畢業(yè)跑到上海,在經(jīng)濟(jì)危機(jī)最熱鬧的一年找到份勉強(qiáng)活下去的java研發(fā)工作,從此開始了漫長的通信行業(yè)軟件開發(fā)。幾年間身邊的同事跳槽到互聯(lián)網(wǎng)行業(yè),也有新鮮血液補(bǔ)充進(jìn)來,總體來說人員質(zhì)量是在不斷下降的。直到自己也決定轉(zhuǎn)型,中間也受過鄙視遇過挫折走過彎路,這里將自己的感受跟大家分享下,希望能對(duì)有相同想法的從業(yè)人員有所幫助。
在開始講干貨之前,先了解下互聯(lián)網(wǎng)?;ヂ?lián)網(wǎng)的生命線是客戶體驗(yàn),短時(shí)的砸錢可以迅速擴(kuò)展用戶量,但是如何保持客戶黏度才是真正的重點(diǎn)。互聯(lián)網(wǎng)的精神就一個(gè)字“快”!快包含兩層意義:第一層對(duì)于系統(tǒng)來說(性能快、終端響應(yīng)快、擴(kuò)展快),第二層對(duì)于開發(fā)人員(輕量級(jí)、上手快、開源)。只有夠快才可以提高客戶體驗(yàn),沒人愿意盯著手機(jī)屏幕等5秒鐘以上。至于如何為客戶提供更舒服的服務(wù)方向那屬于策劃部門考慮的問題,不屬于咱們程序員能左右的。
下面開始具體技術(shù)點(diǎn),一切都是圍繞著“快”。
第一, 熟練使用Linux系統(tǒng)。
Why is Linux?開源+安全+便捷。開源意味著成本的降低,今年風(fēng)靡一時(shí)的勒索軟件又給Linux打了一次安全廣告,docker的興起又鞏固了Ubuntu、centos等linux內(nèi)核的霸主地位??梢哉f不會(huì)命令行(桌面會(huì)占用硬件資源,失去了linux的部分優(yōu)勢(shì))操作Linux系統(tǒng)以后將會(huì)寸步難行。
第二, 關(guān)系型數(shù)據(jù)庫選擇MySql而不是Oracle
雖然NoSql的盛行使關(guān)系型數(shù)據(jù)庫市場(chǎng)越來越小,但是80%產(chǎn)品的核心數(shù)據(jù)還是需要關(guān)系型數(shù)據(jù)庫來維護(hù)的。這里推薦大家加強(qiáng)MySql的學(xué)習(xí),Oracle可以選擇性放棄,雖然兩者在使用上沒有太大的區(qū)別,但是Oracle實(shí)在是太貴了!我們?cè)?jīng)7位數(shù)采購過一個(gè)Oracle一體機(jī),硬件條件確實(shí)牛逼到飛起,但是互聯(lián)網(wǎng)中講究的是開源和擴(kuò)展,講究的是叼絲抱團(tuán)PK高富帥。
第三, 掌握NoSql技術(shù)。
需要大家了解NoSql的使用場(chǎng)景,解決的是非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和查詢問題,這個(gè)是關(guān)系型數(shù)據(jù)庫做不到的。推薦學(xué)習(xí)HBase,倒不是因?yàn)镠Base比起其它NoSql產(chǎn)品多優(yōu)秀,而是在學(xué)習(xí)HBase的過程中可以pick up很多其他有用的知識(shí)。例如HBase存儲(chǔ)是依賴Hadoop的HDFS,可以了解下大數(shù)據(jù)是如何存儲(chǔ)的;協(xié)同服務(wù)使用的zookeeper,可以了解下zookeeper的4種文件特性以及自主選拔機(jī)制。
重點(diǎn)需要學(xué)習(xí)HBase中數(shù)據(jù)是如何存儲(chǔ)的,為什么rowkey查詢效率如此之快。
第四, 掌握一種緩存技術(shù)
JVM緩存無法解決的兩大難題:1緩存不夠大,2跨JVM無法共享。應(yīng)運(yùn)而生了各種緩存技術(shù),這里推薦Redis,因?yàn)镽edis已經(jīng)成為了主流,要用我們就用最流行的。Redis在大的方面有Nosql存儲(chǔ)和共享緩存兩種用法,其中共享緩存又分為系統(tǒng)緩存、登錄用戶緩存、ORMapping二級(jí)緩存等流行用法。
第五, 熟練掌握一種MQ
緩存技術(shù)只是解決了IO上的“快”,但是對(duì)邏輯運(yùn)算、業(yè)務(wù)處理等響應(yīng)速度沒有任何提高,何以解憂唯有MQ。MQ用于去瓶頸、非事務(wù)、最終一致性、Event Sourcing、收集器等場(chǎng)景。這里推薦kafka,原因跟redis一樣,流行,功能上基本能涵蓋所有MQ應(yīng)用場(chǎng)景。
第六, 精通一種微服務(wù)框架。
講到這里才有了點(diǎn)Java的影子,傳統(tǒng)軟件開發(fā)講究的是MVC、SSH、SSi這些古董,但是互聯(lián)網(wǎng)里講的是微服務(wù)。微服務(wù)架構(gòu)主流的有2種:Dubbo和Spring Cloud,我們產(chǎn)品經(jīng)歷過Dubbo這條彎路以后最終還是走向了Spring Cloud的懷抱。RestFul的調(diào)用機(jī)制速率從協(xié)議上來開雖然不如RPC,但是應(yīng)用場(chǎng)景廣泛、標(biāo)準(zhǔn)化、可讀性強(qiáng)等優(yōu)點(diǎn)完全掩蓋協(xié)議上的性能差距,再加之Spring Cloud不斷地有大牛添磚加瓦(我在初學(xué)Spring Cloud用的是Brixton,學(xué)完后已經(jīng)出來Dalston版本了),Spring Cloud變得越來越強(qiáng)大,再加上java程序員對(duì)Spring有一種特殊的情結(jié),所以Spring已經(jīng)成為了主旋律。
第七, 分布式事務(wù)機(jī)制
分布式事務(wù)到目前為止還是個(gè)世界通用難題,沒有一顆銀彈能完美的解決這個(gè)問題,而面試官卻偏偏每次面試都要問。解決的中心思想就倆字“取舍”,根據(jù)自己的業(yè)務(wù)場(chǎng)景決定放棄一些東西。方案有:二階段提交、串行調(diào)用、MQ+消費(fèi)、業(yè)務(wù)補(bǔ)救等,阿里等大公司也有自己的解決方案,但也都是貼合自己業(yè)務(wù)來設(shè)計(jì)的。
第八, 了解ELK原理。
E-elasticsearch,是基于Lucene的搜索引擎,它的出現(xiàn)是為了解決索引問題的,但是后來增加了Logstash和Kibana這倆左膀右臂,又組成了ELK這個(gè)日志收集分析套件,這貨正好解決了分布式系統(tǒng)任務(wù)跟蹤和問題定位難的問題,配合Spring cloud的Sleuth又成了性能預(yù)警的神器為服務(wù)治理提供了基礎(chǔ)數(shù)據(jù)。
第九, 云計(jì)算
產(chǎn)品的云化只是個(gè)概念,之所以了解云計(jì)算是為了能讓我們有個(gè)完整的知識(shí)體系。Iaas、Paas層在國內(nèi)已經(jīng)基本成熟,Saas我在國內(nèi)還沒有看到有成型的產(chǎn)品。有興趣的同學(xué)可以注冊(cè)學(xué)習(xí)下美帝的Salesforce,了解下世界上最先進(jìn)的CRM云產(chǎn)品是何等的牛X。國內(nèi)的電信、金融行業(yè)正在砸錢搭建自己的私有云,BAT等有能力的大公司在辦自己的公有云,私有云+公有云也有很廣闊的市場(chǎng)前景,我接觸過的很多企業(yè)都在做混合云的設(shè)計(jì)方案。
第十, 提高英語水平
越是前端的技術(shù)國內(nèi)用的人越少,綠壩里面的資料也就越少,所以為了學(xué)習(xí)或者解決問題經(jīng)常需要參閱國外網(wǎng)站的資料,混跡國外的技術(shù)論壇進(jìn)行交流,所以英語水平有時(shí)間還是要提高下,否則很影響新知識(shí)的吸收速度。
互聯(lián)網(wǎng)中用到的所有的技術(shù)基本都是默認(rèn)可用,滿足“上手快”的要求。大部分組件也都是水平擴(kuò)展的,為了滿足“性能快”的要求。例如Spring Cloud中啟動(dòng)參數(shù)基本都有默認(rèn)值,zookeeper、elasticsearch、logstash、kafka等組件目錄結(jié)構(gòu)都是bin里是啟動(dòng)程序,conf里是配置程序,解壓即可用,都有默認(rèn)值,通過配置做水平擴(kuò)展。
本文寫給跟我一樣正在轉(zhuǎn)型路上的java程序員們,基本涵蓋了各個(gè)方面,也給了我個(gè)人推薦的具體技術(shù)點(diǎn),希望大家少走彎路,把精力用到刀刃上。
-
JAVA
+關(guān)注
關(guān)注
19文章
2970瀏覽量
104834 -
程序員
+關(guān)注
關(guān)注
4文章
952瀏覽量
29817
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論