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