服務器用的是yaws,erlang實現,支持處理動態內容和rest服務,所有請求均爲http請求,服務對象包括app/weixin/web等。
系統功能劃分 ctrl_out、ctrl_process、ctrl_db、ctrl_general、ctrl_app1、ctrl_app2幾個部分。
消息模式是一個倒樹狀和一個樹狀結構的結合,請求->彙總-處理-分發->返回
1.ctrl_out
基於yaws的appmod模式,所有服務器的80端口收到的http請求都會發送到ctrl_out模塊。
主要功能:
1、根據請求來源不同,解碼協議,提取出主要的請求內容
2、發送到主邏輯單元ctrl_process模塊進行處理
3、將計算結果包裝,組裝成協議格式返回給用戶
其他功能:
1、網關,唯一個對外的接口
2、緩存系統
3、信息、請求過濾,經簡單處理後屏蔽掉一些不合法的請求
4、訪問日誌
2、ctrl_process
主控制流程,所有合法的請求都會經ctrl_out轉發給此模塊進行處理。
主要功能:
1、按照邏輯流程調用各細分功能模塊處理請求(分發)
3、ctrl_db
數據庫操作模塊
4、ctrl_genenral
通用功能庫,所有函數均不涉及數據操作和其他模塊的交互。如字符串轉碼、文件寫入等
5、ctrl_app1,ctrl_app2,......
遵循opt原則的獨立app,
應用內遵循mvc設計模式,控制器負責接收、處理、發送請求;視圖負責消息模版和格式;模型負責數據操作;
應用之間是完全的並列關係,用戶之間的差異化回覆均在此模塊實現。
整個系統 模塊與模塊、應用與應用之間相對獨立,耦合性低,擴展性強,各系統功能可以部署在一臺或多臺機器上,在此基礎上可以實現分佈式。