service设计文档¶
1 概述¶
service是当前unit类型的一种,用来启动对应的服务, 是服务管理最主要的一种。
1.1 目的¶
service模块主要用来实现服务的启动,实现服务的管理如启动、停止、重启等。
2 特性需求概述¶
表1:特性需求列表
需求编号 | 需求名称 | 特性描述 | 优先级 |
---|---|---|---|
1 | Simple | 启动服务时forking即认为服务已经启动完成 | 高 |
2 | Forking | sysmaster fork的子进程为管理进程, 管理进程退出服务启动成功, 通过pid_file传递进程id | 高 |
3 | Notify | 服务主动通告子进程的状态给sysmaster | 高 |
4 | Oneshot | 拉起的服务退出之后即认为服务启动完成 | 高 |
3 需求场景分析¶
3.1 特性需求来源与价值概述¶
service是服务管理的主要实现, 用于实现进程或应用的拉起、停止、重启等功能。
3.2 特性场景分析¶
需要拉起进程或应用时使用。
3.3 特性影响分析¶
4 特性/功能实现原理¶
4.1 总体方案¶
整个特性包含9个模块,包括service_base、service_comm、service_config、service_mng、service_spawn、service_pid、service_unit
-
service_base:基础数据结构的定义。
-
service_comm:包括公共数据结构的引用,当前包含UnitManager和Unit的引用。
-
service_config:实现service配置文件的数据结构定义和转换。
-
service_mng: 实现service启动流程的状态转换。
-
service_spawn:实现service执行cmd的入口。
-
service_pid:实现service pid的管理。
-
service_unit:实现socket子类型的定义, 实现UnitObj、UnitSubClass、UnitMngUtil三个trait。
4.2 service状态转换图¶
状态转换包括子类内部的状态转换以及unit整体的状态转换,具体的对应关系如图中所示。
4.3 service_forking启动设计¶
启动类型为forking模式时, sysmaster fork出来的子进程为中间管理进程,中间管理进程退出认为服务启动完成, 中间管理进程 退出后再启动对应的主进程。
4.4 service_notify启动设计¶
-
sysmaster启动inotify监听套接子, 并将unix套接子的路径传递给子进程。
-
子进程通过unix套接子通告状态给sysmaster。
4.5 特性下的非功能需求设计¶
NA
5可靠性/可用性/Function Safety设计¶
NA
6 安全/隐私/韧性设计¶
NA
7 特性非功能性质量属性相关设计¶
NA
8 数据结构设计(可选)¶
本章节完成数据库结构的设计(数据库表结构,可以使用Power Designer完成),可选章节。
9 词汇表¶
NA
10 其它说明¶
NA
11 参考资料清单¶
NA
Last update:
March 2, 2023
Created: September 29, 2022
Created: September 29, 2022