本篇文章講解服務端基礎知識
適合人群:適合非技術背景產(chǎn)品經(jīng)理,非技術背景互聯(lián)網(wǎng)從業(yè)
互聯(lián)網(wǎng)是如何提供服務的
我們是如何獲取互聯(lián)網(wǎng)資源的
我們通過手機或者電腦訪問互聯(lián)網(wǎng)上的資源,包括圖片,文字,視頻等都是在獲取互聯(lián)網(wǎng)資源,存儲在服務器上的數(shù)據(jù)??蛻舳俗鳛榻尤胼d體,訪問服務端的數(shù)據(jù),服務端提供計算邏輯和內(nèi)容服務,以數(shù)據(jù)流的方式進行內(nèi)容傳遞

互聯(lián)網(wǎng)服務依賴于網(wǎng)絡連接,客戶端與服務端的通訊也依賴于通順的網(wǎng)絡,這是一切互聯(lián)網(wǎng)服務的基礎,通過ping命令可以檢測某個服務器地址的連接是否可用(packet internet groper:互聯(lián)網(wǎng)包探測器

工程師經(jīng)常說的ping一下就是檢測一下目標服務器是否連通
通過端口訪問對應的服務
同一臺服務器的服務可能有多個,通過端口可以唯一確定具體對應的服務,通過netstat -an可查看本地服務對應的IP地址和端口號

工程師所說的8080端口,就是某一服務對應的具體端口
代理服務器
代理服務器是指客戶端在發(fā)起數(shù)據(jù)請求的時候,先發(fā)送到代理服務器,然后由代理服務器向目標服務器再發(fā)送請求,多客戶端和目標服務器之間通過代理服務器間隔
優(yōu)勢:
1.邏輯解耦
2.提升安全性
3.便于做資源協(xié)調(diào)

CDN服務
CDN(content delivery vetwork),內(nèi)容分發(fā)網(wǎng)絡,主要通過大量服務器來為用戶提供就近資源訪問。CDN服務集群的特點:
1.需要海量服務器支持
2.內(nèi)容路由分發(fā)規(guī)則
3.訪問就近CDN節(jié)點

服務端基礎技術架構(gòu)
服務端基礎介紹
服務端也被成為“后端”,在產(chǎn)品對應的技術體系中,負責業(yè)務邏輯處理和數(shù)據(jù)處理,是“大后方”

服務端處理邏輯:
1.客戶端通過互聯(lián)網(wǎng)將數(shù)據(jù)以接口的形式發(fā)送給服務端
2.服務端以服務器承載,接收客戶端請求
3.服務端處理業(yè)務邏輯并做數(shù)據(jù)存儲管理
4.服務端將請求結(jié)果返回給客戶端
服務端放在哪里
客戶端通常在用戶側(cè),例如手機和電腦。服務端則放置在機房中,準確說,運行在服務器上。我們所說的云端,其實就是對應的機房。機房的構(gòu)成:服務器機架,網(wǎng)線,不間斷電源,維護人員

機房組成
服務器端構(gòu)成:應用服務器,負載均衡服務器,交換機,數(shù)據(jù)庫服務器,網(wǎng)絡端口

服務器機房:服務器機組,網(wǎng)線及網(wǎng)絡端口,備用電源,冷卻裝置
服務器端涉及的技術職能:服務端應用開發(fā)工程師,運維工程師,機房監(jiān)控及管理人員,數(shù)據(jù)庫管理員
作為產(chǎn)品應該知道出問題后找誰
服務端開發(fā)技術
服務端開發(fā)語言有很多,例如java,PHP,python等,不同的開發(fā)語言都可以用來構(gòu)建服務端。服務端程序運行在服務器中,服務器的部署有兩種放式:
1.自建服務器機房
2.使用云服務,如阿里云,亞馬遜AWS等
什么是接口和API
如何實現(xiàn)數(shù)據(jù)通訊
客戶端之間的通信,客戶端與服務端之間的通信都通過接口來實現(xiàn)。應用程序編程接口(API:application programing interface)是一個通訊協(xié)議,約定客戶端與服務端之間數(shù)據(jù)傳輸格式和訪問地址

接口定義
接口(API)由兩部分組成:URL地址,數(shù)據(jù)參數(shù)
URL地址:確定所訪問的服務器地址以及對應的端口和服務
數(shù)據(jù)參數(shù):以某一種格式來定義和攜帶數(shù)據(jù),經(jīng)數(shù)據(jù)從客戶端發(fā)送到服務端
例如:登陸接口的定義
API對應的URL:https://192.168.0.1:8080/myserver/login.do
數(shù)據(jù)參數(shù)json格式:{"username"="ryan","password"="pwd"}
數(shù)據(jù)載體json/xml
json(javascript object notation)是一種輕量級的數(shù)據(jù)交換格式,json格式靈活性高,易于人理解和閱讀,目前用的比較多
xml(extensible markup language)全稱可擴展標記語言,也可以用來進行簡單的結(jié)構(gòu)化文本數(shù)據(jù)的存儲,格式與html相似

API和SDK的區(qū)別
什么是SDK
例:位置定位API的定義,API對應的URL:https://192.168.0.1:8080/myserver/location
SDK:軟件開發(fā)包(software development kit),是一系列開發(fā)工具(API)的集合,比如定位SDK,推送SDK,數(shù)據(jù)統(tǒng)計SDK等
每一個平臺或者技術語言,都有對應的SDK版本,例如android SDK,ios SDK,python版SDK

API和SDK的關系
API是一項單獨能力,通常一個API對應一個能力接口,例如定位API,登陸API,授權API。SDK則是將一系列的API集合封裝起來,以軟件包的形式對外提供服務

應用程序是如何集成并使用SDK的
根據(jù)對應的版本,集成SDK包,按接口文檔的要求,調(diào)用SDK里的API。使用SDK前需要專門申請對應的key,進行授權使用

使用SDK中接口的過程就是集成SDK的過程
服務端與客戶端數(shù)據(jù)交互模型
接口請求與響應
客戶端程序通過發(fā)送http請求訪問對應的API(URL),并攜帶參數(shù)(json/xml)傳遞給服務端。對應產(chǎn)品功能是:
1)一個功能可能只對應一個API,也可能同時調(diào)用多個API
2)一次功能操作,API可以順序執(zhí)行調(diào)用,也可以異步處理調(diào)用
服務端接收API調(diào)用后,處理業(yè)務邏輯,并將處理結(jié)果以數(shù)據(jù)參數(shù)的形式返回給客戶端。對應產(chǎn)品功能:
1)客戶端操作某一功能后,等待服務端返回結(jié)果
2)等待服務端響應功能結(jié)果可以是同步的,也可以是異步的
基于請求-響應的數(shù)據(jù)交互模型
服務端與客戶端之間都是基于這種數(shù)據(jù)交互模型來進行通信,每一次請求都由客戶端發(fā)起,服務端接收請求并完成業(yè)務邏輯處理和數(shù)據(jù)處理之后將結(jié)果返回給客戶端

生產(chǎn)環(huán)境與測試環(huán)境
服務端運行環(huán)境
服務端程序運行在服務器中,可分別配置生產(chǎn)環(huán)境和測試環(huán)境。
例:不同的運行環(huán)境可以通過URL地址來區(qū)分
生產(chǎn)環(huán)境服務器IP地址:http://192.168.0.1/myserver
測試環(huán)境服務器IP地址:http://127.0.0.1/myserver
區(qū)分生產(chǎn)環(huán)境和測試環(huán)境主要通過訪問服務器的IP地址不同來劃分

運行環(huán)境注意事項
測試環(huán)境是用來給工程師開發(fā)測試用的,對應的功能和數(shù)據(jù)與生產(chǎn)環(huán)境會有一定的區(qū)別:
1.在發(fā)布新版本前,盡可能將生產(chǎn)環(huán)境數(shù)據(jù)同步到測試環(huán)境進行測試
2.在做一些例如數(shù)據(jù)推送測試,數(shù)據(jù)庫修改測試時,仔細檢查當前環(huán)境是測試環(huán)境,避免將線上版本刪除,出現(xiàn)誤操作
3.測試環(huán)境和生產(chǎn)環(huán)境都需要做新老版本兼容性測試