CF是什么?

2019-04-02 11:28 更新

介紹:

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)連接編寫的樂(lè)趣.

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沒(méi)有內(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)等;

  • 包含了第三方html template庫(kù), 不用修改就可以使用;

  • CacheDB庫(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); —— 推薦

  • 游戲服務(wù)器的前端代理層; —— 推薦

  • 內(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ī)制、邏輯分支;
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)