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