25
CSF 3.0 架架架架架架架 CSF 2.0 架架架架架架架架架架 架架架架 架架架 一, 架架 monitor 架架架架架架 python 架架架架架 架架架 3.0 架架架架架架架架 -HUP 架架架架架架架 CSF 作作 作作 作作 作作 CSF 3.0 架架架架架架架

CSF 3.0 架构解析与应用

  • Upload
    akasma

  • View
    166

  • Download
    0

Embed Size (px)

DESCRIPTION

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 简介. - PowerPoint PPT Presentation

Citation preview

Page 1: CSF 3.0  架构解析与应用

CSF 3.0 架构解析与应用CSF 2.0 以后对于使用方式做了一些改进,同时内建了 monitor 模块并且提供 python 版的客户端

最新的 3.0 版本还提供了响应 -HUP 在线配置的功能

CSF作者:朱岩讲解:张烁

CSF 3.0 架构解析与应用

Page 2: CSF 3.0  架构解析与应用

CSF 基础应用部分CSF 3.0 架构解析与应用 > CSF 基础应用部分

Page 3: CSF 3.0  架构解析与应用

CSF 简介 CSF —— Common Server Framework 是一个通用服务器框架。 CSF 提供网络服务器系统的基本功能,包括:1. 经过封装的网络通信部分。2. 使用 memory pool ,使内存操作更加高效。3. 使用 thread pool ,节省每次创建线程开销。4. 支持多条多级流水线,用固定数量的线程完成每级流水线的处理。

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 简介

Page 4: CSF 3.0  架构解析与应用

CSF 的数据流

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 的数据流

Page 5: CSF 3.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 版本后变化 > 耦合度更低

Page 6: CSF 3.0  架构解析与应用

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 模块的接口

Page 7: CSF 3.0  架构解析与应用

2.0 版本后的主要变化 Mod 模块的接口变化: 头文件: mod.h ( 必须 ) log.h ( 仅当需要使用 CSF 日志时 ) confparser.h ( 仅当需要使用配置分析模块时 ) 传递函数指针更简洁。 摒弃以前手动设置二重指针,直接使用设置函数。

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0 版本后变化 > MOD 模块的接口

Page 8: CSF 3.0  架构解析与应用

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 模块的接口

Page 9: CSF 3.0  架构解析与应用

Mod 模块新的初始化实例:

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0 版本后变化 > MOD 模块的接口

Page 10: CSF 3.0  架构解析与应用

2.0 版本后的主要变化 配置文件 sl.conf 随需而变

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0 版本后变化 > 配置文件

Page 11: CSF 3.0  架构解析与应用

CSF 3.0 监视器 CSF 从 2.0 以后便增加了监视器功能,用于 CSF 内部和 protocol 、 mod 模块的运行时变量监测。 CSF Monitor 支持大多数常见数据类型 默认端口: 22222

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 监视器

Page 12: CSF 3.0  架构解析与应用

CSF 3.0 监视器数据源(CSF, protocol, mod)

CSF Monitor服务器(内建, CSF monitor protocol)

CSF Monitor 客户端(python)

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 监视器

Page 13: CSF 3.0  架构解析与应用

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 监视器

Page 14: CSF 3.0  架构解析与应用

CSF 3.0 –HUP 配置重载

CSF Respons

e

CONFIGRELOADER

HUP

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 –HUP 配置重载

Page 15: CSF 3.0  架构解析与应用

CSF 3.0 –HUP 配置重载CONFIGURERELOADER

屏蔽原流水线,根据配置创建临时流

水线

等待原流水线工作结束将临时流水线上下

文恢复到原流水线

RELOADERRESET

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 –HUP 配置重载

Page 16: CSF 3.0  架构解析与应用

CSF 3.0 –HUP 配置重载 能替换除 port, timeout, protocol 外的任意配置项。 可以完全替换 protocol 和 mod 模块。 响应 -HUP 时 CSF 会将 monitor 的数据自动注销。 NOTICE: Reloader module is a beta

version.

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 3.0 –HUP 配置重载

Page 17: CSF 3.0  架构解析与应用

CSF 架构解析部分CSF 3.0 架构解析与应用 > CSF 架构解析部分

Page 18: CSF 3.0  架构解析与应用

CSF 工作方式

Protocol

• 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

• Multi level pipeline• Maximum 16 pipelines• Data flow control

CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 工作方式

Page 19: CSF 3.0  架构解析与应用

CSF 整体构成CSF配置文件

Confparse

rModule配置器

CSFServer

Protocol配置器

Data递送

Pipeline多线程组

Protocol组件

Mod组件

CSFMonitor

CALL

Submit request

Generate

CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 整体构成

Page 20: CSF 3.0  架构解析与应用

CSF pipeline 初始化

Thread list

Pcb Array(0-15) global

PCB 0Pipeline

control block

Sl.conf

PCB NPCB 1 ……

RQCB for MOD 0

Request queue control block

Pipeline id = 0

MOD 0

MOD 1

MOD 2

RQCB for MOD 1

Request queue control block

RQCB for MOD 2

create

0

create

1 . . N

PIPELINE THREAD 1

Control block of pipeline’ s threads

PIPELINE THREAD N

Pipeline id = N

MOD 0

RQCB for MOD N

CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF pipeline 初始化

Page 21: CSF 3.0  架构解析与应用

CSF PROTOCOL 流程新连接(conn)

Libevent监听端口

accept新的连接

listen fd

调用xxx_session_start函数

将新连接加入事件集合

监听conn

Libevent监听conn端口

EV_READevent

conn fd

调用session

_entry函数

返回值指定结束?

删除事件 & 调用

session_endYES

NO

submit_request用户在合适的时候调用

Submit_request将指定数据提交到pipeling模块

新连接connected

connclosed

CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF PROTOCOL 流程

Page 22: CSF 3.0  架构解析与应用

CSF submit request 流程SubmitRequest

starts

生成请求 临时队列空? 获得first queue锁?YES

NO

获得first queue锁?

NO

插入到临时队列

NO

插入到first

queue

YES

YES

插入到临时队列

将临时队列连接到first queue尾

插入到first queue

解锁

解锁

SubmitRequest

ends

给workerThread 发信号

给workerThread 发信号

CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF SUBMIT REQUEST 流程

Page 23: CSF 3.0  架构解析与应用

CSF worker thread 流程worker threadStarts

Worker初始化 互斥锁 主队列是

否为空?挂起,等待条件变量

检查线程generation和当前全局generation

代数相等?

解锁

NO

YES

从队列头取出一个请求并将相应节点

删除

YES

解锁,执行

NO

有下一级?提交到下一级队列 提交到完成队列 worker

threadreturns

NOYES

generation线程的generation,即“ 代” 是在初始化时确定的。全局代是为更新线程所设计,用来实现线程

的新老更替

CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF WORKER THREAD 流程

Page 24: CSF 3.0  架构解析与应用

CSF 完整数据流libevent

CSFEvent

handlerProtocol组件

Request queue

Level 1

CSF MOD 组件

Request queue

Level N

Request donequeue

MOD handler

Response& free

Prot data processed

Protocol data

socket data Protocol data

Protocol data

CSF 3.0 架构解析与应用 > CSF 架构解析部分 > CSF 完整数据流

Page 25: CSF 3.0  架构解析与应用

请提问:1. 前面的哪个页面没有看明白?2. 其他任何问题?

CSF 3.0 架构解析与应用 > 请提问

CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 简介CSF 3.0 架构解析与应用 > CSF 基础应用部分 > CSF 的数据流CSF 3.0 架构解析与应用 > CSF 基础应用部分 > 2.0 版本后变化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 完整数据流