本书内容要点:
√ 理解Node.js模块并掌握在与微服务打交道时的zui佳实践
√ 将现有的单块系统重新架构成面向微服务的软件
√ 使用Seneca和Node.js构建出健壮且可伸缩的微服务
√ 对微服务进行隔离测试从而创建出可靠的系统
√ 使用PM2部署并管理微服务
√ 监控微服务的健康状况(CPU、内存以及I/O)
《Node.js微服务》对如何采用Node.js 及其生态工具进行微服务开发的zui佳实践做了全面的介绍,内容包括对微服务架构基本概念及设计原则的讲解,以及如何采用Node.js 搭配Seneca、PM2 和Docker 等现代化工具来构建、测试、监控以及部署轻量级微服务,同时也阐述了Node.js 在微服务实践中所涉及的相关概念,并就微服务的优缺点、文档化、安全性以及可追溯性等主题进行了探讨。
《Node.js微服务》适合掌握服务端开发基本知识的Node.js 开发者以及使用Java、C#等其他服务端技术栈并对微服务实践感兴趣的所有开发者。
1 微服务架构1
微服务应运而生1
单块软件2
现实世界中的微服务2
面向微服务的架构3
为什么面向微服务的架构更好3
不足之处3
关键设计原则4
从组件到业务单元5
智能的服务,愚蠢的通信管道7
去中心化8
技术对比10
多微才是足够的微10
关键的好处11
弹性11
可伸缩性11
技术多样性13
可替换性14
独立性15
SOA与微服务的比较16
为什么选择Node.js18
API聚合18
展望Node.js19
小结20
2 基于Seneca和PM2构建Node.js微服务21
选择Node.js的理由21
安装Node.js、npm、Seneca和PM222
第一个程序——Hello World25
Node.js的线程模型27
模块化组织的最佳实践27
微服务框架Seneca32
实现控制反转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 API81
邮件服务:一个常见的问题82
如何发送邮件82
接口定义83
设置Mandrill84
亲自动手在微服务中集成Mandrill86
回退策略91
订单管理服务92
根据如何获取非本地数据来定义微服务93
订单管理服务代码95
UI——API聚合的产物99
前端微服务的必要性99
代码99
服务降级——当出现非灾难性故障时107
断路器108
Seneca——一块使我们工作变得更容易的拼图109
Seneca和promise111
调试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