1. 程式人生 > >服務端開發所需技能歸納

服務端開發所需技能歸納

增刪改 www. 除了 提前 開發 可靠 是否 隊列 mes

如果你沒有接觸過服務端開發,是否會好奇服務端的同學究竟做了什麽?僅僅是做數據增刪改查這樣的事情嗎?這篇文章告訴你,服務端的開發者都做了哪些事情,他們需要掌握和使用到哪方面的技術。本文適合有學習服務端開發想法或者初級的服務端開發者們閱讀。不是技術幹貨但是希望能提供入門或初步進階方向上的指引。

進入正題吧。

level1

1.熟悉並能使用一門服務端語言,會使用一個開發框架

2.會在服務器上搭建環境。環境不會搭怎麽搞生產哦,拿lamp來說linux和apache、mysql、php四者擔任的角色要清楚。這個級別的開發者不說每個軟件都能自己裝,就算是集成環境也是你要會的,像wampserver、xampp這樣的。當然,這些前提是你要基本會使用你所用的服務器比如linux。

3.會使用一種數據庫。比如關系型數據庫mysql,能熟練寫出增刪改的語句和不算很復雜的查詢語句,再如了解各種方式的多表查詢有哪些不同等數據庫技能還是需要的。

4.了解http通信協議。跨平臺的交互一般的http是使用比較廣泛的,至少對它大概要了解,比如:http是HyperText Transfer Protocol的縮寫,英文常忘的話至少中文要知道是超文本傳輸協議,再比如你得清楚請求報文通常包含哪些部分、常見的服務器返回碼對應的含義。

5.會使用一種數據格式。服務端和移動(前)端建立了聯系,數據的傳輸也需要一種協議格式去統一。json是目前使用率最高的格式了。json的數據格式還是簡單明了易學的,主要是要了解如何使用它較好的去定義接口,統一返回格式,舉個栗子{code:"200","message":"OK","data":{"xx":"xx"}},code定義業務碼,message顯示服務端消息,返回數據寫在data中,盡量寫出對移動(前)端友好的接口。這裏說個題外話,我們常說好的用戶體驗更能讓用戶接受和使用,那麽,做為寫接口的開發者為調用者提供的其實也是一種服務,調用者就是我們的用戶,同樣要註重體驗。包括但不限於定義語義明確的字段、良好統一的傳參方式和返回值風格、清晰易讀的文檔。

有了以上幾種技能,基本上可以搭建出簡單的服務端並寫接口給其他端的開發同學調用了。

level2

1.熟練運用一門或以上語言,了解常見服務端語言的異同和優勢。如果你只了解一門語言那麽你一定會少學到很多東西,例如:為什麽php適合快速實現業務?為什麽node.js適合處理高並發?為什麽很多公司喜歡用java、c++去數據層服務?

2.熟練使用數據庫,有不錯的數據庫優化能力。遵循木桶短板原理,服務端的性能瓶頸多出現在數據庫方面,所以優秀的數據庫操作方式能大幅度提高項目或系統的性能,所以開發者需要很熟悉自己所用的數據庫的特點,比如關系型數據庫和非關系型數據庫的異同和其各自適應的業務,再比如mysql數據庫中Innodb和mysiam之間的特點,再比如Innodb中如何更好的利用索引,再比如...

3.理解和熟悉各種網絡協議。除了熟悉http外,了解https的原理為什麽更安全。要學會如何在自己的服務器配置https服務,了解單/雙向驗證原理。再如要了解tcp/ip協議、長/短連接、socket等等。

4.良好的業務設計能力。壞的業務設計或者過於復雜,可能導致使用流程復雜,項目不好維護,資源浪費,影響新業務等一系列問題。舉個站內信的例子:站長要給擁有500W用戶量的所有用戶發一條消息的並且要標記用戶是否讀取。如果按正常的邏輯在消息表為每個用戶插入一條新消息然後標記為未讀,等待用戶讀取時標記為已讀,這個方式的話一次性就要插入500W條記錄,這僅僅是一條消息,那麽消息頻繁發送呢?用戶量更加多呢?越多數據同時插入數據庫的性能也將大幅度下降,而且有些用戶或許永遠都不可能上線去看這條消息了,數據庫資源也大大浪費。那麽,換個解決方案,等待用戶上線的時候去系統表查詢是否有新的系統消息,有的話再作為未讀消息插入到消息表裏面。這樣是不是就優化了很多呢,同時解決了插入大量數據和資源浪費的問題。

5.有一些自己的可靠的開發套路。其實就是踩過坑後的一些可行的解決方案,比如總結出自己的一些性能優化方案、高並發的解決方案。這個概念模糊不好描述但是不可缺少。

level3

1.在level1、2的技能點上不斷的深入、擴展理解。

2.模塊化拆分能力,可擴展的編程思維。能將業務清晰理解並合理拆分模塊,技術上比如單個項目拆分到數據層、緩存層、展示層、資源層、消息隊列等更細分模塊時,業務上比如電商系統拆分為用戶模塊、訂單模塊、商品模塊等,做任何事情前先考慮如何拆分和擴展。再說擴展,假如緩存服務以前是由一臺服務器提供要擴展到多臺服務器時的解決方案,即為一臺服務器擴展到多臺服務器時能輕松過渡提前做好準備。

3.附加技能,不錯的運維能力。有了這個能力能快速的排查系統故障,能自如的安裝卸載自己需要的模塊,能更好更方便的做壓測調優,能清楚的知道項目的性能和承受力,修改優化起來得心應手好處多多。所以說,運維能力不必要嗎?有運維能力的開發工程師才是好產品經理。

level++

到這裏你覺得服務端開發是難是易?我自己認為,服務端相對移動(前)端來說大部分情況需要的經驗比編程能力要高。應屆生中可以將一個app做到效果和體驗很好的見過蠻多,但是能開出完整一套高性能高可用服務端的缺很少。

結合目前的經驗和能力大概歸納了這幾個等級,每個等級所涉及的技能多少有點主觀性,但是大致方向如此。編程路上沒有盡頭,還需要不斷的學習。堅持主動更新閱歷,總結新舊知識,當有更多的見解時我也會繼續總結出來。



作者:newo
鏈接:https://www.jianshu.com/p/3112115a10fd

服務端開發所需技能歸納