每到節(jié)假日和過年,需要外出通行的人幾乎都會(huì)遇到一個(gè)問題:搶火車票!當(dāng)全國上億人都在固定的時(shí)間段搶票,服務(wù)器動(dòng)輒就要承受上百萬級(jí)并發(fā)的情況時(shí),你就會(huì)明白,一個(gè)支持高并發(fā)的服務(wù)器架構(gòu)有多重要!
在后端程序員的面試中,如果你有開發(fā)高并發(fā)服務(wù)器的經(jīng)驗(yàn),也往往能得到比別人更多的機(jī)會(huì)。
提到「高并發(fā)」,就不得不提天生為高并發(fā)而生的 Go 語言。今天,我們就帶大家從 0 開始,用 Go 語言完成一個(gè)企業(yè)級(jí)服務(wù)器的開發(fā)。
關(guān)于實(shí)現(xiàn)一個(gè)企業(yè)級(jí)框架,你無需恐懼難度過高,你只需要有 Golang 的基礎(chǔ)知識(shí)即可。我們會(huì)每次只會(huì)添加一些微小的功能,以循序漸進(jìn)的曲線方式了解服務(wù)器框架的領(lǐng)域。
教程出自實(shí)驗(yàn)樓課程——《Go 并發(fā)服務(wù)器框架 Zinx 入門》,歡迎來實(shí)驗(yàn)樓免費(fèi)學(xué)習(xí)!
課程地址:https://www.shiyanlou.com/courses/1639
初探 Zinx 框架
在本章實(shí)驗(yàn)中,我們將學(xué)習(xí)從 0 開始完成一個(gè)服務(wù)器框架的開發(fā)。
知識(shí)點(diǎn)
- Zinx 架構(gòu)圖
- 模塊化
Zinx 為什么會(huì)出現(xiàn)呢?作者是這樣說的。
我們?yōu)槭裁匆?Zinx,Golang 目前在服務(wù)器的應(yīng)用框架很多,但是應(yīng)用在游戲領(lǐng)域或者其他長(zhǎng)鏈接的領(lǐng)域的輕量級(jí)企業(yè)框架甚少。
設(shè)計(jì) Zinx 的目的是讓我們可以通過 Zinx 框架來了解基于 Golang 編寫一個(gè) TCP 服務(wù)器的整體輪廓,讓更多的 Golang 愛好者能深入淺出的去學(xué)習(xí)和認(rèn)識(shí)這個(gè)領(lǐng)域。
所以,本課程的實(shí)驗(yàn)學(xué)習(xí)完成后,你將學(xué)到:Golang 如何實(shí)現(xiàn) TCP 服務(wù)器,一個(gè)企業(yè)級(jí)框架是如何誕生的。
關(guān)于實(shí)現(xiàn)一個(gè)企業(yè)級(jí)框架,你也無需恐懼難度過高,你只需要有 Golang 的基礎(chǔ)知識(shí),我們之后的每一節(jié)實(shí)驗(yàn),都只會(huì)添加一些微小的功能,以循序漸進(jìn)的曲線方式了解服務(wù)器框架的領(lǐng)域。
Zinx 架構(gòu)設(shè)計(jì)
我們先來模擬一下一個(gè)客戶端請(qǐng)求服務(wù)器響應(yīng)的過程:
- 要有一個(gè)客戶端對(duì)服務(wù)器發(fā)起請(qǐng)求。
- 我們的服務(wù)器應(yīng)該去啟動(dòng)對(duì)客戶端的處理模塊并打開工作池來提升并發(fā)量。
- 處理客戶端的模塊開啟兩個(gè)模塊,一個(gè)負(fù)責(zé)讀客戶端請(qǐng)求,一個(gè)負(fù)責(zé)寫客戶端請(qǐng)求。
- 用于讀的功能模塊,去任務(wù)的消息隊(duì)列里去請(qǐng)求讀數(shù)據(jù)。用于寫的功能模塊,通過 API 接口,當(dāng)然我們的 API 不可能只有一個(gè),所以這里肯定是 APIS。
這個(gè)過程就是 Zinx 官方架構(gòu)圖中的一個(gè)流程:
Zinx 作為一個(gè)輕量級(jí)框架,雖然輕便,但是卻可以滿足以上的過程,所以是具生產(chǎn)力的框架。
我在下面整理了一個(gè)思維導(dǎo)圖,這個(gè)導(dǎo)圖中就是我們接下來的實(shí)驗(yàn)中要實(shí)現(xiàn)的功能。我們將從 0.1 版本開始,一直實(shí)現(xiàn)到 1.0 的完整版本。
實(shí)驗(yàn)總結(jié)
今天我們的前導(dǎo)課,主要是給大家講解了 Zinx 框架的一個(gè)架構(gòu)設(shè)計(jì)與功能模塊有什么,給大家留下一個(gè)印象,后面的實(shí)驗(yàn)中,我們會(huì)逐步去實(shí)現(xiàn)相應(yīng)的模塊功能。
后面還有 10 個(gè)章節(jié)的內(nèi)容,完全免費(fèi),你將學(xué)到:






