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