介紹:
cf全稱為: CoreFramework, 是一個基于libev的Lua網(wǎng)絡開發(fā)框架. (以下簡稱cf)
cf使用lua腳本語言進行服務端業(yè)務邏輯開發(fā), 在其內(nèi)部實現(xiàn)了多種網(wǎng)絡協(xié)議與第三方庫用來幫助使用者進行項目原型的快速開發(fā).
cf在底層網(wǎng)絡、定時器封裝自C語言編寫的Libev網(wǎng)絡庫, 極大程度減少C語言使用者的重復學習成本.
cf的httpd內(nèi)嵌websocket支持, 方便使用者在復用端口的同時也可以享受長連接編寫的樂趣.
cf的C代碼與lua封裝的框架內(nèi)部實現(xiàn)源碼僅幾千行,同時在源碼包含了一系列中文注釋方便大家閱讀與code review.
優(yōu)點:
- 基于libev的高性能事件循環(huán)與lua語言的開發(fā)效率, 極大程度的減少開發(fā)者的開發(fā)時間與學習成本;
- cf底層實現(xiàn)了自己的lua版的Socket(TCP與UDP), 支持IPv4與IPv6性能更高并且速度更快;
- 為socket添加了ssl支持(openssl/libressl), 在使用https等協(xié)議時不依賴第三方進行代理請求;
- 實現(xiàn)了lua版的非阻塞DNS解析與緩存, 解決了libev沒有內(nèi)置dns庫的詬病;
- 基于目前業(yè)界最快的picohttp解析器, 手動開啟-msse4后速度更快;
- http request body自動判斷、支持多file上傳、multi-part/form-data多參數(shù)上傳;
- 實現(xiàn)了Websocket協(xié)議支持(RFC6455), 內(nèi)置在httpd庫內(nèi)部;
- 實現(xiàn)了超簡單的httpc庫, 非常方便請求第三方接口進行數(shù)據(jù)交互(支持自定義header);
- 基于redis與mqtt 相關訂閱發(fā)布API實現(xiàn)的MQ, 長連接推送更加簡單;
- 包含了第三方數(shù)據(jù)交換格式解析庫(json/xml)等;
- 基于文本協(xié)議實現(xiàn)了SMTP協(xié)議的, 支持發(fā)送文本/html郵件.
使用場景:
cf的創(chuàng)作之初就是一個輕量級的開發(fā)框架! 由于其依賴非常少, 所以在cf開始運行時僅占用1M左右內(nèi)存.
因為Lua精巧的運行時內(nèi)存占用與高效的三色gc收集器, 能很好的幫助開發(fā)者在各種開發(fā)場景下運用自如. cf支持多種多樣的使用場景:
- 基于容器技術的微服務場景(swarm/kubernetes); —— 推薦
- 內(nèi)存/CPU資源較為緊缺的云服務器; —— 推薦
- 對性能要求較高的無狀態(tài)集群; —— 推薦
- 海量長連接(websocket)Agent集群; —— 推薦
你不僅可以在短時間內(nèi)(time < 0.1s)就能啟動一個制作好的docker鏡像, 也可以在集群內(nèi)部輕易地擴展多個部署副本.
同時如果你的內(nèi)存與CPU吃緊! 你可以考慮在不影響業(yè)務的情況下用cf進行開發(fā), 也許它可以幫你減少原有的成本。
建議
在您正確安裝且能正常運行cf后, 可以根據(jù)以下建議進一步學習:
- 首先, 使用者可以看一下wiki右邊的目錄, 各種API文檔都會在此列出. 從而幫助您快速入門.
- 如果您還不了解cf是如何工作的!可以參考一下
script/main.lua
, 這里有最簡單的httpd實現(xiàn), 幫助您快速開展web service學習;
- 如果您有很強的源碼閱讀能力, 可以先從
core_start.c
進行閱讀跟蹤; 同時參考core.h
進行了解封裝后的cf內(nèi)部API與使用;
- 您還可以根據(jù)日志輸出、代碼打印等等一步一步了解cf的內(nèi)部運行機制, 了解底層調(diào)用流程、判斷機制、邏輯分支;
更多建議: