我一直堅(jiān)持一個觀點(diǎn),從web體系學(xué)習(xí)服務(wù)器端程序設(shè)計(jì),web作為發(fā)展最早也是前景最廣闊的internet模型,幾乎支撐了網(wǎng)絡(luò)世界一半以上的應(yīng)用,其他email ftp等傳統(tǒng)應(yīng)用雖然產(chǎn)生時間也很早但幾乎都很沒落,只有web風(fēng)采依舊,蓬勃發(fā)展,從apache到lighttp到nginx等,一個接一個高性能的web服務(wù)器程序分別被開發(fā)出來,上層應(yīng)用cgi, isapi(nsapi), fastcgi助力,html協(xié)議也在不斷發(fā)展,html5也要登堂亮相,各種腳本語言爭相斗艷,python、php、java、asp.net等。web應(yīng)用支持了目前最大規(guī)模的數(shù)據(jù)google,支持了最大量用戶的訪問,因此各種存儲、云計(jì)算等都是首先在web領(lǐng)域獲得應(yīng)用,可以說web就是it領(lǐng)域的創(chuàng)新源泉,看下apache下面有多少項(xiàng)目就可見一般。web體系可謂博大精深,從web體系學(xué)習(xí)服務(wù)器端程序設(shè)計(jì)是學(xué)無止境的,從nginx等服務(wù)器程序設(shè)計(jì)上可學(xué)習(xí)server程序如何分塊、如何高效,從isapi/nsapi模型上可學(xué)習(xí)如何用進(jìn)程內(nèi)模塊擴(kuò)展應(yīng)用,從fastcgi可學(xué)習(xí)如何用進(jìn)程外模塊擴(kuò)展應(yīng)用,從各種cache方案中可學(xué)習(xí)如何為server端提速,從各種腳本應(yīng)用上可學(xué)習(xí)如何為server端程序二次開發(fā)助力,web是源泉,web的各種這方式幾乎概括了server端程序的各種架構(gòu)模型。當(dāng)然一般自定義協(xié)議服務(wù)器和web還是有些地方不同的,最顯著的區(qū)別一般也就在于協(xié)議不一樣,另外就是web是無狀態(tài)一般不保持連接,因此web需要傳遞各種session等維持狀態(tài)的數(shù)據(jù),總之從web可學(xué)習(xí)的地方實(shí)在是太多。
簡單類比下web領(lǐng)域開發(fā)和一般server的擴(kuò)展
nginx模塊/apache模塊 server程序+plugin
cgi fork子進(jìn)程
fastcgi server proxy模式,由于fastcgi可網(wǎng)絡(luò)方式部署,所以很容易在一個局域網(wǎng)內(nèi)部實(shí)現(xiàn)一個ioserver+N logicserver模型
簡單類比就可知道,如果一個server程序只要能很方便的支持plugin+fastcgi就可適應(yīng)幾乎所有各種需求,可惜的是一般的server程序幾乎都不支持這兩個模式的擴(kuò)展,大多數(shù)gameserver只支持lua等腳本,說實(shí)在的,支持個腳本跟支持fastcgi和plugin模塊相比還是差很多,如果支持fastcgi或者plugin只要做個plugin就支持lua了。


