移動端眼里的后端開發(fā)

一铲球、分工

1挺庞、原始社會

當(dāng)大自然的第一批原始人在大自然中(真正的荒野求生),為了生存選擇群居抱團稼病,為了遮風(fēng)擋雨躲避猛獸住進山洞选侨。有些原始人跑得快膽子大就去追逐打獵,有些人跑得慢就去開荒種地然走,有些原始人喜歡發(fā)明創(chuàng)造就打造石器援制,有些原始人心靈手巧就編制樹葉衣服...

2、社會大分工

馬克思認(rèn)為產(chǎn)生分工的本質(zhì)是生產(chǎn)力不斷發(fā)展的結(jié)果芍瑞。

恩格斯在《家庭晨仑、私有制和國家的起源》一書中提出的發(fā)生在東大陸原始社會后期的三次社會大分工,

游牧部落從其余的野蠻人群中分離出來拆檬;手工業(yè)和農(nóng)業(yè)的分離洪己;商人階級的出現(xiàn)。

img

3秩仆、技術(shù)大分工

隨著互聯(lián)網(wǎng)的發(fā)展码泛,以開發(fā)語言或平臺為劃分標(biāo)準(zhǔn)的技術(shù)分工也越來越細,演變出多種技術(shù)棧澄耍。

前端開發(fā):Html噪珊、Css、Js齐莲、React痢站、Vue等

移動端開發(fā):Android、iOS选酗、React Native阵难、Flutter等

后端開發(fā):Java、C++芒填、PHP呜叫、Go空繁、Python、數(shù)據(jù)采集朱庆、音視頻開發(fā)等盛泡。

二、后端

筆者做了多年的iOS娱颊,本以為可以一勞永逸傲诵,還是太Naive了啊。

計劃總趕不上變化箱硕,活到老學(xué)到老是不變的真理拴竹,拒絕給自己設(shè)限。

img

去年在項目中沒有iOS大的需求剧罩,也正好之前對后端開發(fā)比較好奇栓拜,就轉(zhuǎn)做后端Java開發(fā)一年。

從開始的接口Crud(增刪改查)斑响,一個接口開發(fā)菱属,一個模塊的開發(fā)到一個完整項目的整體開發(fā)钳榨、部署舰罚、發(fā)版、上線薛耻、跟蹤营罢、迭代的全流程參與。

一個移動開發(fā)眼中的Java服務(wù)端開發(fā)不就是給客戶端提供接口么饼齿?

img

說的沒錯饲漾!但不止如此!

除了提供接口外缕溉,還有其他工作

1考传、服務(wù)部署(把jar包部署到測試、線上不同的機器上证鸥,這不是運維做的事么)

申請機器僚楞、申請lvs、申請域名(自己按照公司流程申請配置)

nginx負載均衡部署(類似路由分發(fā)到不同的機器上枉层,配置web啟動頁)

服務(wù)遷移泉褐、數(shù)據(jù)庫遷移、數(shù)據(jù)庫合并(這不是db要做的事么)

2鸟蜡、數(shù)據(jù)清洗(一年內(nèi)整理合并過幾千個excel膜赃,這tm不是大數(shù)據(jù)工程師做的是事么)

數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入導(dǎo)出(導(dǎo)入清洗好的excel或?qū)С鰌m要的統(tǒng)計數(shù)據(jù))

3、應(yīng)急響應(yīng)(如果業(yè)務(wù)或機器掛了揉忘,半夜也會起來改跳座,這時候才體會到做客戶端的快樂)

4端铛、編寫技術(shù)架構(gòu)、數(shù)據(jù)庫設(shè)計等文檔(為了iso9001標(biāo)準(zhǔn)或政府/企業(yè)政府項目的驗收文檔)

5疲眷、架構(gòu)抽象(研究最適合的架構(gòu)沦补,分子化業(yè)務(wù),調(diào)研不同的框架或工具)

6咪橙、安全過審(同一ip限制夕膀、請求次數(shù)限制、https證書等)

7美侦、考慮高并發(fā)引發(fā)的系列問題(這是日活月活量大的產(chǎn)品需要考慮的)...

img

舉個栗子:

就像移動端開發(fā)一個登錄功能产舞,根據(jù)PM、UI菠剩、UE的設(shè)計做出界面易猫,只需要輸入用戶名和密碼,然后等待響應(yīng)結(jié)果具壮。

從不用考慮登錄頻率限制准颓,IP限制,驗證碼是否有效棺妓,密碼是否匹配攘已,登錄會話如何保持,安全防刷等怜跑。

移動端只需要關(guān)心你調(diào)用Api的Http status 是否為200样勃。

后端的邏輯還是比較復(fù)雜的,有一些成熟的框架可以滿足大部分場景性芬。

img

前端的追求:界面美觀驚艷峡眶、頁面交互流暢、業(yè)務(wù)邏輯清晰植锉、組件化合理辫樱、對外sdk穩(wěn)定等。

后端的追求:接口穩(wěn)定俊庇、架構(gòu)合理狮暑、業(yè)務(wù)邏輯清晰、模塊拆分合理暇赤、支持高并發(fā)等心例。

三、歷程

下列是Java企業(yè)級項目開發(fā)中的不同架構(gòu)模式鞋囊。一年不長止后,但以下幾種架構(gòu)模式都接觸參與過。

1、JSP(前后端混合開發(fā))

img
 JSP全稱Java Server Pages译株,是一種動態(tài)網(wǎng)頁開發(fā)技術(shù)瓜喇。它使用JSP標(biāo)簽在HTML網(wǎng)頁中插入Java代碼。標(biāo)簽通常以<%開頭以%>結(jié)束歉糜。

JSP是一種Java servlet乘寒,主要用于實現(xiàn)Java web應(yīng)用程序的用戶界面部分。網(wǎng)頁開發(fā)者們通過結(jié)合HTML代碼匪补、XHTML代碼伞辛、XML元素以及嵌入JSP操作和命令來編寫JSP。
img
 JSP通過網(wǎng)頁表單獲取用戶輸入數(shù)據(jù)夯缺、訪問數(shù)據(jù)庫及其他數(shù)據(jù)源蚤氏,然后動態(tài)地創(chuàng)建網(wǎng)頁。

JSP標(biāo)簽有多種功能踊兜,比如訪問數(shù)據(jù)庫竿滨、記錄用戶選擇信息、訪問JavaBeans組件等捏境,還可以在不同的網(wǎng)頁中傳遞控制信息和共享信息于游。

2、Spring Boot (后端獨立的單體服務(wù))

SpringBoot是由Pivotal團隊在2013年開始研發(fā)垫言、2014年4月發(fā)布第一個版本的全新開源的輕量級框架贰剥。它基于Spring4.0設(shè)計,不僅繼承了Spring框架原有的優(yōu)秀特性骏掀,而且還通過簡化配置來進一步簡化了Spring應(yīng)用的整個搭建和開發(fā)過程鸠澈。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突柱告,以及引用的不穩(wěn)定性等問題得到了很好的解決截驮。

其設(shè)計目的是用來簡化新Spring應(yīng)用的初始以及開發(fā)過程。該框架使用了特定的方式來進行配置际度,從而使開發(fā)人員不再需要定義樣板化的配置葵袭。簡而言之,Spring Boot通過提供默認(rèn)配置的方式整合了所有的框架乖菱,讓我們可以更加簡單坡锡、快速、方便地構(gòu)建應(yīng)用程序窒所。

img
img

3鹉勒、Spring Cloud (微服務(wù))

微服務(wù)是一種架構(gòu)風(fēng)格,即將單體應(yīng)用劃分為小型的服務(wù)單元吵取,微服務(wù)之間使用 HTTP 的 API 進行資源訪問與操作禽额。這一點和SOA很類似。

微服務(wù)架構(gòu)強調(diào)業(yè)務(wù)系統(tǒng)需要徹底的組件化和服務(wù)化,一個組件就是一個產(chǎn)品脯倒,可以獨立對外提供服務(wù)实辑。微服務(wù)不再強調(diào)傳統(tǒng)SOA架構(gòu)里面比較重的ESB企業(yè)服務(wù)總線。微服務(wù)強調(diào)每個微服務(wù)都有自己獨立的運行空間藻丢,包括數(shù)據(jù)庫資源剪撬。微服務(wù)架構(gòu)本身來源于互聯(lián)網(wǎng)的思路,因此組件對外發(fā)布的服務(wù)強調(diào)了采用HTTP Rest API的方式來進行悠反。相比SOA而言残黑,微服務(wù)的切分粒度會更小。

所以斋否,微服務(wù)架構(gòu)是 SOA 架構(gòu)思想的一種擴展萍摊,更加強調(diào)服務(wù)個體的獨立性、拆分粒度更小如叼。

img

4冰木、Spring Cloud Alibaba(阿里微服務(wù))

Spring Cloud Alibaba 是阿里巴巴提供的微服務(wù)開發(fā)一站式解決方案,是阿里巴巴開源中間件與 Spring Cloud 體系的融合笼恰。
img

阿里開源組件

Sentinel:把流量作為切入點踊沸,從流量控制、熔斷降級社证、系統(tǒng)負載保護等多個維度保護服務(wù)的穩(wěn)定性逼龟。

Nacos:一個更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺追葡。

RocketMQ:一款開源的分布式消息系統(tǒng)腺律,基于高可用分布式集群技術(shù),提供低延時的宜肉、高可靠的消息發(fā)布與訂閱服務(wù)匀钧。

Dubbo:Apache Dubbo? 是一款高性能 Java RPC 框架。

Seata:阿里巴巴開源產(chǎn)品谬返,一個易于使用的高性能微服務(wù)分布式事務(wù)解決方案之斯。

Alibaba Cloud ACM:一款在分布式架構(gòu)環(huán)境中對應(yīng)用配置進行集中管理和推送的應(yīng)用配置中心產(chǎn)品。

Alibaba Cloud OSS: 阿里云對象存儲服務(wù)(Object Storage Service遣铝,簡稱 OSS)佑刷,是阿里云提供的海量、安全酿炸、低成本瘫絮、高可靠的云存儲服務(wù)。您可以在任何應(yīng)用填硕、任何時間麦萤、任何地點存儲和訪問任意類型的數(shù)據(jù)。

Alibaba Cloud SchedulerX: 阿里中間件團隊開發(fā)的一款分布式任務(wù)調(diào)度產(chǎn)品,提供秒級频鉴、精準(zhǔn)栓辜、高可靠、高可用的定時(基于 Cron 表達式)任務(wù)調(diào)度服務(wù)垛孔。

四藕甩、工程

查看相關(guān)歷程的項目工程代碼...

1、JSP工程查看

https://github.com/GeeTeam/gt-java-sdk

2周荐、SpringBoot工程

https://github.com/xkcoding/spring-boot-demo

3狭莱、Spring Cloud工程

https://github.com/mxdldev/spring-cloud-flycloud

4、Spring Cloud Alibaba

https://github.com/funtl/spring-cloud-alibaba-dubbo

五概作、矛盾

同為產(chǎn)品服務(wù)腋妙,后端和前端相互依存,也難免有一些相愛相殺的矛盾讯榕。

1骤素、沒有文檔

可以使用Swagger或mook,若有修改愚屁,及時更新并同步济竹。

2、文檔不全

建議這樣

{
     code : 0/ 1/ 2/ 3,  // 0代表正常霎槐,1是參數(shù)有誤送浊,2是用戶不存在,3是用戶沒權(quán)限等
     msg : 'xxxx',  //表示此操作的提示信息( message )丘跌,一般只用來顯示操作失敗時提示信息
     data : [],  //表示此操作的返回值( result data)
     count : x  //返回的數(shù)據(jù)條數(shù)
}

3袭景、版本問題

比如一個/user接口,可加上版本號例如/user/1.3闭树,為了適配不同階段客戶端的接口耸棒。

4、接口參數(shù)校驗

比如輸入一個身份證號蔼啦,客戶端可以校驗榆纽,服務(wù)器在接口側(cè)也可以做校驗。兩側(cè)建議都做校驗捏肢,這樣最穩(wěn)妥,就怕兩側(cè)都不做校驗饥侵,就扯犢子了鸵赫。

5、問題接口對接

客戶端定位問題躏升,可以通過代理或瀏覽器擴展功能準(zhǔn)確定位到那些細節(jié)辩棒,用事實截圖及時溝通。

6、需求推諉

比如有個需求一睁,客戶端可以實現(xiàn)钻弄,后端也可以實現(xiàn)。這種情況建議后端來做者吁,原因是后端可以統(tǒng)一來做窘俺,邏輯一致,降低風(fēng)險复凳,節(jié)省人力成本瘤泪。如果變動變更的風(fēng)險,客戶端尤其是iOS客戶端發(fā)版審核比較麻煩育八,后端的話直接一改發(fā)版后相當(dāng)于熱更新效果对途。

六、小結(jié)

總結(jié)一下髓棋,移動端本身有一套完整的知識體系实檀,當(dāng)接觸到后端的體系后,才看到后端跟前端有相近的地方按声,也有差異的地方劲妙。每種角色都有相應(yīng)的優(yōu)勢和劣勢,以全棧的角度看技術(shù)儒喊,還是有點意思的镣奋。

當(dāng)一門語言精通后,可以多種語言淺嘗輒止怀愧。語言底層的規(guī)則是類似的侨颈,畢竟架構(gòu)模式設(shè)計思想很多是類似的。

學(xué)而時習(xí)之芯义,不亦說乎?
img
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哈垢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扛拨,更是在濱河造成了極大的恐慌耘分,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绑警,死亡現(xiàn)場離奇詭異求泰,居然都是意外死亡,警方通過查閱死者的電腦和手機计盒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門渴频,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人北启,你說我怎么就攤上這事卜朗“蔚冢” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵场钉,是天一觀的道長蚊俺。 經(jīng)常有香客問我,道長逛万,這世上最難降的妖魔是什么泳猬? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮泣港,結(jié)果婚禮上暂殖,老公的妹妹穿的比我還像新娘。我一直安慰自己当纱,他們只是感情好呛每,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坡氯,像睡著了一般晨横。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上箫柳,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天手形,我揣著相機與錄音,去河邊找鬼悯恍。 笑死库糠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涮毫。 我是一名探鬼主播瞬欧,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罢防!你這毒婦竟也來了艘虎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤咒吐,失蹤者是張志新(化名)和其女友劉穎野建,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恬叹,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡候生,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了妄呕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陶舞。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绪励,靈堂內(nèi)的尸體忽然破棺而出肿孵,到底是詐尸還是另有隱情,我是刑警寧澤疏魏,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布停做,位于F島的核電站,受9級特大地震影響大莫,放射性物質(zhì)發(fā)生泄漏蛉腌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一只厘、第九天 我趴在偏房一處隱蔽的房頂上張望烙丛。 院中可真熱鬧,春花似錦羔味、人聲如沸河咽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忘蟹。三九已至,卻和暖如春搁凸,著一層夾襖步出監(jiān)牢的瞬間媚值,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工护糖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留褥芒,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓嫡良,卻偏偏與公主長得像锰扶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子皆刺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容