后台开发技术(1)--概述
說到后臺開發(fā),首選就有一個問題:什么是后臺開發(fā)。就我理解,就是做服務(wù)器端開發(fā)。在服務(wù)器端運(yùn)行著不同功能的服務(wù),有直接與客戶端連接的,有實(shí)現(xiàn)某一特定業(yè)務(wù)的比如用戶注冊登錄,有數(shù)據(jù)存儲的如基于mysql,memcached,redis等做的存儲系統(tǒng),除此之外還有一些滿足運(yùn)維監(jiān)控系統(tǒng),運(yùn)營統(tǒng)計(jì)系統(tǒng)等。
那么后臺開發(fā)需要哪些技術(shù)呢?回答這個問題之前先來看看一般的后臺系統(tǒng)架構(gòu),如下圖所示:
?
后臺系統(tǒng)一般分為接入層,業(yè)務(wù)邏輯層和數(shù)據(jù)存儲層,它們各自有不同的職責(zé):
接入層主要負(fù)責(zé)客戶端接入把用戶請求分發(fā)到業(yè)務(wù)邏輯層,客戶端不論是什么是瀏覽器還是APP類型的首先都要連接到接入層,任何請求都是通過接入層轉(zhuǎn)發(fā),客戶端不用戶關(guān)心功能具體有哪個服務(wù)實(shí)現(xiàn)的。接入層主要解決跟用戶的連接問題。
業(yè)務(wù)邏輯層負(fù)責(zé)實(shí)現(xiàn)具體的業(yè)務(wù)功能,滿足業(yè)務(wù)需求。比如在微信中你輸入手機(jī)號碼和登陸密碼進(jìn)入微信,跟好友聊天發(fā)消息都是業(yè)務(wù)層中不同的業(yè)務(wù)模塊完成的。從產(chǎn)品的角度看它是整個后臺的核心,不論是接入層還是數(shù)據(jù)存儲層都是為它做支撐的。
數(shù)據(jù)存儲層負(fù)責(zé)保存業(yè)務(wù)所需的數(shù)據(jù),提供業(yè)務(wù)數(shù)據(jù)的讀寫支撐。
后臺系統(tǒng)的三層架構(gòu)需要根據(jù)具體情況動態(tài)調(diào)整,而不是一成不變的。具體需要怎樣調(diào)整需要看具體的業(yè)務(wù)場景。首先要分析出系統(tǒng)的瓶頸在哪里,重點(diǎn)投入提高供瓶頸,其他地方則可以做的粗糙一些,樣可以避免過度設(shè)計(jì),提高效率。
比如開發(fā)一個新的產(chǎn)品時,這個產(chǎn)品是沒什么用戶的,可能就有幾百個種子用戶。功能上也不知道用戶喜歡什么功能。這個時候基本沒什么瓶頸的,這個時候就要遵循簡單原則,架構(gòu)上盡可能精簡,只做最核心的一些功能,目的是要盡快上線驗(yàn)證。這個時候接入層和業(yè)務(wù)邏輯層可以合并,直連數(shù)據(jù)庫就行了。
隨著用戶量增加,產(chǎn)品功能越來越復(fù)雜,就會遇到第一個瓶頸,不同的業(yè)務(wù)場景瓶頸也不同。比如視頻的瓶頸一般在網(wǎng)卡I/O上,實(shí)時語音瓶頸一般在接入層上,電商類網(wǎng)站瓶頸一般在圖片存儲上即磁盤I/O,需要加密壓縮的瓶頸一般在CPU上。
分析瓶頸并優(yōu)化是后臺開發(fā)的核心能力,它需要以下幾個方面的技術(shù)支撐:
?基礎(chǔ):
1.服務(wù)器硬件硬件的性能,網(wǎng)卡性能,磁盤I/O性能,CUP性能。
2.常用系統(tǒng)調(diào)用和庫函數(shù)的性能,如read,write, memcpy,gettimeofday。
3.常用戶數(shù)據(jù)結(jié)構(gòu)和算法的性能,如數(shù)組,隊(duì)列,二叉樹,hash表。
4.了解操作系統(tǒng)內(nèi)存操作機(jī)制,熟悉內(nèi)存分配算法,可以根據(jù)需要自己設(shè)計(jì)內(nèi)存分配算法變體。
網(wǎng)絡(luò):
并發(fā):
分布式:
數(shù)據(jù)存儲:
安全:
故障定位:
靜態(tài)代碼分析工具
運(yùn)行時故障定位工具top,free,iostat,mpstat,
總結(jié)
以上是生活随笔為你收集整理的后台开发技术(1)--概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 0.C++之RAII技术解析
- 下一篇: TCP核心概念-慢启动,ssthresh