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