CF是什么?
介绍:
cf全称为: CoreFramework, 是一个基于libev的Lua网络开发框架. (以下简称cf)
cf使用lua脚本语言进行服务端业务逻辑开发, 在其内部实现了多种网络协议与第三方库用来帮助使用者进行项目原型的快速开发.
cf在底层网络、定时器封装自C语言编写的Libev网络库, 极大程度减少C语言使用者的重复学习成本.
cf的httpd内嵌websocket支持, 方便使用者在复用端口的同时也可以享受长连接编写的乐趣.
cf的C代码与lua封装的框架内部实现源码仅几千行,同时在源码包含了一系列中文注释方便大家阅读与code review.
优点:
- 基于libev的高性能事件循环与lua语言的开发效率, 极大程度的减少开发者的开发时间与学习成本;
- cf底层实现了自己的lua版的Socket(TCP与UDP), 支持IPv4与IPv6性能更高并且速度更快;
- 为socket添加了ssl支持(openssl/libressl), 在使用https等协议时不依赖第三方进行代理请求;
- 实现了lua版的非阻塞DNS解析与缓存, 解决了libev没有内置dns库的诟病;
- 基于目前业界最快的picohttp解析器, 手动开启-msse4后速度更快;
- http request body自动判断、支持多file上传、multi-part/form-data多参数上传;
- 实现了超简单的httpc库, 非常方便请求第三方接口进行数据交互(支持自定义header);
- 基于redis与mqtt 相关订阅发布API实现的MQ, 长连接推送更加简单;
- 包含了第三方html template库, 不用修改就可以使用;
- 基于文本协议实现了SMTP协议的, 支持发送文本/html邮件.
- 其它....
使用场景:
cf的创作之初就是一个轻量级的开发框架! 由于其依赖非常少, 所以在cf开始运行时仅占用1M左右内存.
因为Lua精巧的运行时内存占用与高效的三色gc收集器, 能很好的帮助开发者在各种开发场景下运用自如. cf支持多种多样的使用场景:
- 基于容器技术的微服务场景(swarm/kubernetes); —— 推荐
- 游戏服务器的前端代理层; —— 推荐
- 内存/CPU资源较为紧缺的云服务器; —— 推荐
- 对性能要求较高的无状态集群; —— 推荐
- 海量长连接(websocket)Agent集群; —— 推荐
- ...
你不仅可以在短时间内(time < 0.1s)就能启动一个制作好的docker镜像, 也可以在集群内部轻易地扩展多个部署副本.
同时如果你的内存与CPU吃紧! 你可以考虑在不影响业务的情况下用cf进行开发, 也许它可以帮你减少原有的成本。
建议
在您正确安装且能正常运行cf后, 可以根据以下建议进一步学习:
- 首先, 使用者可以看一下wiki右边的目录, 各种API文档都会在此列出. 从而帮助您快速入门.
- 如果您还不了解cf是如何工作的!可以参考一下
script/main.lua
, 这里有最简单的httpd实现, 帮助您快速开展web service学习;
- 如果您有很强的源码阅读能力, 可以先从
core_start.c
进行阅读跟踪; 同时参考core.h
进行了解封装后的cf内部API与使用;
- 您还可以根据日志输出、代码打印等等一步一步了解cf的内部运行机制, 了解底层调用流程、判断机制、逻辑分支;