280 likes | 468 Views
CSF 3.0 架构解析与应用. CSF 3.0 架构解析与应用. CSF 2.0 以后对于使用方式做了一些改进,同时内 建了 monitor 模块并且提供 python 版的客户端 最新的 3.0 版本还提供了响应 -HUP 在线配置的功能 CSF 作者:朱岩 讲解:张烁. CSF 3.0 架构解析与应用 > CSF 基础应用部分. CSF 基础应用部分. CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 简介. CSF 简介. CSF —— Common Server Framework 是一个通用服务器框架。
E N D
CSF 3.0 架构解析与应用 CSF 3.0 架构解析与应用 CSF 2.0以后对于使用方式做了一些改进,同时内 建了monitor模块并且提供python版的客户端 最新的3.0版本还提供了响应-HUP在线配置的功能 CSF作者:朱岩 讲解:张烁
CSF 3.0 架构解析与应用 > CSF 基础应用部分 CSF 基础应用部分
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 简介 CSF 简介 • CSF —— Common Server Framework 是一个通用服务器框架。 • CSF 提供网络服务器系统的基本功能,包括: • 经过封装的网络通信部分。 • 使用memory pool,使内存操作更加高效。 • 使用thread pool,节省每次创建线程开销。 • 支持多条多级流水线,用固定数量的线程完成每级流水线的处理。
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 的数据流 CSF 的数据流
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0版本后变化 > 耦合度更低 2.0版本后的主要变化 • 耦合度更低 • 2.0版本以后彻底把protocol和mod模块从CSF中分开: CSF: binary excutable file PROTOCOL: binary dynamic lib (.so) MOD: binary dynamic lib (.so) • 明显区别于以前protocol和csf连接成一个可执行文件的做法。
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0版本后变化 > Protocol模块的接口 2.0版本后的主要变化 • Protocol模块的接口变化: • 头文件仅需要包含: protocol_def.h (必须) log.h (仅当需要使用CSF日志时) confparser.h (仅当需要使用配置分析模块时) • 不再需要register_protocol_name。 当前protocol name可以通过get_protocol_name()获取。
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0版本后变化 > Protocol模块的接口 对PROTOCOL提供的函数 • send_back: 回发数据 • submit_request: 将数据提交到MOD模块 • request_cancel: 取消当前请求 • register_stat_int: Monitor接口 • smalloc: 使用CSF提供的内存池 • sfree:释放由smalloc分配的内存
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0版本后变化 > MOD模块的接口 2.0版本后的主要变化 • Mod模块的接口变化: • 头文件: mod.h (必须) log.h (仅当需要使用CSF日志时) confparser.h (仅当需要使用配置分析模块时) • 传递函数指针更简洁。 摒弃以前手动设置二重指针,直接使用设置函数。
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0版本后变化 > MOD模块的接口 2.0版本后的主要变化 • Mod模块新的初始化过程: int mod_init(char *mod_name) { CSF_UNUSED_ARG(mod_name); set_request_init(init_func); set_request_deinit(NULL); set_request_handler(handler_func); return (0); }
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0版本后变化 > MOD模块的接口 Mod模块新的初始化实例:
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0版本后变化 > 配置文件 2.0版本后的主要变化 • 配置文件sl.conf随需而变
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF目前实现的协议 CSF目前实现的协议 • Lmtp: 本地邮件传输协议 • pic_download: 简单的图片传输协议 CSF也可用来IPC. socket本身就是IPC的一种方式 • http:简单的HTTP服务器 典型设计方案: http头处理在protocol完成,将数据上传 数据回发提交到Pipeline完成。 • Memcache:基于memcache协议的gossip框架
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 监视器 CSF 3.0 监视器 • CSF从2.0以后便增加了监视器功能,用于CSF内部和protocol、mod模块的运行时变量监测。 • CSF Monitor支持大多数常见数据类型 • 默认端口: 22222
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 监视器 CSF 3.0 监视器
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 监视器 Monitor的头文件 • 在CSF内部使用Monitor时,包含monitor.h • 在protocol和mod模块使用时,使用monitor_def.h • 监视变量注册接口: void register_stat_int (const char *, const char *, int, void *);
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 –HUP 配置重载 CSF 3.0 –HUP 配置重载
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 –HUP 配置重载 CSF 3.0 –HUP 配置重载
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 –HUP 配置重载 CSF 3.0 –HUP 配置重载 • 能替换除port, timeout, protocol外的任意配置项。 • 可以完全替换protocol和mod模块。 • 响应-HUP时CSF会将monitor的数据自动注销。 • NOTICE: Reloader module is a beta version.
CSF 3.0 架构解析与应用 > CSF 架构解析部分 CSF 架构解析部分
CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 工作方式 CSF 工作方式 • Multi level pipeline • Maximum 16 pipelines • Data flow control • Multi threaded • Available for mempool • Single threaded • Functions called by event • Trylock widely used • Event driven • Non-block I/O • Memory pool • Thread pool for MOD • Single threaded
CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 整体构成 CSF 整体构成 CSF 配置文件 Protocol 配置器 CSF Monitor Conf parser Module 配置器 Pipeline 多线程组 Mod 组件 CALL Generate CSF Server Data 递送 Protocol 组件 Submit request
CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF pipeline 初始化 CSF pipeline 初始化
CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF PROTOCOL 流程 CSF PROTOCOL 流程
CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF SUBMIT REQUEST 流程 CSF submit request流程
CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF WORKER THREAD流程 CSF worker thread流程
CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 完整数据流 CSF 完整数据流 Protocol 组件 CSF Event handler libevent socket data Protocol data Response & free Request queue Level 1 Request queue Level N Request done queue Protocol data CSF MOD 组件 Prot data processed MOD handler Protocol data
CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 简介 CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 的数据流 CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0版本后变化 CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF目前实现的协议 CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 监视器 • 请提问: • 前面的哪个页面没有看清? • 其他任何问题? CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 –HUP 配置重载 CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 工作方式 CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 整体构成 CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF pipeline 初始化 CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF PROTOCOL 流程 CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF SUBMIT REQUEST 流程 CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF WORKER THREAD流程 CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 完整数据流 CSF 3.0 架构解析与应用 > 请提问