Lua Web快速开发指南(1) - 初识cf框架

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

cf是什么?

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

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

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

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

cf的优点:

1. 学习优点

  • 全中文的wiki、issue.github

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

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

2. 开发优点

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

  • httpd库docker

    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后台体验

如何快速获得帮助

github

Wiki

Issue

继续学习

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

相关文章
相关标签/搜索