Web应用开发框架-egg进阶与实战(三)——总结之debug、日志、多进程、错误处理、多实例插件、多进程增强、实战-简易博客
第三章 EGG进阶与实战
-
debug
-
日志
- 存储路径
- 开发环境默认
- 生产环境可以指定
- 日志分类
- error
- warn
- info
- debug
- none
- ctx.logger
- app.logger
- 切割
- 大小
- 时间
- 日
- 小时
- 性能
- 默认1秒写入一次
- 存储路径
-
多进程
- 相比nodejs原生 新增了一个agent的概念
- agent
- 应用场景
- 长连接
- 特点
- 出错master不会重启,需要时刻关注日志
- 应用场景
- 进程通信
- messenger
- 特点 挂载在 app 和 agent下面
- broadcast 所有人
- sendToApp
- sendToAgent
- sendRandom
- sendTo
- messenger
-
错误处理
- Try catch
- 问题: 只能catch当前事件循环的错误
- Ctx.runInBackground
- 注意: 一定要抛出error类型
- 统一异常处理的方式
- 500
- Config.onerror.all
- 中间件
- 404
- Config.notfound
- 中间件
- 500
- Try catch
-
多实例插件
- app.addSingleton
- 创建多实例数据库
- App.js 调用
app.addSingleton
- Config 配置数据库
- App.js 调用
- 动态 创建数据
- 远程获取配置
- app.mysql创建实例
- 创建多实例数据库
- app.addSingleton
-
多进程增强
- 每一个worker都和socket服务器进行连接, 造成n*m的问题
- agent连接,但是agent和worker的通信需要 master转发,效率低,不稳定
- agent和socket服务连接,但是 agent和worker会创建本地socket通道
- 核心思想
- Leader/Follower
- 来源于多线程
- Leader 和远程连接,通过内部的socket和woker通信
- Leader/Follower
- client抽象类
- 发布,订阅
- 调用类 (读取数据)
- 只是对类的抽象,随便你怎么实现
- 异常的处理
- leader死掉 follower会抢
- 心跳机制
-
实战- 简易博客
- mongoose
- 对mongoDb的抽象,类似jq
- schema
- 对字段的描述
- model
- 表的名称
- 正式开发
- 配置数据库
- 安装依赖 npm init egg —type=simple
- 安装插件 egg-mongoose
- 配置 plugin.js
- 配置 config.default.js
- 选择数据库 blog
- 设计schema
- 字段名
- content
- title
- app/model/posts.js
- return model class
- 字段名
- 设计路由, 数据库新增数据
- Route.resources
- new model
- Instance.save()
- 配置数据库
- mongoose