注重体验与质量的电子书资源下载网站
分类于: 设计 编程语言
简介
Cloud Native 分布式架构原理与实践 豆 0.0分
资源最后更新于 2020-11-23 03:13:58
作者:柳伟卫
出版社:北京大学出版社
出版日期:2019-01
ISBN:9787301300893
文件格式: pdf
标签: 云原生 计算机 微服务 前瞻技术 ~云原生 cloud SpringCloud Spring5
简介· · · · · ·
内容简介:
Cloud Native(云原生)是以云架构为优先的应用开发模式。目前,越来越多的企业已经开始大规模地“拥抱云”——在云环境下开发应用、部署应用及发布应用等。未来,越来越多的开发者也将采用 Cloud Native 来开发应用。本书是国内 Java 领域关于 Cloud Native 的著作。
本书全面讲解了基于 Cloud Native 来构建应用需要考虑的设计原则和实现方式,涵盖 REST 设计、测试、服务注册、服务发现、安全、数据管理、消息通信、批处理、任务调度、运营、容器部署、持续发布等方面的 Cloud Native 知识。同时,书中所讲解的技术方案皆为业界主流的技术,极具前瞻性。最后,本书除了讲解 Cloud Native 的理论知识,还会在每个知识点上辅以大量的代码案例,使理论可以联系实践,具备更强的可操作性。
本书主要面向...
目录
第1章 Cloud Native 概述
1.1 当今软件发展的现状
1.1.1 软件需求的发展
1.1.2 开发方式的巨变
1.1.3 云是大势所趋
1.2 Cloud Native 的特性
1.2.1 以云为基础架构
1.2.2 云服务
1.2.3 无服务
1.2.4 可扩展
1.2.5 高可用
1.2.6 敏捷
1.2.7 云优先
1.3 12-Factor
1.3.1 基准代码
1.3.2 依赖
1.3.3 配置
1.3.4 后端服务
1.3.5 构建、发布和运行
1.3.6 进程
1.3.7 端口绑定
1.3.8 并发
1.3.9 易处理
1.3.10 开发环境与线上环境等价
1.3.11 日志
1.3.12 管理进程
1.4 成功案例
1.4.1 Amazon
1.4.2 Netflix
1.4.3 淘宝网
1.5 Cloud Native 与微服务
1.5.1 微服务概述
1.5.2 从单块架构向微服务演进
1.5.3 Cloud Native 与微服务部署
1.6 总结
1.6.1 Cloud Native 的优点
1.6.2 Cloud Native 不是“银弹”
1.6.3 面临的挑战
第2章 REST API
2.1 REST 概述
2.1.1 REST 的定义
2.1.2 REST 设计原则
2.2 成熟度模型
2.2.1 第0级:使用 HTTP 作为传输方式
2.2.2 第1级:引入了资源的概念
2.2.3 第2级:根据语义使用 HTTP 动词
2.2.4 第3级:使用 HATEOAS
2.3 Java REST
2.3.1 JAX-RS 规范
2.3.2 Jersey 框架
2.3.3 Apache CXF 框架
2.3.4 Spring Web MVC 框架
2.4 内容协商
2.4.1 二进制数据
2.4.2 Google Protocol Buffers 传输协议
2.5 异常处理
2.5.1 HTTP 状态码
2.5.2 自定义异常信息
2.6 API 管理
2.6.1 版本化
2.6.2 文档化
2.6.3 可视化
2.7 客户端
2.7.1 浏览器插件
2.7.2 JAX-RS 客户端
2.7.3 Spring 客户端
2.8 实战:开启第一个微服务
2.8.1 初始化一个 Spring Boot 原型
2.8.2 用 Gradle 编译项目
2.8.3 探索项目
2.8.4 实现第一个服务
第3章 Cloud Native 测试
3.1 测试概述
3.1.1 传统测试所面临的问题
3.1.2 如何破解测试面临的问题
3.2 测试的类型、范围和比例
3.2.1 测试类型
3.2.2 测试范围
3.2.3 测试比例
3.3 如何进行微服务的测试
3.3.1 微服务的单元测试
3.3.2 Mock 与 Stub 的区别
3.3.3 微服务的集成测试
3.3.4 微服务的系统测试
3.3.5 保障代码覆盖率
3.4 Spring 测试框架
3.4.1 Spring TestContext 框架
3.4.2 Spring MVC Test 框架
3.4.3 Spring Boot Test 框架
第4章 服务路由
4.1 如何找到服务
4.1.1 DNS
4.1.2 服务注册与发现
4.1.3 客户端发现机制
4.1.4 服务端发现机制
4.2 实战:实现服务注册与发现
4.2.1 选择 Eureka的原因
4.2.2 集成 Eureka Server
4.2.3 集成 Eureka Client
4.2.4 服务的注册与发现
第5章 Cloud Native 安全
5.1 认证与授权
5.1.1 基本认证
5.1.2 摘要认证
5.1.3 摘要认证的密码加密
5.1.4 通用密码加密
5.1.5 基于散列的令牌方法
5.1.6 基于持久化的令牌方法
5.2 Java 安全框架
5.2.1 Apache Shiro
5.2.2 Spring Security
5.2.3 Spring Cloud Security
5.3 OAuth 2.0 认证
5.3.1 OAuth 2.0 的认证原理
5.3.2 OAuth 2.0 的核心概念
5.3.3 OAuth 2.0 的认证流程
5.4 实战:实现单点登录
5.4.1 项目依赖
5.4.2 编码实现
5.4.3 应用配置
5.4.4 运行
第6章 Cloud Native 数据管理
6.1 数据的存储方式
6.1.1 关系型数据库
6.1.2 NoSQL
6.2 DDD 与数据建模
6.2.1 DDD 概述
6.2.2 运用 DDD 进行数据建模
6.3 常用数据访问方式
6.3.1 JDBC
6.3.2 Spring JDBC
6.3.3 JPA
6.4 Spring Data
6.4.1 Spring Data 概述
6.4.2 Spring Data JPA
6.4.3 Spring Data Elasticsearch
6.4.4 Spring Data Redis
6.4.5 Spring Data MongoDB
6.4.6 实战:基于 MongoDB 的文件服务器
第7章 Cloud Native 消息通信
7.1 消息通信概述
7.1.1 消息通信的基本概念
7.1.2 JMS
7.1.3 事件驱动的架构
7.2 消息通信常用模式
7.2.1 点对点模式
7.2.2 发布—订阅模式
7.3 CQRS
7.3.1 CQRS 概述
7.3.2 CQRS 的好处
7.3.3 实战:实现 CQRS
7.4 Spring Cloud Stream
7.4.1 Spring Cloud Stream 概述
7.4.2 Spring Cloud Stream 实现发布者
7.4.3 Spring Cloud Stream 实现消费者
7.4.4 实战:基于 Spring Cloud Stream 的消息通信
第8章 Cloud Native 批处理
8.1 批处理概述
8.1.1 需要批处理的原因
8.1.2 常用批处理实现方式
8.2 JDBC Batch
8.2.1 Statement 与 PreparedStatement
8.2.2 实战:使用 JDBC Batch 的例子
8.3 Spring 批处理
8.3.1 使用 JdbcTemplate 实现批处理
8.3.2 批量更新 List
8.3.3 多个批次更新
8.4 Spring Batch
8.4.1 Spring Batch 概述
8.4.2 Job
8.4.3 JobLauncher
8.4.4 JobRepository
8.4.5 Step
8.4.6 ItemReader
8.4.7 ItemWriter
8.4.8 ItemProcessor
8.4.9 实战:使用 Spring Batch 的例子
第9章 Cloud Native 任务调度
9.1 任务执行与调度概述
9.2 Spring TaskExecutor
9.2.1 TaskExecutor 类型
9.2.2 TaskExecutor 应用
9.3 Spring TaskScheduler
9.3.1 Trigger 接口
9.3.2 Trigger 接口的实现
9.4 Spring 任务调度及异步执行
9.4.1 启用调度注解
9.4.2 @Scheduled 注解
9.4.3 @Async 注解
9.4.4 @Async 的异常处理
9.4.5 命名空间
9.5 使用 Quartz Scheduler
9.5.1 使用 JobDetailFactoryBean
9.5.2 使用 MethodInvokingJobDetailFactoryBean
9.6 实战:基于 Quartz Schedule 的天气预报系统
9.6.1 项目概述
9.6.2 后台编码实现
9.6.3 运行
第10章 Cloud Native 运营
10.1 CAP 理论
10.1.1 CAP 理论概述
10.1.2 CAP 只能三选二的原因
10.1.3 CAP 常见模型
10.1.4 CAP 的意义
10.1.5 CAP 的发展
10.2 服务的熔断
10.2.1 熔断的意义
10.2.2 Hystrix 概述
10.2.3 实战:实现微服务的熔断机制
10.3 代码管理
10.3.1 Git 简介
10.3.2 Git 核心概念
10.3.3 Git Flow
10.4 日志管理
10.4.1 日志框架概述
10.4.2 分布式下的日志管理
10.4.3 集中化日志分析
10.4.4 实战:基于 Elastic Stack 的集中化日志管理
10.5 配置管理
10.5.1 分布式下的配置管理的痛点
10.5.2 集中化配置
10.5.3 Spring Cloud Config
10.5.4 实战:基于 Config 实现的配置中心
10.6 应用监控
10.6.1 心跳
10.6.2 Eureka 监测机制
10.6.3 Spring Boot Actuator
10.6.4 实战:基于 Spring Boot Actuator 监测的例子
第11章 Cloud Native 持续发布
11.1 持续集成与持续交付
11.1.1 持续集成概述
11.1.2 持续交付与持续部署
11.1.3 持续交付与持续部署的意义
11.2 持续交付流水线
11.2.1 流水线概述
11.2.2 构建持续交付流水线
11.2.3 构建流水线的工具
11.3 微服务的管理与发布
11.3.1 两个比萨的故事
11.3.2 DevOps 文化
11.3.3 微服务的发布
11.4 容器
11.4.1 虚拟化技术
11.4.2 容器与虚拟机
11.4.3 基于容器的持续部署流程
11.4.4 实战:使用 Docker 来构建、运行和发布微服务
11.5 发布到云
11.5.1 常用云服务
11.5.2 实战:发布应用到云
附录 本书所涉及的技术及相关版本
参考文献
1.1 当今软件发展的现状
1.1.1 软件需求的发展
1.1.2 开发方式的巨变
1.1.3 云是大势所趋
1.2 Cloud Native 的特性
1.2.1 以云为基础架构
1.2.2 云服务
1.2.3 无服务
1.2.4 可扩展
1.2.5 高可用
1.2.6 敏捷
1.2.7 云优先
1.3 12-Factor
1.3.1 基准代码
1.3.2 依赖
1.3.3 配置
1.3.4 后端服务
1.3.5 构建、发布和运行
1.3.6 进程
1.3.7 端口绑定
1.3.8 并发
1.3.9 易处理
1.3.10 开发环境与线上环境等价
1.3.11 日志
1.3.12 管理进程
1.4 成功案例
1.4.1 Amazon
1.4.2 Netflix
1.4.3 淘宝网
1.5 Cloud Native 与微服务
1.5.1 微服务概述
1.5.2 从单块架构向微服务演进
1.5.3 Cloud Native 与微服务部署
1.6 总结
1.6.1 Cloud Native 的优点
1.6.2 Cloud Native 不是“银弹”
1.6.3 面临的挑战
第2章 REST API
2.1 REST 概述
2.1.1 REST 的定义
2.1.2 REST 设计原则
2.2 成熟度模型
2.2.1 第0级:使用 HTTP 作为传输方式
2.2.2 第1级:引入了资源的概念
2.2.3 第2级:根据语义使用 HTTP 动词
2.2.4 第3级:使用 HATEOAS
2.3 Java REST
2.3.1 JAX-RS 规范
2.3.2 Jersey 框架
2.3.3 Apache CXF 框架
2.3.4 Spring Web MVC 框架
2.4 内容协商
2.4.1 二进制数据
2.4.2 Google Protocol Buffers 传输协议
2.5 异常处理
2.5.1 HTTP 状态码
2.5.2 自定义异常信息
2.6 API 管理
2.6.1 版本化
2.6.2 文档化
2.6.3 可视化
2.7 客户端
2.7.1 浏览器插件
2.7.2 JAX-RS 客户端
2.7.3 Spring 客户端
2.8 实战:开启第一个微服务
2.8.1 初始化一个 Spring Boot 原型
2.8.2 用 Gradle 编译项目
2.8.3 探索项目
2.8.4 实现第一个服务
第3章 Cloud Native 测试
3.1 测试概述
3.1.1 传统测试所面临的问题
3.1.2 如何破解测试面临的问题
3.2 测试的类型、范围和比例
3.2.1 测试类型
3.2.2 测试范围
3.2.3 测试比例
3.3 如何进行微服务的测试
3.3.1 微服务的单元测试
3.3.2 Mock 与 Stub 的区别
3.3.3 微服务的集成测试
3.3.4 微服务的系统测试
3.3.5 保障代码覆盖率
3.4 Spring 测试框架
3.4.1 Spring TestContext 框架
3.4.2 Spring MVC Test 框架
3.4.3 Spring Boot Test 框架
第4章 服务路由
4.1 如何找到服务
4.1.1 DNS
4.1.2 服务注册与发现
4.1.3 客户端发现机制
4.1.4 服务端发现机制
4.2 实战:实现服务注册与发现
4.2.1 选择 Eureka的原因
4.2.2 集成 Eureka Server
4.2.3 集成 Eureka Client
4.2.4 服务的注册与发现
第5章 Cloud Native 安全
5.1 认证与授权
5.1.1 基本认证
5.1.2 摘要认证
5.1.3 摘要认证的密码加密
5.1.4 通用密码加密
5.1.5 基于散列的令牌方法
5.1.6 基于持久化的令牌方法
5.2 Java 安全框架
5.2.1 Apache Shiro
5.2.2 Spring Security
5.2.3 Spring Cloud Security
5.3 OAuth 2.0 认证
5.3.1 OAuth 2.0 的认证原理
5.3.2 OAuth 2.0 的核心概念
5.3.3 OAuth 2.0 的认证流程
5.4 实战:实现单点登录
5.4.1 项目依赖
5.4.2 编码实现
5.4.3 应用配置
5.4.4 运行
第6章 Cloud Native 数据管理
6.1 数据的存储方式
6.1.1 关系型数据库
6.1.2 NoSQL
6.2 DDD 与数据建模
6.2.1 DDD 概述
6.2.2 运用 DDD 进行数据建模
6.3 常用数据访问方式
6.3.1 JDBC
6.3.2 Spring JDBC
6.3.3 JPA
6.4 Spring Data
6.4.1 Spring Data 概述
6.4.2 Spring Data JPA
6.4.3 Spring Data Elasticsearch
6.4.4 Spring Data Redis
6.4.5 Spring Data MongoDB
6.4.6 实战:基于 MongoDB 的文件服务器
第7章 Cloud Native 消息通信
7.1 消息通信概述
7.1.1 消息通信的基本概念
7.1.2 JMS
7.1.3 事件驱动的架构
7.2 消息通信常用模式
7.2.1 点对点模式
7.2.2 发布—订阅模式
7.3 CQRS
7.3.1 CQRS 概述
7.3.2 CQRS 的好处
7.3.3 实战:实现 CQRS
7.4 Spring Cloud Stream
7.4.1 Spring Cloud Stream 概述
7.4.2 Spring Cloud Stream 实现发布者
7.4.3 Spring Cloud Stream 实现消费者
7.4.4 实战:基于 Spring Cloud Stream 的消息通信
第8章 Cloud Native 批处理
8.1 批处理概述
8.1.1 需要批处理的原因
8.1.2 常用批处理实现方式
8.2 JDBC Batch
8.2.1 Statement 与 PreparedStatement
8.2.2 实战:使用 JDBC Batch 的例子
8.3 Spring 批处理
8.3.1 使用 JdbcTemplate 实现批处理
8.3.2 批量更新 List
8.3.3 多个批次更新
8.4 Spring Batch
8.4.1 Spring Batch 概述
8.4.2 Job
8.4.3 JobLauncher
8.4.4 JobRepository
8.4.5 Step
8.4.6 ItemReader
8.4.7 ItemWriter
8.4.8 ItemProcessor
8.4.9 实战:使用 Spring Batch 的例子
第9章 Cloud Native 任务调度
9.1 任务执行与调度概述
9.2 Spring TaskExecutor
9.2.1 TaskExecutor 类型
9.2.2 TaskExecutor 应用
9.3 Spring TaskScheduler
9.3.1 Trigger 接口
9.3.2 Trigger 接口的实现
9.4 Spring 任务调度及异步执行
9.4.1 启用调度注解
9.4.2 @Scheduled 注解
9.4.3 @Async 注解
9.4.4 @Async 的异常处理
9.4.5 命名空间
9.5 使用 Quartz Scheduler
9.5.1 使用 JobDetailFactoryBean
9.5.2 使用 MethodInvokingJobDetailFactoryBean
9.6 实战:基于 Quartz Schedule 的天气预报系统
9.6.1 项目概述
9.6.2 后台编码实现
9.6.3 运行
第10章 Cloud Native 运营
10.1 CAP 理论
10.1.1 CAP 理论概述
10.1.2 CAP 只能三选二的原因
10.1.3 CAP 常见模型
10.1.4 CAP 的意义
10.1.5 CAP 的发展
10.2 服务的熔断
10.2.1 熔断的意义
10.2.2 Hystrix 概述
10.2.3 实战:实现微服务的熔断机制
10.3 代码管理
10.3.1 Git 简介
10.3.2 Git 核心概念
10.3.3 Git Flow
10.4 日志管理
10.4.1 日志框架概述
10.4.2 分布式下的日志管理
10.4.3 集中化日志分析
10.4.4 实战:基于 Elastic Stack 的集中化日志管理
10.5 配置管理
10.5.1 分布式下的配置管理的痛点
10.5.2 集中化配置
10.5.3 Spring Cloud Config
10.5.4 实战:基于 Config 实现的配置中心
10.6 应用监控
10.6.1 心跳
10.6.2 Eureka 监测机制
10.6.3 Spring Boot Actuator
10.6.4 实战:基于 Spring Boot Actuator 监测的例子
第11章 Cloud Native 持续发布
11.1 持续集成与持续交付
11.1.1 持续集成概述
11.1.2 持续交付与持续部署
11.1.3 持续交付与持续部署的意义
11.2 持续交付流水线
11.2.1 流水线概述
11.2.2 构建持续交付流水线
11.2.3 构建流水线的工具
11.3 微服务的管理与发布
11.3.1 两个比萨的故事
11.3.2 DevOps 文化
11.3.3 微服务的发布
11.4 容器
11.4.1 虚拟化技术
11.4.2 容器与虚拟机
11.4.3 基于容器的持续部署流程
11.4.4 实战:使用 Docker 来构建、运行和发布微服务
11.5 发布到云
11.5.1 常用云服务
11.5.2 实战:发布应用到云
附录 本书所涉及的技术及相关版本
参考文献