后端工程师的思维,让应用能稳定的业务支持,大规模的线上业务;
基于 Node.js 来一步步构建项目,涉及

  • RPC 调用
  • 系统运维
  • 进程管理
  • API网关 GateWay
  • 用户认证与授权
  • 调用链监控-Sleuth
  • 服务容错-Sentinel
  • 消息驱动-RocketMQ
  • 服务发现-Nacos
  • websocket
    • 基于js的websocket相关api介绍简单实现前后端聊天通信

服务端技术栈

能在生产环境部署一个稳定的 nodejs应用,承载更多的流量

  1. RESTful API开发
    1. Graphql
  2. 数据存储
    1. egg-sequelize
    2. MySQL
    3. Sequelize
    4. Redis
  3. SSO登录
  4. 线上部署
  5. 日志分析
    1. log4j

APM监控系统

  1. graphit & grafana监控 nodejs
  2. nodejs接入阿里云 nodejs性能平台
  3. 搭建自己的 apm体系

负载均衡

服务负载均衡
RPC负载均衡
高可用的优雅退出 graceful exit
灰度发布机制,健康检查 health check
pm2实现 nodejs进程管理与优雅退出

自定义中间件

  • httpLog(日志)
  • userExist(用户是否存在)
  • 用户登录验证 (使用 JWT)
  • 接口拦截 (egg-auth 插件)
  • forbiddenIP 防止爬虫

项目安全

  • 防御 XSS (eggJS 自带的 ctx.helper.escape 过滤 html 中的标签)
  • 防御 SQL 注入 (egg.validator 验证输入参数类型)
  • 防御 CSRF (egg-allowHosts 插件)
  • 接口限流 (egg-interfaceLimit 插件)
  • 接口缓存 (egg-interfaceCache 插件)

自定义插件

  • egg-auth(验证用户)
  • egg-info(系统信息)
  • egg-notFound(接口不存在)

nodjs性能优化

项目部署

  • Docker 容器化
  • Nginx 代理
  • 阿里云 OSS 存放图片