万本电子书0元读

万本电子书0元读

顶部广告

Node.js实战:分布式系统中的后端服务开发电子书

从初创公司到世界500强,大多数公司都喜欢使用Node.js来构建高性能的后端服务。工程师对Node.js有很高的评价,因为它有容易理解的API和大家熟悉的语法。在全球大的包存储库的强力支持下,Node.js的生态必将更加繁荣。   在本书中,作者证明了Node.js在构建可观察、可扩展且有弹性的服务方面与传统的企业平台一样适用。中高级Node.js发人员会发现,他们可以将应用程序代码和现代服务的各个层面结合起来。

售       价:¥

纸质售价:¥107.60购买纸书

51人正在读 | 0人评论 6.3

作       者:(美)托马斯·亨特二世(Thomas Hunter II)

出  版  社:机械工业出版社

出版时间:2021-11-01

字       数:22.6万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,使用了高效、轻量级的事件驱动、非阻塞 I/O 模型,让JavaScript 运行在服务端的发平台。本书主要介绍基于Node.js构建企业级后端服务,内容涉及Node.js和JavaScript的特性介绍、通信协议、扩展、可观测性、Docker容器、部署、容器编排、应用程序容错、分布式单元、应用程序安全性等内容。本书不是面向 Node.js新手的,适用于拥有Node.js 实战经验且熟练掌握JavaScript的发人员。读完本书,你会了解在生产环境中运行 Node.js 服务所需的许多技术。<br/>【推荐语】<br/>从初创公司到世界500强,大多数公司都喜欢使用Node.js来构建高性能的后端服务。工程师对Node.js有很高的评价,因为它有容易理解的API和大家熟悉的语法。在全球大的包存储库的强力支持下,Node.js的生态必将更加繁荣。   在本书中,作者证明了Node.js在构建可观察、可扩展且有弹性的服务方面与传统的企业平台一样适用。中高级Node.js发人员会发现,他们可以将应用程序代码和现代服务的各个层面结合起来。   【通过学习本书,你可以:】 了解为什么要运行多个相同的Node.js服务副本。 根据业务场景选择恰当的协议。 调整应用程序容器以便在生产环境中运行。 跟踪分布式系统中的错误,以确定哪个服务出错。 通过将工作转移给反向代理来简化应用程序代码并提高性能。 构建数据面板来监视服务运行状况和数据吞吐量。 了解在企业环境中操作时需要使用多种工具的原因。<br/>
目录展开

O'Reilly Media, Inc.介绍

序言

前言

第1章 为什么要用分布式

1.1 JavaScript的单线程特性

1.2 Node.js速览

1.3 Node.js的事件循环

1.3.1 事件循环阶段

1.3.2 代码示例

1.3.3 事件循环技巧

1.4 示例应用程序

1.4.1 服务间的关系

1.4.2 生产者服务

1.4.3 使用者服务

第2章 协议

2.1 使用HTTP请求和响应

2.1.1 HTTP负载

2.1.2 HTTP语义

2.1.3 HTTP压缩

2.1.4 HTTPS与TLS

2.1.5 JSON over HTTP

2.1.6 序列化POJO的潜在危险

2.2 使用GraphQL构建API外观

2.2.1 GraphQL schema

2.2.2 查询和响应

2.2.3 GraphQL服务生产者

2.2.4 GraphQL使用者

2.3 使用gRPC进行RPC通信

2.3.1 Protocol Buffers

2.3.2 gRPC生产者

2.3.3 gRPC使用者

第3章 扩展

3.1 集群模块

3.1.1 简单示例

3.1.2 请求派发

3.1.3 集群的缺点

3.2 使用HAProxy实现反向代理

3.2.1 HAProxy介绍

3.2.2 负载均衡和运行状况检查

3.2.3 压缩

3.2.4 终止TLS会话

3.2.5 限速与背压

3.3 SLA和负载测试

3.3.1 Autocannon简介

3.3.2 运行基准负载测试

3.3.3 反向代理的影响

3.3.4 协议的影响

3.3.5 服务等级目标

第4章 可观测性

4.1 运行环境

4.2 ELK与日志

4.2.1 使用Docker运行ELK

4.2.2 从Node.js传输日志

4.2.3 创建Kibana数据面板

4.2.4 运行点对点查询

4.3 Graphite、StatsD和Grafana度量指标

4.3.1 通过Docker运行

4.3.2 从Node.js传输度量指标值

4.3.3 创建Grafana数据面板

4.3.4 Node.js运行状况指示器

4.4 使用Zipkin进行分布式请求跟踪

4.4.1 Zipkin是怎么工作的

4.4.2 使用Docker运行Zipkin

4.4.3 从Node.js传输跟踪信息

4.4.4 可视化请求树

4.4.5 可视化微服务依赖项

4.5 运行状况检查

4.5.1 构建运行状况检查

4.5.2 测试运行状况检查

4.6 使用Cabot进行报警

4.6.1 创建Twilio试用账户

4.6.2 使用Docker运行Cabot

4.6.3 创建运行状况检查

第5章 容器

5.1 Docker简介

5.2 容器化Node.js服务

5.2.1 依赖项阶段

5.2.2 发布阶段

5.2.3 从镜像到容器

5.2.4 镜像重建和版本化

5.3 使用Docker Compose进行基本编排

5.3.1 组合Node.js服务

5.4 内部Docker注册表

5.4.1 运行Docker注册表

5.4.2 注册表的推送和拉取

5.4.3 运行Docker注册表UI

第6章 部署

6.1 使用Travis CI构建流水线

6.1.1 创建基础项目

6.1.2 配置Travis CI

6.1.3 测试拉取请求

6.2 自动化测试

6.2.1 单元测试

6.2.2 集成测试

6.2.3 代码覆盖率

6.3 部署Heroku

6.3.1 创建Heroku应用程序

6.3.2 配置Travis CI

6.3.3 部署应用程序

6.4 模块、包和SemVer

6.4.1 Node.js模块

6.4.2 SemVer

6.4.3 npm包和npm CLI

6.5 内部npm注册表

6.5.1 运行Verdaccio

6.5.2 使用Verdaccio配置npm

6.5.3 发布到Verdaccio

第7章 容器编排

7.1 Kubernetes简介

7.1.1 Kubernetes总览

7.1.2 Kubernetes概念

7.1.3 启动Kubernetes

7.2 启动

7.3 部署应用程序

7.3.1 Kubectl子命令

7.3.2 Kubectl配置文件

7.4 服务发现

7.5 修改部署

7.5.1 扩展应用程序实例

7.5.2 部署新版本应用程序

7.5.3 回滚应用程序部署

第8章 弹性

8.1 Node.js进程的终止

8.1.1 进程退出

8.1.2 异常、拒绝和错误

8.1.3 信号

8.2 构建无状态服务

8.2.1 避免内存泄漏

8.2.2 自限定进程内缓存

8.3 使用Memcached构建外部缓存

8.3.1 Memcached简介

8.3.2 运行Memcached

8.3.3 使用Memcached缓存数据

8.3.4 数据结构变动

8.4 数据库连接的弹性

8.4.1 运行PostgreSQL

8.4.2 自动重新连接

8.4.3 连接池

8.5 使用Knex进行Schema迁移

8.5.1 配置Knex

8.5.2 创建Schema迁移

8.5.3 应用迁移

8.5.4 回滚迁移

8.5.5 动态迁移

8.6 幂等性和消息传递弹性

8.6.1 HTTP重试逻辑

8.6.2 断路器模式

8.6.3 指数退避

8.7 弹性测试

8.7.1 随机崩溃

8.7.2 事件循环暂停

8.7.3 随机失败的异步操作

第9章 分布式基元

9.1 ID生成问题

9.2 Redis简介

9.3 Redis操作

9.3.1 字符串

9.3.2 列表

9.3.3 集合

9.3.4 哈希表

9.3.5 有序集合

9.3.6 通用命令

9.3.7 其他类型

9.4 寻求原子性

9.5 事务

9.6 Lua脚本

9.6.1 编写Lua脚本

9.6.2 加载Lua脚本

9.6.3 整合

第10章 安全性

10.1 繁杂的代码库

10.2 认识攻击面

10.2.1 参数检查和反序列化

10.2.2 恶意的npm包

10.3 应用程序配置

10.3.1 环境变量

10.3.2 配置文件

10.3.3 密钥管理

10.4 升级依赖项

10.4.1 使用GitHub Dependabot进行自动更新

10.4.2 使用npm CLI进行手动更新

10.4.3 未能修补的漏洞

10.5 升级Node.js

10.5.1 Node.js LTS发布计划

10.5.2 升级方法

附录A 安装HAProxy

Linux:从源代码构建

Linux:安装预编译的二进制文件

macOS:通过Homebrew安装

附录B 安装Docker

macOS:安装Docker Desktop for Mac

Linux:方便的安装脚本

附录C 安装Minikube和Kubectl

Linux:Debian包和预编译的二进制文件

macOS:通过Homebrew安装

关于作者

关于封面

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部