编辑推荐

  (1)新。符合当今云架构发展现状的开发技术,无论是大型企业还是个人开发者,都或多或少地采用了云的方式来开发和部署应用。
  (2)全。涵盖REST设计、测试、服务注册、服务发现、安全、数据管理、消息通信、批处理、任务调度、运营、容器部署、持续发布等方面的知识。
  (3)细。实战案例辅以大量理论知识,让读者透彻理解每一个知识点!

内容简介

  CloudNative(云原生)是以云架构为优先的应用开发模式。目前,越来越多的企业已经开始大规模地“拥抱云”——在云环境下开发应用、部署应用及发布应用等。未来,越来越多的开发者也将采用CloudNative来开发应用。《Cloud Native分布式架构原理与实践》是国内Java领域关于CloudNative的著作。
  《CloudNative分布式架构原理与实践》全面讲解了基于CloudNative来构建应用需要考虑的设计原则和实现方式,涵盖REST设计、测试、服务注册、服务发现、安全、数据管理、消息通信、批处理、任务调度、运营、容器部署、持续发布等方面的CloudNative知识。同时,书中所讲解的技术方案皆为业界主流的技术,极具前瞻性。最后,《Cloud Native分布式架构原理与实践》除了讲解CloudNative的理论知识,还会在每个知识点上辅以大量的代码案例,使理论可以联系实践,具备更强的可操作性。
  《Cloud Native分布式架构原理与实践》主要面向对分布式系统、微服务、CloudNative开发感兴趣的计算机专业的学生、软件开发人员和系统架构师。

作者简介

  柳伟卫(waylau),在IT公司担任项目经理、架构师、高级开发顾问等职位,具有多年软件开发管理及系统架构经验。负责过多个省、国家大型分布式系统的设计与研发,参与了多个大型项目的微服务架构的技术改造,在实际工作中,积累了大量的微服务架构经验。是CSDN、开源中国、云栖社区等技术社区专家。

目录

第1章CloudNative概述
1.1当今软件发展的现状
1.1.1软件需求的发展
1.1.2开发方式的巨变
1.1.3云是大势所趋
1.2CloudNative的特性
1.2.1以云为基础架构
1.2.2云服务
1.2.3无服务
1.2.4可扩展
1.2.5高可用
1.2.6敏捷
1.2.7云优先
1.312-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.1Amazon
1.4.2Netflix
1.4.3淘宝网
1.5CloudNative与微服务
1.5.1微服务概述
1.5.2从单块架构向微服务演进
1.5.3CloudNative与微服务部署
1.6总结
1.6.1CloudNative的优点
1.6.2CloudNative不是“银弹”
1.6.3面临的挑战
第2章RESTAPI
2.1REST概述
2.1.1REST的定义
2.1.2REST设计原则
2.2成熟度模型
2.2.1第0级:使用HTTP作为传输方式
2.2.2第1级:引入了资源的概念
2.2.3第2级:根据语义使用HTTP动词
2.2.4第3级:使用HATEOAS
2.3JavaREST
2.3.1JAX-RS规范
2.3.2Jersey框架
2.3.3ApacheCXF框架
2.3.4SpringWebMVC框架
2.4内容协商
2.4.1二进制数据
2.4.2GoogleProtocolBuffers传输协议
2.5异常处理
2.5.1HTTP状态码
2.5.2自定义异常信息
2.6API管理
2.6.1版本化
2.6.2文档化
2.6.3可视化
2.7客户端
2.7.1浏览器插件
2.7.2JAX-RS客户端
2.7.3Spring客户端
2.8实战:开启第一个微服务
2.8.1初始化一个SpringBoot原型
2.8.2用Gradle编译项目
2.8.3探索项目
2.8.4实现第一个服务
第3章CloudNative测试
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.2Mock与Stub的区别
3.3.3微服务的集成测试
3.3.4微服务的系统测试
3.3.5保障代码覆盖率
3.4Spring测试框架
3.4.1SpringTestContext框架
3.4.2SpringMVCTest框架
3.4.3SpringBootTest框架
第4章服务路由
4.1如何找到服务
4.1.1DNS
4.1.2服务注册与发现
4.1.3客户端发现机制
4.1.4服务端发现机制
4.2实战:实现服务注册与发现
4.2.1选择Eureka的原因
4.2.2集成EurekaServer
4.2.3集成EurekaClient
4.2.4服务的注册与发现
第5章CloudNative安全
5.1认证与授权
5.1.1基本认证
5.1.2摘要认证
5.1.3摘要认证的密码加密
5.1.4通用密码加密
5.1.5基于散列的令牌方法
5.1.6基于持久化的令牌方法
5.2Java安全框架
5.2.1ApacheShiro
5.2.2SpringSecurity
5.2.3SpringCloudSecurity
5.3OAuth2.0认证
5.3.1OAuth2.0的认证原理
5.3.2OAuth2.0的核心概念
5.3.3OAuth2.0的认证流程
5.4实战:实现单点登录
5.4.1项目依赖
5.4.2编码实现
5.4.3应用配置
5.4.4运行
第6章CloudNative数据管理
6.1数据的存储方式
6.1.1关系型数据库
6.1.2NoSQL
6.2DDD与数据建模
6.2.1DDD概述
6.2.2运用DDD进行数据建模
6.3常用数据访问方式
6.3.1JDBC
6.3.2SpringJDBC
6.3.3JPA
6.4SpringData
6.4.1SpringData概述
6.4.2SpringDataJPA
6.4.3SpringDataElasticsearch
6.4.4SpringDataRedis
6.4.5SpringDataMongoDB
6.4.6实战:基于MongoDB的文件服务器
第7章CloudNative消息通信
7.1消息通信概述
7.1.1消息通信的基本概念
7.1.2JMS
7.1.3事件驱动的架构
7.2消息通信常用模式
7.2.1点对点模式
7.2.2发布—订阅模式
7.3CQRS
7.3.1CQRS概述
7.3.2CQRS的好处
7.3.3实战:实现CQRS
7.4SpringCloudStream
7.4.1SpringCloudStream概述
7.4.2SpringCloudStream实现发布者
7.4.3SpringCloudStream实现消费者
7.4.4实战:基于SpringCloudStream的消息通信
第8章CloudNative批处理
8.1批处理概述
8.1.1需要批处理的原因
8.1.2常用批处理实现方式
8.2JDBCBatch
8.2.1Statement与PreparedStatement
8.2.2实战:使用JDBCBatch的例子
8.3Spring批处理
8.3.1使用JdbcTemplate实现批处理
8.3.2批量更新List
8.3.3多个批次更新
8.4SpringBatch
8.4.1SpringBatch概述
8.4.2Job
8.4.3JobLauncher
8.4.4JobRepository
8.4.5Step
8.4.6ItemReader
8.4.7ItemWriter
8.4.8ItemProcessor
8.4.9实战:使用SpringBatch的例子
第9章CloudNative任务调度
9.1任务执行与调度概述
9.2SpringTaskExecutor
9.2.1TaskExecutor类型
9.2.2TaskExecutor应用
9.3SpringTaskScheduler
9.3.1Trigger接口
9.3.2Trigger接口的实现
9.4Spring任务调度及异步执行
9.4.1启用调度注解
9.4.2@Scheduled注解
9.4.3@Async注解
9.4.4@Async的异常处理
9.4.5命名空间
9.5使用QuartzScheduler
9.5.1使用JobDetailFactoryBean
9.5.2使用MethodInvokingJobDetailFactoryBean
9.6实战:基于QuartzSchedule的天气预报系统
9.6.1项目概述
9.6.2后台编码实现
9.6.3运行
第10章CloudNative运营
10.1CAP理论
10.1.1CAP理论概述
10.1.2CAP只能三选二的原因
10.1.3CAP常见模型
10.1.4CAP的意义
10.1.5CAP的发展
10.2服务的熔断
10.2.1熔断的意义
10.2.2Hystrix概述
10.2.3实战:实现微服务的熔断机制
10.3代码管理
10.3.1Git简介
10.3.2Git核心概念
10.3.3GitFlow
10.4日志管理
10.4.1日志框架概述
10.4.2分布式下的日志管理
10.4.3集中化日志分析
10.4.4实战:基于ElasticStack的集中化日志管理
10.5配置管理
10.5.1分布式下的配置管理的痛点
10.5.2集中化配置
10.5.3SpringCloudConfig
10.5.4实战:基于Config实现的配置中心
10.6应用监控
10.6.1心跳
10.6.2Eureka监测机制
10.6.3SpringBootActuator
10.6.4实战:基于SpringBootActuator监测的例子
第11章CloudNative持续发布
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.2DevOps文化
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实战:发布应用到云
附录《Cloud Native分布式架构原理与实践》所涉及的技术及相关版本
参考文献

前言/序言

  前言
  写作背景
  未来越来越多的企业将会“拥抱云”。特别是对于中小企业及个人开发者而言,以云架构为优先的CloudNative应用开发模式将会深入人心。CloudNative能帮助企业快速推出产品,同时节省成本。
  笔者结合自身的云计算工作经验,以及对于CloudNative的思考,将这方面的知识整理成册,内容涵盖REST设计、测试、服务注册、服务发现、安全、数据管理、消息通信、批处理、任务调度、运营、容器部署、持续发布等方面的知识,希望帮助读者从理论和实践两方面来深刻理解CloudNative。
  源代码
  《Cloud Native分布式架构原理与实践》提供源代码下载,下载地址为https://github.com/waylau/cloud-native-book-demos。
  《Cloud Native分布式架构原理与实践》所涉及的技术和相关版本
  技术的版本是非常重要的,因为不同版本之间存在兼容性问题,而且不同版本的软件所对应的功能也是不同的。《Cloud Native分布式架构原理与实践》所列出的技术在版本上相对较新,都是经过笔者大量测试的。这样读者在自行编写代码时,可以参考《Cloud Native分布式架构原理与实践》所列出的版本,从而避免版本兼容性所产生的问题。建议读者将相关开发环境设置得跟《Cloud Native分布式架构原理与实践》一致,或者不低于《Cloud Native分布式架构原理与实践》所列的配置。详细的版本配置,可以参阅《Cloud Native分布式架构原理与实践》“附录”中的内容。
  《Cloud Native分布式架构原理与实践》示例采用Eclipse编写,但示例源码与具体的IDE无关,读者可以选择适合自己的IDE,如IntelliJIDEA、NetBeans等。运行《Cloud Native分布式架构原理与实践》示例,请确保JDK版本不低于JDK8。
  勘误和交流
  《Cloud Native分布式架构原理与实践》如有勘误,会在https://github.com/waylau/cloud-native-book-demos上进行发布。笔者在编写《Cloud Native分布式架构原理与实践》的过程中,已竭尽所能地为读者呈现最好、最全的实用功能,但错漏之处在所难免,欢迎读者批评指正,也可以通过以下方式直接联系我们。
  致谢
  感谢北京大学出版社的各位工作人员为《Cloud Native分布式架构原理与实践》的出版所做的努力。
  感谢我的父母、妻子和两个女儿。由于撰写《Cloud Native分布式架构原理与实践》,牺牲了很多陪伴家人的时间,在此感谢家人对我工作的理解和支持。
  柳伟卫

其他推荐