Web应用开发框架-egg进阶与实战(三)——总结之debug、日志、多进程、错误处理、多实例插件、多进程增强、实战-简易博客

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
  • 错误处理

    • Try catch
      • 问题: 只能catch当前事件循环的错误
      • Ctx.runInBackground
    • 注意: 一定要抛出error类型
    • 统一异常处理的方式
      • 500
        • Config.onerror.all
        • 中间件
      • 404
        • Config.notfound
        • 中间件
  • 多实例插件

    • app.addSingleton
      • 创建多实例数据库
        • App.js 调用app.addSingleton
        • Config 配置数据库
      • 动态 创建数据
        • 远程获取配置
        • app.mysql创建实例
  • 多进程增强

    1. 每一个worker都和socket服务器进行连接, 造成n*m的问题
    2. agent连接,但是agent和worker的通信需要 master转发,效率低,不稳定
    3. agent和socket服务连接,但是 agent和worker会创建本地socket通道
    • 核心思想
      • Leader/Follower
        • 来源于多线程
      • Leader 和远程连接,通过内部的socket和woker通信
    • client抽象类
      • 发布,订阅
      • 调用类 (读取数据)
        • 只是对类的抽象,随便你怎么实现
    • 异常的处理
      • leader死掉 follower会抢
      • 心跳机制
  • 实战- 简易博客

    • mongoose
      • 对mongoDb的抽象,类似jq
      • schema
        • 对字段的描述
      • model
        • 表的名称
    • 正式开发
      • 配置数据库
        1. 安装依赖 npm init egg —type=simple
        2. 安装插件 egg-mongoose
        3. 配置 plugin.js
        4. 配置 config.default.js
          1. 选择数据库 blog
      • 设计schema
        • 字段名
          • content
          • title
        • app/model/posts.js
        • return model class
      • 设计路由, 数据库新增数据
        • Route.resources
        • new model
        • Instance.save()

猜你喜欢

转载自blog.csdn.net/weixin_44867717/article/details/134221850
今日推荐