Node.js 微服务

🌙
手机阅读
本文目录结构

Node.js 微服务

编辑推荐

本书内容要点:

  • √ 理解 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#等其他服务端技术栈并对微服务实践感兴趣的所有开发者。

作者简介

David Gonzalez 是一名在编程语言方面“极不专一”的软件工程师,他在金融服务行业“混迹”多年。他尝试找到抽象层次合适的解决方案,并探索着如何保证既不过于具体也不过于抽象之间的平衡。

David 曾求学于西班牙,但是不久之后便转战都柏林,自 2011 年起便定居于此并开启了更为宽广和有趣的职业生涯。他目前是一名金融技术领域的独立咨询师。他的 Linkedin 账号地址是:https://ie.linkedin.com/in/david-gonzalez-737b7383。

David 乐于尝试新的技术和范式,从而能让自己在软件开发的复杂世界中不断拓展出新的版图。

审校者

Kishore Kumar Yekkanti 是一名经验丰富的专家,他在过去的十年里曾与不同的领域和技术打过交道。他对软件开发中的消除浪费尤具热情。Kishore 是敏捷原则的巨大贡献者和遵循者。他是一名善于开发端到端系统的全栈开发者,同时也是一名通晓多种语言的程序员。目前他专注于高度分布式应用中的微服务扩展,而这些应用部署于云端基于容器的系统(Docker)之中。他曾在多家知名的公司担任过首席工程师,这些公司包括 Thoughtworks、CurrencyFair 等。他曾通过微服务为这些公司的团队带来新生。

目录

  • 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

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了