lua web快速開發指南(1) - 初識cf框架

做者: 水果糖的小鋪子(CandyMi)

cf是什麼?

cf全稱爲: CoreFramework. 一個基於Reactor事件驅動與協程的lua高性能網絡框架, 目前主要面向HTTP Application開發.html

cf內部主要實現了包括HTTP與HTTP Over Websoket協議的Server, 利用輕量級協程能夠很輕鬆保持成千上萬的長鏈接.mysql

cf內置了豐富的開發庫與常見的第三方協議, 目前在快速開發業務原型上有不可比擬的優點.linux

cf的C代碼與lua封裝的框架內部實現源碼僅幾千行,同時在源碼包含了一系列中文註釋方便你們閱讀與code review.nginx

cf的優點:

1. 學習優點

  • 全中文的wiki、issue.
  • 簡單的Lua語法、快速的入門教程.
  • 豐富的內置庫、高效的使用方式.

2. 開發優點

在使用cf進行業務開發時, cf框架豐富的內置庫會開始給予咱們很大的幫助:git

  • httpd庫

    httpd爲開發者提供了三種路由注入方式: api接口路由、use頁面路由、 websocket路由. 這些方法賦予了httpd庫在面對API、HTML、Websocket時的處理能力.github

    httpd還主動提供一個很是簡單的靜態文件服務器, 爲開發者在開發期間提供諸如nginx那般靜態文件查找的讀取行爲而且不依賴chroot的文件路徑健康檢查功能.web

  • httpc庫

    httpc庫提供了一套普通場景與微服務架構等常見的接口請求方案.redis

    使用者可使用最簡單的httpc.posthttpc.posthttpc.jsonhttpc.file方法快速完成業務原型開發.sql

    也可使用httpc.class建立一個httpc對象後, 再使用上述方法進行業務開發. 不一樣的是鏈接在httpc對象close以前是不會被主動關閉的.docker

    開發者還可使用httpc.multi_request方法同時併發請求多個第三方接口, 這個異步方法會在全部接口請求完成(超時)後一塊兒返回給調用者.

    以上功能都是httpc內置的功能.

  • DB/Cache庫

    每當使用Lua語言進行開發的時候, 還須要思考鏈接池與鏈接複用的問題時. 能夠嘗試看看cf的mysql與redis封裝的DB/Cache庫.

    是的. DB與Cache庫的最大做用就是: 斷線重連、鏈接複用、鏈接自動管理. 這也是DB/Cache庫存在的主要緣由.

  • MQ庫

    MQ庫爲開發者提供了一套跨進程的應用、實例共享的MQ發佈與訂閱解決方案, 目前實現了這些協議: stomp/redis/mqtt.

    MQ庫主要解決:異步任務發佈、全局廣播訂閱、任務排隊等等一系列特殊場景.

  • 其它

    內置了一些第三方或者自行實現的庫, 諸如:mail、json/xml、crypt、admin、cf; 這些都是業務開發的好幫手.

3. 性能優點

cf的源碼追求的是KISS原則 - "以簡單明瞭爲主", 性能與穩定僅僅是使用C語言編寫後所攜帶的附贈品而已.

使用Lua做爲開發腳本語言也是由於高效的運行時與極低的內存佔用浮動更能保證有效利用資源.

使用對象重用的方式來緩解頻繁對象分配與釋放形成的性能消耗, 減小內存碎片產生而且高效利用內存(即便是默認內存分配器).

使用Lua C API提供的第三方加密、編碼、協議解析方式, 用以平衡Lua作字符串處理帶來的一些性能問題.

4. 自主集成

大部分的框架使用者習慣fork一個足夠穩定的版本, 直到框架做者釋放出下一個足夠穩定的版本後纔會嘗試(或許不會)更新框架自己.

爲了防止較爲複雜的目錄引用, cf提供了3rd目錄來分離出用戶自定義集成的庫. 而這個文件夾內提供了聯合編譯所用到的文件makefile.

您在編譯cf時(buildrebuildclean)都將傳入到這個目錄的makefile下.

makefile的做用不只僅是編譯用到的文件, 也能夠是使用者本身腳本的管理集合. 總而言之, 就是使用者要怎麼集成都爲所欲爲.

5. 部署優點

cf目前內置的httpd庫能夠獨立提供穩定的httpd服務, 可是仍是建議使用代理(負載均衡)軟件進行構建安全(SSL)鏈接環境.

cf輕量級的依賴很適合批量部署, 不管是運用在CaaS環境仍是傳統宿主機的環境下均可以很輕鬆的完成啓動.

cf項目的docker目錄下提供了一份Dockerfile文件, 裏面包含:

  • 從安裝依賴到運行的全部步奏.
  • 快速啓動的docker-compose部署文件.
  • 基於負載均衡器的動態伸縮的配置示例.

哪些人適合使用cf?

  • 動手能力較強的C/C++開發者
  • 當前語言級執行效率沒法知足要求的開發者
  • 須要更爲輕量級開發Web Service的開發者
  • 須要深度依賴容器的輕量級Web開發者
  • 適合無任何經驗快速學習後端開發的新手
  • 簡單來講就是適合全部想快速學習後端開發的人

極速安裝

  • 利用docker快速下載、安裝、運行

    做者爲docker使用者提供了一套預覽鏡像方便cf框架的學習者快速安裝.

    首先使用git將cf項目克隆下來並重命名爲app, 而後進入到app目錄下. 參考命令: git clone https://github.com/CandyMi/core_framework app

    而後根據不一樣平臺的要求安裝dockerdocker-compose, 這須要您自行根據實際狀況參考如何進行安裝.

    最後, 進入app/docker目錄, 使用docker-compose -f docker-compose-with-cfadmin.yaml up命令運行cfadmin測試鏡像並查看效果.

  • 在宿主機上快速下載、安裝、運行

    cf原生運行環境支持Mac、Linux、FreeBSD. 非這類平臺請使用上一種安裝方式.

    先使用git將cf項目克隆下來並重命名爲app, 而後進入到app目錄下. 參考命令: git clone https://github.com/CandyMi/core_framework app

    而後根據實際使用的操做系統使用setenvexport導入編譯環境頭文件查找目錄與編譯環境庫文件目錄: /usr/include/lib/usr/include/include.

    而後開始安裝依賴庫:

    1. 安裝readline-devel、make、autoconf、gcc、file、openssl/libressl; 推薦使用第三方包管理工具(apt/pacman/yum/brew/pkg)直接安裝二進制版本.
    2. 安裝libev; 能夠在這裏下載, 使用./configure --prefix=/usr/local && make && make install進行安裝
    3. 安裝lua5.3; 能夠在這裏點擊下載源碼, 根據實際平臺替換後面的命令make linux/macosx/freebsd MYCFLAGS=-fPIC && make install進行安裝.
    4. 最後開始編譯安裝cf. 進入./app目錄使用sudo make build進行安裝, 非管理員用戶須要sudo. 如錯誤則安裝完成.
  • 更多安裝詳情可參考不一樣平臺安裝指南怎麼解決安裝錯誤

測試

1. 測試基準

這裏有一份基準測試.

2. 測試代碼

在項目目錄下的script文件夾下, 有須要測試文件方便你們自行測試使用.

3. 測試後臺

請參照(快速cfadmin後臺體驗)[https://github.com/CandyMi/co...]

如何快速獲得幫助

github

Wiki

Issue

繼續學習

下一章節咱們會開始瞭解如何運行cf與利用httpd庫搭建高效穩定的web開發環境.

相關文章
相關標籤/搜索