CF是什么?

2019-04-02 11:28 更新

介紹:

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)等;

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

  • CacheDB庫的封裝, 保證持久層與緩存層的使用簡潔;

  • 基于文本協(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)用流程、判斷機制、邏輯分支;
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號