阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      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

      目录
      目录