聲明下此文僅是作者從事Android開(kāi)發(fā)再到學(xué)習(xí)后端的一些見(jiàn)解和經(jīng)歷仁者見(jiàn)仁智者見(jiàn)智!
今天給大家分享一些移動(dòng)端(Android)開(kāi)發(fā)學(xué)習(xí)后端開(kāi)發(fā)(Java
Web)的一些事兒,不知道從什么時(shí)候開(kāi)始身邊的同事都開(kāi)始陸陸續(xù)續(xù)的在朋友圈發(fā)一些后端的文章如:Nginx、Docker、k8s類(lèi)的知識(shí),后來(lái)才發(fā)現(xiàn)大家都在學(xué)習(xí)一些后端的開(kāi)發(fā)工作,可能是感覺(jué)移動(dòng)端技術(shù)有些膩了了吧!
甚至還有個(gè)iOS同事有在業(yè)余時(shí)間學(xué)習(xí)Java、Servlet、Spring等后端知識(shí),這讓我深有感觸我在學(xué)校期間也學(xué)過(guò)Java
Web的知識(shí)后來(lái)因?yàn)锳ndroid能夠做一些界面元素好玩,容易帶來(lái)成就感,再加上當(dāng)時(shí)的Android真是火到天際。
大概在16年的時(shí)候,我就有意無(wú)意的在開(kāi)始自己學(xué)習(xí)后端知識(shí)了,那時(shí)候我的工作主要還是做App,偶爾學(xué)習(xí)下后端知識(shí),可惜的是當(dāng)時(shí)工作的單位后端是用的Python技術(shù)棧,由于當(dāng)時(shí)我比較鐘情于Java,所有沒(méi)有學(xué)習(xí)Python~~。
到了18年,我入職一家二線互聯(lián)網(wǎng)公司還是做Android開(kāi)發(fā)工作,當(dāng)前公司正處于業(yè)務(wù)高速發(fā)展期擴(kuò)張很快,當(dāng)然變化也有多。當(dāng)時(shí)就感覺(jué)移動(dòng)端的開(kāi)發(fā)人員在各種技術(shù)會(huì)議上時(shí)很低迷,基本很少發(fā)表意見(jiàn),舉個(gè)例子:
一開(kāi)始移動(dòng)端時(shí)間類(lèi)型使用的是int,后面一哥們改為long,再后來(lái)一技術(shù)專(zhuān)家要求改為字符串說(shuō)是:便于后端閱讀!這也可以理解關(guān)鍵是移動(dòng)端還得兼容int、long、字符串型的時(shí)間。
改就改吧又沒(méi)有做到統(tǒng)一標(biāo)準(zhǔn),像這樣的改動(dòng)做為移動(dòng)端開(kāi)發(fā),完全可以懟回去才是的??!雖然改起來(lái)是小事,但也說(shuō)明了一個(gè)問(wèn)題:移動(dòng)端開(kāi)發(fā)話語(yǔ)權(quán)真的挺低的,懟又懟不過(guò)人家~~。
再說(shuō)另外一個(gè)故事,我們組來(lái)了位移動(dòng)端技術(shù)專(zhuān)家,和我們聊了很久,其中有個(gè)問(wèn)題讓印象深刻:移動(dòng)端為什么很少有架構(gòu)師這個(gè)職業(yè)?當(dāng)時(shí)我一聽(tīng)感覺(jué)確實(shí)是的,很少有公司會(huì)招移動(dòng)端架構(gòu)師,移動(dòng)端開(kāi)發(fā)并不像后端開(kāi)發(fā)那樣久遠(yuǎn),它的發(fā)展也是由Android、iOS的出現(xiàn)才興起的,也沒(méi)有什么高并發(fā)、高可用之類(lèi)的術(shù)語(yǔ),移動(dòng)端關(guān)注的更多的是界面、用戶體驗(yàn)方面的問(wèn)題。那一天聊了很久,從那一次我得出一個(gè)結(jié)論:作為移動(dòng)端開(kāi)發(fā),很難做到技術(shù)大佬級(jí)別(相比較后端開(kāi)發(fā))。畢竟現(xiàn)在的互聯(lián)網(wǎng)都是是數(shù)據(jù)、業(yè)務(wù)為主的,一個(gè)經(jīng)驗(yàn)豐富移動(dòng)端開(kāi)發(fā)工程師,沒(méi)寫(xiě)過(guò)業(yè)務(wù),也沒(méi)有大數(shù)據(jù)處理經(jīng)驗(yàn)想要成為技術(shù)Leader、CTO、技術(shù)VP太難呢!
為什么要學(xué)習(xí)后端呢?
現(xiàn)在大部分公司都是業(yè)務(wù)驅(qū)動(dòng)型公司,就是業(yè)務(wù)為主,技術(shù)為輔。而且公司的業(yè)務(wù)都會(huì)放在后端,跟Web前端、移動(dòng)端關(guān)系不大,移動(dòng)端只做數(shù)據(jù)的收集與展示不會(huì)參與復(fù)雜業(yè)務(wù)邏輯流程,所以說(shuō):精華其實(shí)都在后端。
舉個(gè)例子,如果你們公司的App日活達(dá)到百萬(wàn)級(jí)別,說(shuō)明App兼容性、適配、用戶體驗(yàn)、各項(xiàng)關(guān)鍵指標(biāo)優(yōu)化的非常好,而支撐這日活百萬(wàn)的關(guān)鍵性技術(shù)還是在后端,所以要不要考慮學(xué)習(xí)下后端呢~~。
你說(shuō)你要會(huì)點(diǎn)后端知識(shí),再跟后端小哥來(lái)個(gè)結(jié)對(duì)編程,那效率高的不要不要的,一個(gè)眼神就懂(今晚跟你媽說(shuō)學(xué)Java~~)!
我是怎么學(xué)Java后端的?
可能我是比較幸運(yùn),在年初時(shí)和朋友合作了一個(gè)20w的外包項(xiàng)目,我主要負(fù)責(zé)后端的開(kāi)發(fā)和架構(gòu)。這個(gè)項(xiàng)目對(duì)我來(lái)說(shuō)還是挺大的,之前的我都是負(fù)責(zé)一些App的設(shè)計(jì)和開(kāi)發(fā)工作這次做后端的開(kāi)發(fā),多少有點(diǎn)生疏。
當(dāng)時(shí)搞這個(gè)項(xiàng)目,客戶是說(shuō)需要千萬(wàn)級(jí)的用戶,那時(shí)的我也沒(méi)有千萬(wàn)級(jí)的概念,只覺(jué)得用微服務(wù)應(yīng)該是可以頂?shù)淖。婚_(kāi)始是使用的單服務(wù)、單數(shù)據(jù)庫(kù)的形式,后面面臨分布式問(wèn)題改為多服務(wù)、單數(shù)據(jù)庫(kù)的形式還緩了緩這個(gè)問(wèn)題,這也算業(yè)界難題當(dāng)時(shí)還考慮過(guò)2PC、seate、RabbitMQ那時(shí)候沒(méi)時(shí)間、人力就沒(méi)有繼續(xù)弄了(好機(jī)智~~),后面也陸陸續(xù)續(xù)的解決了一些碰到的一些問(wèn)題如:
* 微服務(wù)工程的組織(單服務(wù)單倉(cāng)庫(kù) or 多服務(wù)單倉(cāng)庫(kù))
* 項(xiàng)目工程依賴(lài)管理(Maven parent工程)
* Docker本地調(diào)試(阿里云vpn)
* Dubbo服務(wù)接口倉(cāng)庫(kù)(Nexus倉(cāng)庫(kù))
* ...
現(xiàn)在只能想起來(lái)這么多了,實(shí)際碰到問(wèn)題比這個(gè)更多!所幸是都一一解決掉了,歷時(shí)2個(gè)月左右這個(gè)項(xiàng)目也正常上線了,不過(guò)后面也出現(xiàn)過(guò)一些問(wèn)題如:機(jī)器cpu負(fù)載一直在90%以上,那一天我排查了很久,因?yàn)榛A(chǔ)設(shè)施不全只能通過(guò)看日志來(lái)排查,最后發(fā)現(xiàn)是有在刷任務(wù),一直在頻繁訪問(wèn)某個(gè)接口,發(fā)現(xiàn)問(wèn)題后就及時(shí)學(xué)習(xí)了限流方面的知識(shí),在網(wǎng)關(guān)做了個(gè)限流,cpu才穩(wěn)定下來(lái)。
再有一次是因?yàn)榧夹g(shù)方案的問(wèn)題,這個(gè)項(xiàng)目有一個(gè)無(wú)限級(jí)的推廣,當(dāng)時(shí)選的方案是嵌套集
因?yàn)樗樵兤饋?lái)很快,但是我們忽略了他修改代價(jià)實(shí)在是太高,導(dǎo)致系統(tǒng)用戶到20w的時(shí)候推廣關(guān)系插入變的超級(jí)慢,后來(lái)就不得不重新選一個(gè)方案用的:閉包表
插入、查詢效率都可以,只是有些費(fèi)空間。后面花了大概兩天的時(shí)候才把數(shù)據(jù)修復(fù)過(guò)來(lái)(一口老血~~)。
總的來(lái)說(shuō)不會(huì)的就學(xué)習(xí)、問(wèn)朋友,記憶比較深刻的是一次數(shù)據(jù)庫(kù)一直95%以上,學(xué)的Java知識(shí)較多,對(duì)數(shù)據(jù)庫(kù)算是了解還不多那時(shí)候,找了一天也沒(méi)找出個(gè)問(wèn)題,最后還是問(wèn)朋友原來(lái)是沒(méi)加索引查數(shù)據(jù)都是全表掃描,現(xiàn)在想想真是無(wú)語(yǔ),后來(lái)朋友還開(kāi)玩笑說(shuō)后續(xù)咨詢要收費(fèi)了,哈哈。
歡迎關(guān)注微信公眾號(hào)《架構(gòu)文摘》,精品技術(shù)文章第一時(shí)間推送。
熱門(mén)工具 換一換
