编辑推荐

适读人群:《Spring Cloud与Docker高并发微服务架构设计实施》的读者对象为广大的Java开发者、系统架构师、系统设计人员和运维人员,特别适合使用过Spring框架、SpringBoot框架或具有Spring框架基本知识的读者。

Spring Cloud与Docker高并发微服务架构设计实施》从架构设计出发,结合实际讲解了SpringCloud、Docker和Jenkins等工具的具体使用方法,用一个电商平台案例讲解了如何更好地将微服务架构的设计理念应用于生产实践中。

内容简介

《SpringCloud与Docker高并发微服务架构设计实施》从架构设计、应用开发和运维部署三个方面出发,对微服务架构设计的实施进行了全方位的阐述和深入实践,并结合生产实际讲解了SpringCloud、Docker和Jenkins等工具的具体使用方法。《SpringCloud与Docker高并发微服务架构设计实施》中通过一个互联网电商平台实例实现了高并发的微服务架构设计,并通过详细的开发和实施过程,演示了构建一个安全可靠、稳定高效并可持续扩展的系统平台的方法。

《SpringCloud与Docker高并发微服务架构设计实施》适合互联网应用开发设计人员参考学习。

作者简介

陈韶健,资深IT技术专家,著有《深入实践SpringBoot》(2016年10月机械工业出版社)、《Neo4j全栈开发》(2017年6月电子工业出版社)等书籍,在虚拟化技术领域、数据库使用和大数据分析、分布式架构设计、Spring等开源框架使用、微服务实施和开发等领域都有深入的研究和丰富的实践经验。未来研究方向:物联网、智慧城市、AI人工智能等。

目录

第一部分架构篇

1微服务架构与SpringCloud2

1.1微服务概念的由来2

1.2微服务的定义3

1.3微服务架构与整体式架构的区别5

1.4微服务架构与SOA的比较8

1.5为什么要使用微服务架构9

1.6为实施微服务架构做好准备10

1.6.1思想观念的转变10

1.6.2团队管理方式的改变11

1.6.3自动化基础设施的建设11

1.7为什么要使用SpringCloud12

1.8SpringCloud组件介绍13

1.9SpringCloud的版本说明15

1.10小结17

2微服务架构最佳设计18

2.1合理划分微服务19

2.2微服务治理19?

2.3RestAPI微服务设计21

2.3.1使用数据库集群22

2.3.2读写分离设计22

2.3.3使用缓存22

2.3.4保证RestAPI微服务的独立性23

2.4WebUI微服务设计23

2.4.1使用FeignClient实现负载均衡调用23

2.4.2使用Hystrix实现容错设计23

2.4.3使用非阻塞的异步编程技术实现高并发调用24

2.4.4使用分布式文件系统24

2.5微服务之间调用规则设计24

2.6数据最终一致性设计25

2.7分布式集群架构设计26

2.8微服务运行环境安全设计27

2.9小结27

3电商平台微服务设计实例29

3.1电商平台总体设计29

3.1.1总体业务流程设计29

3.1.2总体业务功能设计31

3.2电商平台业务模型设计32

3.2.1移动商城业务模型32

3.2.2商家管理后台业务模型33

3.2.3平台管理后台业务模型33

3.3创建RestAPI微服务34

3.4创建WebUI微服务36

3.4.1移动商城WebUI微服务36

3.4.2商家管理后台的WebUI微服务37

3.4.3平台管理后台WebUI微服务37

3.5电商平台微服务体系结构38

3.6小结39

第二部分开发篇

4开发工具选用及SpringBoot基础41

4.1开发工具选择42

4.2开发环境配置42

4.3创建SpringBoot工程43

4.4使用JPA47

4.4.1数据源配置48

4.4.2JPA配置48

4.4.3数据实体设计49

4.4.4存储库接口设计49

4.4.5单元测试50

4.5使用Thymeleaf51

4.5.1控制器设计51

4.5.2视图设计52

4.6运行与部署52

4.7小结54

5电商平台微服务工程设计55

5.1微服务工程结构55

5.2电商平台微服务工程组建57

5.3数据库选型57

5.4微服务工程创建步骤58

5.5项目基本配置60

5.6创建模块64

5.7小结66

6微服务治理基础服务开发67

6.1注册管理中心68

6.1.1创建注册管理中心68

6.1.2运行注册管理中心70

6.1.3微服务怎样使用注册管理中心70

6.1.4构建高可用的注册管理中心72

6.2配置管理中心73

6.2.1创建配置管理中心73

6.2.2微服务如何使用配置管理中心76

6.2.3在线更新配置信息77

6.3微服务监控中心78

6.3.1使用断路器仪表盘实现监控79

6.3.2聚合服务监控管理中心81

6.4服务跟踪分析中心86

6.4.1创建服务跟踪分析中心86

6.4.2在微服务中启用服务跟踪功能90

6.5日志分析平台93

6.5.1创建日志分析平台93

6.5.2使用日志分析平台93

6.6小结94

7RestAPI微服务开发96

7.1领域业务开发96

7.1.1使用Druid数据源98

7.1.2JPA及其配置100

7.1.3数据实体建模101

7.1.4查询对象设计104

7.1.5实体持久化设计106

7.1.6持久化测试107

7.1.7领域服务开发109

7.1.8领域服务的单元测试111

7.1.9使用Redis实现缓存设计112

7.2RestAPI应用开发117

7.2.1RestAPI应用配置117

7.2.2启动程序设计119

7.2.3接口开发119

7.3使用消息处理事件123

7.3.1消息生产者设计124

7.3.2消息消费者设计125

7.3.3使用消息测试128

7.4小结129

8WebUI微服务开发131

8.1高并发接口调用分层设计131

8.2通过FeignClient调用RestAPI132

8.3使用Hystrix断路器134

8.4使用非阻塞异步编程方法136

8.4.1CompletableFuture介绍137

8.4.2性能比较测试140

8.5Web应用开发145

8.5.1项目引用配置145

8.5.2应用程序配置146

8.5.3业务功能开发148

8.6开发环境的热部署设置154

8.7使用分布式文件系统157

8.7.1分布式文件系统客户端开发157

8.7.2商品图片上传设计159

8.7.3富文本编辑器上传文件设计160

8.7.4建立本地文件信息库163

8.8小结166

9电商平台移动商城开发167

9.1移动商城首页设计168

9.2使用负载均衡的导航设计174

9.3按分类查询设计176

9.4商品详情页设计179

9.5购买下单实现181

9.6用户登录与账户切换设计184

9.6.1用户登录设计184

9.6.2切换账号设计186

9.7订单查询设计188

9.8集成测试191

9.9小结192

10商家管理后台与SSO设计193

10.1商家权限管理体系设计及开发194

10.1.1商家权限体系建模195

10.1.2商家权限体系的持久化设计199

10.1.3商家权限体系的领域服务开发201

10.2商家管理微服务开发204

10.2.1商家领域服务层单元测试204

10.2.2商家服务的接口开发208

10.3SSO设计213

10.3.1SSO基本配置213

10.3.2在SSO中使用商家的权限体系214

10.3.3用户登录设计216

10.3.4有关验证码的说明218

10.3.5SSO的主页设计220

10.3.6OAuth2服务端设计222

10.4SSO客户端设计224

10.4.1客户端的项目管理配置224

10.4.2客户端的安全管理配置225

10.4.3权限验证实现原理226

10.4.4如何在应用中接入SSO228

10.4.5有关跨站请求伪造防御的相关设置230

10.4.6根据用户权限自动分配菜单230

10.5小结232

11平台管理后台开发233

11.1平台管理后台领域设计233

11.1.1领域实体建模233

11.1.2实体的行为设计236

11.1.3领域服务开发236

11.1.4领域服务单元测试239

11.2平台管理后台访问控制设计240

11.2.1使用平台管理的用户体系240

11.2.2权限管理设计242

11.3商家的注册设计245

11.4商家菜单体系管理开发248

11.4.1分类菜单管理开发248

11.4.2模块菜单管理开发249

11.4.3访问资源管理开发252

11.5商家角色管理开发255

11.6小结257

第三部分运维篇

12服务器架构设计与Docker使用259

12.1服务器组建259

12.2安全的服务器架构设计260

12.2.1防火墙安装及配置260

12.2.2建立安全的局域网环境264

12.3服务器资源分配266

12.4CentOS安装269

12.4.1IP地址设置270

12.4.2安全设置270

12.4.3语言配置270

12.4.4时间同步配置271

12.5Docker和docker-compose安装271

12.5.1Docker安装及使用272

12.5.2docker-compose安装及使用275

12.6使用Docker搭建微服务治理环境279

12.6.1服务器1的部署配置279

12.6.2服务器2的部署配置281

12.7使用Docker部署日志分析平台283

12.8使用Docker部署微服务应用286

12.9小结286

13数据库集群设计与高可用读写分离实施288

13.1MySQL安装289

13.2主从同步设置291

13.3主主同步设置294

13.4数据库代理中间件选择296

13.5使用OneProxy实现读写分离设计297

13.5.1OneProxy安装297

13.5.2高可用读写分离配置298

13.6OneProxy分库分区设计302

13.6.1按范围分库分表303

13.6.2按值分库分表303

13.6.3按哈希算法分库分表304

13.7双机热备设计306

13.8小结307

14分布式文件系统等基础设施安装与配置308

14.1高可用的分布式文件系统构建308

14.1.1FastDFS安装310

14.1.2跟踪服务器配置310

14.1.3存储节点配置311

14.1.4上传文件测试312

14.1.5Nginx安装及负载均衡配置313

14.1.6开机启动设置317

14.2GitLab安装322

14.3Redis安装324

14.4RabbitMQ安装326

14.5小结327

15使用自动化构建工具Jenkins实现CI/CD328

15.1持续交付工作流程330

15.2Jenkins安装331

15.3Jenkins基本配置333

15.4Jenkins自动部署实例335

15.4.1创建任务336

15.4.2任务配置337

15.4.3执行任务340

15.5小结343

后记345

参考文献346

前言/序言

简单地说,微服务就是一种使用轻量级架构设计的组件化的小应用,这种小应用只关注一定范围的业务功能,往往只负责做好一件事情。通过很多这样的小应用,利用一种高效而灵活的管理机制,可以组成一个功能全面且业务丰富的大型平台。这种管理机制包括服务的注册与发现、服务的路由与负载均衡管理、服务之间简单而快捷的通信等功能。

轻量级的微服务架构设计方法,是在竞争激烈的互联网环境中诞生并且发展起来的,非常适合互联网应用快速迭代和规模化扩张的特点。当风靡一时的SOA架构因为其重量级的设计方法,并不能适应业务快速变更和高速发展的要求时,微服务架构轻量级的设计风格的出现无疑是软件工程设计的救星,它给软件工程设计重新注入了一股新鲜活跃的血液。

互联网经济激烈竞争的特性,致使业务需求经常发生变化,这就要求技术开发必须具有非常快速的响应能力,以快速抢占市场先机,体现一种“高手过招、唯快不破”的风格。而且,产品一经推出,必须经常进行调整和迭代,以使其始终都能处于“出类拔萃、鹤立鸡群”的地位。更为重要的一面是互联网经济巨大的市场潜力,必然会触发应用产品走上规模化扩张的道路,这种扩张有时甚至是爆炸性的,这对产品的性能和稳定性都提出了前所未有的高要求。

对于软件设计和开发,唯有轻装上阵才能时刻充满活力,始终具有冲锋陷阵的干劲和强壮的生命力。微服务架构轻量级的设计观念及其渐进式的开发特点,正是体现了这种与时俱进的先进设计思想。

在微服务架构设计实施的实践中,NetflixOSS是大家所公认的最早使用微服务架构设计的典范,Spring团队在其开源组件的基础上,组建了一个基于SpringBoot开发框架的SpringCloud工具套件。SpringCloud工具套件为开发者提供了一个完整而配套的工具组件,使微服务架构的实施和开发变得更加普通和容易。SpringCloud工具套件提供了包括但不限于服务注册管理、智能路由、负载均衡服务、熔断容错和服务降级机制、集中配置管理、服务监控与跟踪等功能组件和服务。

Spring Cloud与Docker高并发微服务架构设计实施》将详细介绍如何使用SpringCloud工具套件来设计和开发微服务,并且不只是停留在表面上对SpringCloud各个工具组件本身的使用说明和介绍,而是从架构设计出发,说明了如何更好地将微服务架构的设计理念应用于生产实践中,并在实际应用中加深对SpringCloud工具套件的理解和掌握的程度。同时还将介绍怎么使用Docker和Jenkins等工具来进行微服务的部署和发布,并通过构建一系列高可用性的服务器架构设计,阐述了构建一个稳定、可靠并且能够适应规模化发展的应用平台的方法。

Spring Cloud与Docker高并发微服务架构设计实施》将从架构设计、应用开发和运维部署三个方面出发,对微服务架构设计的实施进行全方位的介绍和详细说明,在这一过程中将使用一个互联网平台的实例展开分析和深入实践。

通过对《Spring Cloud与Docker高并发微服务架构设计实施》的系统学习,可以让读者将微服务架构的设计方法快速应用于生产实践中,为开发团队和企业提供坚不可摧的竞争力。

让我们一起努力,共同探索吧!让先进的技术率先成为我们先进的生产力。

Spring Cloud与Docker高并发微服务架构设计实施》的读者对象

Spring Cloud与Docker高并发微服务架构设计实施》的读者对象为广大的Java开发者、系统架构师和系统运维人员。《Spring Cloud与Docker高并发微服务架构设计实施》特别适合使用过Spring开源框架或具有Spring框架基础知识的广大用户群体。

Spring Cloud与Docker高并发微服务架构设计实施》章节组成

Spring Cloud与Docker高并发微服务架构设计实施》由三部分组成,各部分及其章节的结构如下所示。

第一部分架构篇

第1章微服务架构与SpringCloud

第2章微服务架构最佳设计

第3章电商平台微服务设计实例

第二部分开发篇

第4章开发工具选用及SpringBoot基础

第5章电商平台微服务工程设计

第6章微服务治理基础服务开发

第7章RestAPI微服务开发

第8章WebUI微服务开发

第9章电商平台移动商城开发

第10章商家管理后台与SSO设计

第11章平台管理后台开发

第三部分运维篇

第12章服务器架构设计与Docker使用

第13章数据库集群设计与高可用读写分离实施

第14章分布式文件系统等基础设施安装与配置

第15章使用自动化构建工具Jenkins实现CI/CD

实例代码

Spring Cloud与Docker高并发微服务架构设计实施》的实例代码存放在开源中国的码云代码仓库之中,可以通过下列链接打开各个项目工程下载或使用Git检出:

https://gitee.com/chenshaojian/projects

勘误与反馈

读者如有任何问题,可以通过如下链接发起话题与作者交流。《Spring Cloud与Docker高并发微服务架构设计实施》在出版印刷之后,有需要勘误的地方也会首先在这里发布:

https://gitee.com/chenshaojian/SpringCloud/issues

致谢

非常感谢长期给予我支持和鼓励的朋友们,因为有了你们的支持和鼓励,才让我感到无比的幸福和惬意。还要感谢曾经与我一起进行过微服务开发的小伙伴们,令人欣慰的是,我已经兑现了之前的承诺,将微服务架构设计的经验汇编成书。最后要感谢家人对我的支持,在《Spring Cloud与Docker高并发微服务架构设计实施》写作的过程中,我几乎将所有的空闲时间都花费在写作之中,而忽略了对你们的陪伴,对此我深感歉意。

如果书中有不对的地方或者任何纰漏,还敬请大家不吝赐教,我将感激不尽。


其他推荐