作者: 水果糖的小铺子(CandyMi)

cf是什么?

cf全称为: CoreFramework. 一个基于Reactor事件驱动与协程的lua高性能网络框架, 目前主要面向HTTP Application开发.

cf内部主要实现了包括HTTP与HTTP Over Websoket协议的Server, 利用轻量级协程可以很轻松保持成千上万的长连接.

cf内置了丰富的开发库与常见的第三方协议, 目前在快速开发业务原型上有不可比拟的优势.

cf的C代码与lua封装的框架内部实现源码仅几千行,同时在源码包含了一系列中文注释方便大家阅读与code review.

cf的优势:

1. 学习优势

  • 全中文的wiki、issue.

  • 简单的Lua语法、快速的入门教程.

  • 丰富的内置库、高效的使用方式.

2. 开发优势

在使用cf进行业务开发时, cf框架丰富的内置库会开始给予我们很大的帮助:

  • httpd库

    httpd为开发者提供了三种路由注入方式: api接口路由、use页面路由、 websocket路由. 这些方法赋予了httpd库在面对API、HTML、Websocket时的处理能力.

    httpd还主动提供一个非常简单的静态文件服务器, 为开发者在开发期间提供诸如nginx那般静态文件查找的读取行为并且不依赖chroot的文件路径健康检查功能.

  • httpc库

    httpc库提供了一套普通场景与微服务架构等常见的接口请求方案.

    使用者可以使用最简单的httpc.posthttpc.posthttpc.jsonhttpc.file方法快速完成业务原型开发.

    也可以使用httpc.class创建一个httpc对象后, 再使用上述方法进行业务开发. 不同的是连接在httpc对象close之前是不会被主动关闭的.

    开发者还可以使用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/core_framework/wiki/cfadmin]

如何快速得到帮助

github

Wiki

Issue

继续学习

下一章节我们会开始了解如何运行cf与利用httpd库搭建高效稳定的web开发环境.

lua web快速开发指南(1) - 初识cf框架相关推荐

  1. lua web快速开发指南(7) - 高效的接口调用 - httpc库

    httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header.args.bod ...

  2. 开放下载!《AliOS Things快速开发指南》

    简介:<AliOS Things快速开发指南>手把手教你从环境准备到线上.线下开发调试,更有两大典型场景实践等你参与.你的物联网开发从这里开始!快来get新技能吧~ AliOS Thing ...

  3. Google Web App开发指南

    http://www.html5rocks.com/webappfieldguide/case-studies/case-study-intro/ 第一章:什么是Web Apps? 很多人向我问起学习 ...

  4. Cordova跨平台Web App开发指南(安卓篇)

    Cordova跨平台Web App开发指南(安卓篇) 打包ios包必须用苹果系统,没钱买IOS设备,这里只介绍Android平台打包 一.Cordova简介' 在进行Cordova开发之前, 先花点时 ...

  5. Oracle WebCenter 11g 快速开发指南--翻译(一)

    第一章:开发者快速开发指南 作为一个开发者,如果你准备建立一个WebCenter Portal application ,你需要一个好的路线图,来指导你从什么地方开始,提供初始化的经验:本章首先解决开 ...

  6. Apache PDFbox快速开发指南

    Apache PDFbox快速开发指南 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.介绍 Apache PDFbox是一个开源的.基于Java的. ...

  7. 基于WEB快速开发平台的轻量ERP

    传统的企业系统更多是以电脑软件端的应用形式运行,但是随着信息技术的发展进步以及企业对系统应用需求的提升,基于B/S的网页版的系统受到越来越多企业的青睐,那么Web网页版ERP软件系统相较于电脑端软件有 ...

  8. DigWS 短消息和WapPush 快速开发指南-接口介绍

    DigWS 短消息和WapPush 快速开发指南-接口介绍 SendSms:发送短消息 Parameter<?xml:namespace prefix = o /> Description ...

  9. MSP432 快速开发指南:如何安装板载仿真器驱动(XDS110)

    博主分享不易,请给一键三连哦(关注 + 点赞 + 收藏),你的鼓励是博主分享的动力. MSP432 快速开发指南:如何安装板载仿真器驱动(XDS110) 1 前言 1.1 内容简介 1.2 快速链接 ...

最新文章

  1. 含有“外骨骼”的电影和游戏
  2. electron 打包_Vue3+Electron整合方式
  3. 【转】常用的正则表达式
  4. 虚拟大师怎么修改手机_手机虚拟大师,打造一个属于你的专属手机平台
  5. 牛客网–华为机试在线训练9:提取不重复的数
  6. MATLAB下载安装
  7. 夏普比率 —— Python 实现
  8. 【树莓派】搭建OpenWrt软路由,并作为旁路由的配置与应用方法
  9. 总结10个Python赚钱的接单平台 兼职月入5000+
  10. 2020年中国数字减影血管造影系统(DSA)市场现状分析,DSA设备需求不断提升「图」
  11. 读书笔记之:《心流 最优体验心理学》 米哈里·契克森米哈赖 第一章、第二章
  12. python如何输出日期_Python日期常用操作
  13. 【Python技能】如丝滑般控制键盘鼠标
  14. 程序语言编年史_Java的编年史和低延迟
  15. mac osx 和windows 时间不同步解决方法
  16. Shell脚本撰写指南
  17. 项目管理 : 故事-04扁鹊的医术
  18. 从键盘录入一个字符串,统计该串中有大写字母、小写字母、数字各有多少个。比如:Hello12345World大写:2个 小写:8个数字:5个。
  19. java语言中的while、do while、for循环
  20. k8s加固 hardening

热门文章

  1. 2014全球数字游戏报告
  2. js动态给元素添加属性
  3. csgo调哪个会流畅_HenryG盛赞ProjectA是CSGO以来最好玩的射击游戏
  4. Microsoft C++ 异常: std::length_error,位于内存位置 0x0000008187CDF4F0 处。
  5. 情人节由来及经典台词
  6. 计算机毕业设计ssm高校教室管理系统9y8cv系统+程序+源码+lw+远程部署
  7. python pls_偏最小二乘(pls)回归分析
  8. 【GTA5线上CyberBox小助手】 - 完全免费
  9. VTK-vtkCutter及其实现逻辑(接口讲解)
  10. 思考:大学给了我什么?