Skip to content

mrdulin/nodejs-microservice

Repository files navigation

nodejs-microservice

使用seneca及相关插件, express, node.jsmongodb搭建微服务

环境:

  • node: v8.4.0

  • npm: v5.3.0

  • pm2: 2.10.1

  • 其他依赖,见package.json

说明:

  • plugins: seneca插件目录

  • services: seneca微服务,生产环境时,微服务是分布式的,本项目为方便测试,不同微服务使用相同 host(127.0.0.1)的不同端口,例如productManager微服务使用http://127.0.0.1:3001

  • plugins/api.js: 是 api 聚合插件,通过调用各个微服务(如productManager)用于给前端 ui 提供 api

  • plugins/productManager.js: 是一个具体的“商品管理服务”

  • plugins/memoryLeak.js:是一个内存溢出的微服务,用来测试 pm2 和 keymetrics 对应用监控的性能指标

  • plugins/mockLotsRequest.sh:用来模拟大量请求,使memoryLeak.js微服务内存溢出,观察 keymetrics 监控的内存指标

使用:

  1. productManager服务为例, 通过node services/productManager.js等启动微服务,使用
curl -d  '{"area": "product", "action": "test"}' http://localhost:3001/act

测试productManager服务是否正常

  1. npm start启动seneca整合了express.js的应用

  2. 通过浏览器访问http://localhost:3000/api/products等获取数据,或者通过curl测试

  3. npm test执行单元测试,执行完npm test会通过npm命令post钩子执行npm posttest检查覆盖率是否通过设定的指标(本项目设定代码行、分支、函数都为 75%)

  4. npm test:e2e执行端到端测试

  5. pm2 start plugins/memoryLeak.js启动应用,并使用pm2 link secretKey publicKey [machine name]将 pm2 的数据推送到 keymetrics

  6. npm run deploy-dev,将应用部署到本地环境(部署目录,我的是/home/elsa/development),然后访问http://localhost:3000/api/products查看接口