分布式網關服務器,fooking 0.1.0 發布
fooking是一個分布式網關服務器,主要用于承載客戶端連接,將客戶端請求轉發到后端邏輯服務器,然后把邏輯服務器返回的結果轉發到客戶端。他 類似Nginx,使用Nginx + FastCGI Server(如:FPM, etc..)構建Web服務器,同時可以使用Fooking + FastCGI Server(如:FPM, etc..)構建Socket服務器.
特性
1 動態網關添加.
2 每個客戶端唯一SessionID.
3 組播(類似redis的pub/sub).
4 服務器狀態監控.
5 客戶端事件通知(如:新連接、關閉連接).
6 后端無語言限制(php, python, go, nodejs, etc...).
7 自定義消息協議.
8 后端長連接維持.
客戶端協議
這個是指客戶端與fooking的通信協議,默認4字節數據大小(大端模式)和數據,同時你還可以使用Lua自定義協議。
后端協議
這是指fooking與后端邏輯服務器通信協議,這個使用FastCGI協議,后端可以使用任何語言來創建FastCGI服務器.
這個協議非常簡單,詳見協議說明: http://www.fastcgi.com/drupal/node/6?q=node/22
使用說明
下面展示了fooking的使用,用例是聊天室,源代碼位于example/chat目錄下
-
第一步(下載和編譯)
git clone https://github.com/scgywx/fooking.git
cd {$FOOKING_PATH}
make -
第二步(啟動Router)
cd src
./fooking ../router.lua -
第三步(啟動Gateway)
./fooking ../config.lua -
第四步(啟動FastCGI服務器, 如:fpm) service php-fpm start(如果已經啟動,請忽略此步驟)
-
第五步(測試) 修改example/chat/index.html文件的Websocket的服務器IP和端口(查找ws://)
然后用瀏覽器打開index.html即可
架構圖