Node.js微服务对怎样选用Node.js以及绿色生态工貝开展微服务开发设计的*实践活动干了全方位的详细介绍,內容包含对分布式架构基本要素及设计原理的解读,及其怎样选用Node.js配搭Seneca、PM2和Docker等智能化工貝来搭建、检测、监控器及其布署轻巧微服务,一起也论述了Node.js在微服务实践活动中常涉及到的有关定义,并就微服务的优点和缺点、文本文档化、安全系数及其追朔性等主题风格开展了讨论。
目录
- 微服务架构 1
- 微服务应运而生 1
- 单块软件 2
- 现实世界中的微服务 2
- 面向微服务的架构 3
- 为什么面向微服务的架构更好 3
- 不足之处 3
- 关键设计原则 4
- 从组件到业务单元 5
- 智能的服务,愚蠢的通信管道 7
- 去中心化 8
- 技术对比 10
- 多微才是足够的微 10
- 关键的好处 11
- 弹性 11
- 可伸缩性 11
- 技术多样性 13
- 可替换性 14
- 独立性 15
- SOA与微服务的比较 16
- 为什么选择Node.js 18
- API聚合 18
- 展望Node.js 19
- 小结 20
- 2 基于Seneca和PM2构建Node.js微服务 21
- 选择Node.js的理由 21
- 安装Node.js、npm、Seneca和PM2 22
- 第一个程序——Hello World 25
- Node.js的线程模型 27
- 模块化组织的最佳实践 27
- 微服务框架Seneca 32
- 实现控制反转 35
- Seneca的模式匹配 35
- PM2——Node.js的任务执行器 46
- 单线程应用及异常 46
- PM2——业界标准的任务执行器 47
- 小结 52
- 3 从单块软件到微服务 53
- 首先,我们拥有一个单块软件 53
- 如何控制自然增长 54
- 多抽象才是过度抽象 57
- 微服务的出现 58
- 微服务的缺陷 64
- 分割单块软件 64
- 数据才是分割单块软件的主要问题 65
- 组织架构适配 66
- 小结 67
- 4 编写你的第一个Node.js微服务 69
- 微电子商务概览 69
- 商品管理服务——双重核心 71
- 获取商品信息 72
- 获取指定类别的商品 73
- 根据ID获取商品 74
- 添加商品 75
- 删除商品 75
- 编辑商品 76
- 整合各模块 76
- 集成Express与Seneca——如何创建REST API 81
- 邮件服务:一个常见的问题 82
- 如何发送邮件 82
- 接口定义 83
- 设置Mandrill 84
- 亲自动手在微服务中集成Mandrill 86
- 回退策略 91
- 订单管理服务 92
- 根据如何获取非本地数据来定义微服务 93
- 订单管理服务代码 95
- UI——API聚合的产物 99
- 前端微服务的必要性 99
- 代码 99
- 服务降级——当出现非灾难性故障时 107
- 断路器 108
- Seneca——一块使我们工作变得更容易的拼图 109
- Seneca和promise 111
- 调试 115
- 小结 118
- 5 安全性和可追溯性 119
- 基础设施的逻辑安全 119
- 利用SSH来对通信加密 120
- 应用程序安全 122
- 保持安全方面的与时俱进来应对常见威胁 123
- 有效的代码审阅 131
- 可追溯性 132
- 日志 132
- 请求追踪 134
- 审计 135
- HTTP状态码 136
- 小结 138
- 6 Node.js微服务的测试及文档化 140
- 功能性测试 141
- 自动化测试的金字塔 142
- 采用Node.js测试微服务 145
- 对微服务进行文档化 175
- 采用Swagger对API进行文档化 175
- 根据Swagger定义来生成项目 182
- 小结 184
- 7 微服务的监控 185
- 服务监控 185
- 采用PM2和Keymetrics进行监控 186
- 类人猿大军—来自Netflix的主动监控 201
- 吞吐量和性能降级 204
- 小结 206
- 8 微服务的部署 208
- 软件部署的一些概念 208
- 持续集成 209
- 持续交付 209
- 采用PM2进行部署 209
- PM2中的“生态系统” 210
- 采用PM2来部署微服务 212
- Docker——一种可用于软件交付的容器 213
- 组装容器 215
- 部署Node.js应用 221
- 将Docker容器的创建过程自动化 223
- Node.js事件循环—入门容易精通难 225
- Node.js应用的集群化 228
- 为应用增加负载均衡 233
- NGINX的健康检查 238
- 小结 239