thinkjs3.x-运行流程
2021-11-02 11:47:36 8 举报
AI智能生成
thinkjs3.x-运行流程-简化版
作者其他创作
大纲/内容
特点:http.createServer创建服务
一:系统服务启动
实例化Application类,执行run方法
master进程
- 加载配置Config(合并config.js、adapter.js)
- 加载自定义启动( src/bootstrap/master.js )
- [if] 文件编译监听服务,监听目录 src/,编译到 app/ 目录
- 根据配置 workers 来 fork 对应数目的 Worker
- Worker 进程启动完成后,触发 appReady 事件
worker进程
- 加载配置Config(合并config.js、adapter.js)
- 加载扩展配置Extend(src/config/extend.js)
- 获取模块列表Modules( think.app.modules)
- 加载控制层Controller (src/controller/*.js)
- 加载校验层Logic(src/logic/*.js)
- 加载数据层Model (src/model/*.js)
- 加载Service (src/service/*.js)
- 加载路由(src/config/router.js)
- 加载校验配置(src/config/validator.js)
- 加载中间件Middleware(src/config/middleware.js)
- 加载定时任务注册服务(src/config/crontab.js)
- 加载自定义启动(src/bootstrap/worker.js)
- 监听 process 里的 onUncaughtException 和 onUnhandledRejection 错误事件
- 等待 think.beforeStartServer 注册的启动前处理函数执行
- [if] 执行 createServer(port, host, callback) 创建自定义服务;[else] think.app.listen 启动服务
- 服务启动完成时,触发 think.app.on("appReady") 监听
- 创建的服务赋值给 think.app.server 对象
二:用户请求处理
通过端口访问node服务
Master进程将请求转发给对应的Worker
Worker进程通过注册的中间件处理用户请求:
meta、resource、trace、payload、router、logic、controller等
meta、resource、trace、payload、router、logic、controller等
Router解析路由,解析对应的Controller和Action
Logic执行解析出来的方法
Controller执行解析出来的方法
当 Worker 报错(触发 onUncaughtException 或 onUnhandledRejection 事件),或 Worker 异常退出时,Master 捕获后重新 fork 1个新的 Worker 进程,并杀掉当前的进程

收藏
0 条评论
下一页