爲何要轉型呢?雲計算的盛行,致使不少產品已經雲化。另外,長期專一於業務開發致使技術人員自覺乏味,沒有提高空間,自我存在感、成就感大幅降低,而互聯網、移動互聯網、物聯網、大數據、人工智能等一波又一波的浪潮,一個又一個造富神話,充滿了吸引力,而且有很大的成長空間。面試
本文也是基於前文的基礎上,從一些簡單的點入手,引入一些常常用到的開發技能點。從單體應用開發,過渡到分佈式應用開發,技術棧的變動必然致使學習、工做上產生不小的變化,如下列出幾點,來幫助想要轉型的朋友掌握這些技能,以便更好的融入到新團隊中去。數據庫
分佈式通信技術 。單體應用幾乎不涉及到系統間的交互,或者有些經過老舊的WebService的形式進行交互,互聯網分佈式系統傾向於採用輕量化的、更高效率的通信方式,好比基於HTTP、RPC協議等,瞭解基本的原理才能更好的使用它們,常見的,再掌握因此你應當掌握一些經常使用的分佈式框架,好比常見的Apache Dubbo,Spring Cloud,Google gRPC等等。數據交互的格式以有輕量的JSON替代原先比較臃腫的xml格式。編程
緩存技術 。緩存可謂是提升應用效率的大殺器,在互聯網產品應用很是普遍,掌握幾個常見的緩存中間件是頗有必要的。也不少應用場景中,也只能緩存才能保證應用的完整性,好比秒殺場景。緩存按應用場景也有區分,如本地緩存EHcache,Guava等,分佈式緩存Redis,Memcache,hazelcast等等。緩存
非結構化數據存儲 。互聯網產品更多會產生一些碎片化的數據,且沒有嚴謹的數據結構,這些些場景上採用非結構化存儲勢在必行。根據不一樣的數據類型,還能夠細化分爲不一樣的NOSQL庫,好比說文檔數據庫(MongoDB等)、KV庫(Redis,LevelDB等)、圖庫(Neo4j)、列數據庫(Hbase等)、搜索引擎(Solr、ElasticStack等)。安全
異步、多線程技術 。同步的一問一答,能比較及時的處理業務,但當業務量大的時候,爲提升系統可用性、處理效率,每每會進行異步、多線程方式進行處理。線程池技術,高併發編程顯的尤其重要。服務器
消息中間件 。MQ自然具備系統解耦的優點,應用場景也比較豐富,如在分佈式事務中做爲中間辦來協調事務、統一的消息(APP推送,短信等等)推送分發、延遲隊列,特別是在高併發高承載的狀況下進行削峯平谷,緩解系統壓力。比較常見的RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ、Kafka等等。網絡
分佈式事務 。單體系統的事務很容易控制,當系統擴展爲不少個子系統時,事務會分面在各個子系統中,只有保證分佈式事務的準確性,才能保證數據的完整性。目前如今很通用的分佈式開源解決方案比較少,你們都在採用本身的方案在作,阿里最近開源的Fescar是一個比較有潛力的方案,還有華爲的SAGA方案等等。數據結構
安全開發 。安全開發在全部系統中都存在,只不過傳統的單體應用開發,特別是外包行業,基本不多考慮。而互聯網產品面向大衆,因此網絡安全、數據安全更爲關鍵,好比常見的XSS攻擊、CSRF攻擊、撞庫、拖庫等等,都須要在開發、測試、運維過程當中重點關注。 OWASP TOP 10 或 CWE top 25 都有比較詳細的描述,能夠關注下。多線程
運維層面 。Linux常見的操做應當掌握,畢竟咱們不少的服務器都是運行的x86架構下的Linux服務器中,即使是不一樣的分發版本,命令不少也是通用的。Devops文化已經再也不陌生,開發&運維已經不可分割開來單獨做業務,持續集成(CI)、持續部署(CD)技術將兩者的邊界變的更模糊,共生共存。架構
下面蝗幾點高級進階點,這些點並不是必需要掌握,但後續確定會遇到,技多不壓身,有條件的話,能夠適當的探索一二,擴展眼界,提高格局。
鏈路追蹤技術 。單個系統裏的日誌能夠按系統交互的前後順序輸出,單系統分拆後,系統日誌分別存在於各個子系統中,再區分請求的前後順序難度就比較大了,致使追蹤定位問題,比較繁瑣複雜。還好Google又一次引領了潮流,Dapper論文的出現,催生出一大批開源組件的出現,Zipkin、Pinpoint、CAT等應用比較普遍的幾個。
集羣部署 。聽起來比較搞大上,無非是將原來一臺機器乾的事,分散在不一樣機器執行而已,對外提供較高的可用性、計算能力。對於每一個用到的中間件幾乎都會有主從、主備、集羣、高可用等部署策略。
高可用技術 ,與集羣技術應該是關聯性很大的,更可能是來應對單點故障,簡寫稱爲HA(High available),好比可能會常常用到keepalived來保證Nginx、Apache、Tomcat的HA策略;好比會用到Supervisor來保證某些進程掛掉後,自動拉起。
容器技術 。Docker應用的普及,將雲原生應用的提到史無前例高度。Kubernate等容器編排工具更加快了雲原生應用(Cloud Native)的普及,CNCF孵化下的各類開源中間件也爲業務提供了強大的技術支撐。
因爲傳統軟開發過程當中較少的涉及到如上一些技術點,因此須要在工做之餘進行練習掌握,這對後續的面試求職也有很大的幫助。沒有工做場景,就沒有掌握相應的技術,沒有相應的技術支撐,就沒有機會進入互聯網行業,畢竟不少公司都是但願你來就能夠上手產出價值,而不是培訓一兩月時間再上崗。
做者:growithus來源:歪脖貳點零