第一部分 微服务 3
第1章 微服务概览 3
1.1什么是微服务 3
1.2模块化架构 7
1.3微服务的其他优点 8
1.4微服务的缺点 9
第2章 转换到微服务 11
2.1疲劳与属性 11
2.2组织的学习曲线 12
2.3微服务的商业案例 14
2.4成本构成 15
第3章 进程间通信 19
3.1交互的类型 19
3.2准备编写Web服务 20
3.3微服务的维护 21
3.4发现服务 21
3.4.1 API网关 22
3.4.2服务注册中心 23
3.5融会贯通 23
第4章 微服务的迁移与实现 27
4.1转换的必要性 27
4.2使用微服务创建新应用 29
4.2.1组织的准备情况 29
4.2.2基于服务的方式 30
4.2.3进程间(服务与服务)通信 30
4.2.4技术选型 31
4.2.5实现 31
4.2.6部署 32
4.2.7运维 32
4.3将单体应用迁移到微服务 33
4.3.1微服务准则 34
4.3.2重新架构服务 36
4.4混合方式 37
第二部分 容器 41
第5章Docker容器 41
5.1虚拟机 41
5.2容器 44
5.3 Docker架构和组件 45
5.4 Docker的力量:一个简单示例 48
第6章Docker安装 51
6.1在Mac OS X上安装Docker 51
6.2在Windows上安装Docker 56
6.3在Ubuntu Linux上安装Docker 57
第7章Docker接口 61
7.1关键Docker命令 61
7.1.1 docker search 61
7.1.2 docker pull 63
7.1.3 docker images 64
7.1.4 docker rmi 65
7.1.5 docker run 65
7.1.6 docker ps 67
7.1.7 docker logs 68
7.1.8 docker restart 72
7.1.9 docker attach 73
7.1.10 docker rm 73
7.1.11 docker inspect 75
7.1.12 docker exec 76
7.1.13 docker rename 77
7.1.14 docker cp 78
7.1.15 docker pause/unpause 79
7.1.16 docker create 80
7.1.17 docker commit 81
7.1.18 docker diff 81
7.2 Dockerfile 82
7.3 Docker Compose 86
第8章 容器连网 89
8.1关键Linux概念 89
8.2互联 90
8.3默认选项 93
8.3.1 none 94
8.3.2 host 94
8.3.3 bridge 96
8.4自定义网络 99
8.4.1自定义网桥网络驱动 100
8.4.2重叠网络驱动 102
8.4.3非重叠网络驱动和Macvlan 103
第9章 容器编排 105
9.1 Kubernetes 105
9.1.1 kubectl 106
9.1.2主节点 106
9.1.3工作节点 108
9.1.4示例:Kubemetes集群 109
9.2 Apache Mesos和Marathon 110
9.2.1 Mesos主节点 111
9.2.2代理 111
9.2.3框架 112
9.2.4示例:Marathon框架 112
9.3 Docker Swarm 113
9.3.1节点 113
9.3.2服务 113
9.3.3任务 114
9.3.4示例:Swarm集群 114
9.4服务发现 116
9.5服务注册中心 119
第10章 容器管理 121
10.1监控 121
10.2日志记录 122
10.3指标收集 125
10.3.1 docker stats 125
10.3.2 API 126
10.3.3 cAdvisor 126
10.4集群范围的监控工具 127
10.4.1 Heapster 127
10.4.2 Prometheus 127
第三部分 项目实战——学以致用 145
第11章 案例研究:单体Helpdesk应用 145
11.1 Helpdesk应用概览 145
11.2应用架构 146
11.2.1身份验证、拦截器和授权 147
11.2.2账户管理 148
11.2.3工单 151
11.2.4产品目录 153
11.2.5预约 156
11.2.6留言板 158
11.2.7搜索 160
11.3构建应用程序 161
11.3.1搭建Eclipse 161
11.3.2构建应用 162
11.3.3部署与配置 166
11.4新需求和bug修复 168
第12章 案例研究:迁移到微服务 171
12.1准备迁移 171
12.1.1采用微服务准则 172
12.1.2转换小结 173
12.1.3对架构的影响 174
12.2转换到微服务 174
12.2.1产品目录 175
12.2.2工单 177
12.2.3搜索 178
12.3应用构建和部署 179
12.3.1代码设置 179
12.3.2构建微服务 179
12.3.3部署与配置 180
12.4新需求与bug修复 183
第13章 案例研究:容器化Helpdesk应用 185
13.1容器化微服务 185
13.1.1列出依赖项 185
13.1.2构建二进制文件和WAR文件 186
13.1.3创建Docker镜像 186
13.1.4构建Docker镜像 189
13.1.5在AWS上搭建DC/OS集群 190
13.2部署产品目录微服务 195
13.2.1向Marathon提交一个任务 195
13.2.2检查与扩展服务 198
13.2.3访问微服务 200
13.3更新单体应用 201
结语 203
附录A Helpdesk应用流 207
附录B安装Solr搜索引擎 217