极客云图(www.jkyuntu.com)
极客云图
首页
云图精品
云图文章
云图问答
云图文档
云图书籍
云图源码
登录
首页
当前状态:
当前:
云图书籍
编程语言
Spring Cloud与Docker微服务架构实战
7.1.2
如何容错86
目录
15
1 微服务架构概述
1.1 单体应用架构存在的问题
1.2 如何解决单体应用架构存在的问题
1.3 什么是微服务
1.4 微服务架构的优点与挑战
1.4.1 微服务架构的优点
1.4.2 微服务架构面临的挑战
1.5 微服务设计原则
1.6 如何实现微服务架构
1.6.1 技术选型
1.6.2 架构图及常用组件
2 微服务开发框架——SpringCloud 10
2.1 SpringCloud简介10
2.2 SpringCloud特点10
2.3 SpringCloud版本11
2.3.1 版本简介11
2.3.2 子项目一览12
2.3.3 SpringCloud/SpringBoot版本兼容性13
3 开始使用SpringCloud实战微服务 14
3.1 SpringCloud实战前提14
3.1.1 技术储备14
3.1.2 工具及软件版本15
3.2 服务提供者与服务消费者16
3.3 编写服务提供者16
3.3.1 手动编写项目17
3.3.2 使用SpringInitializr快速创建SpringBoot项目21
3.4 编写服务消费者23
3.5 为项目整合SpringBootActuator25
3.6 硬编码有哪些问题27
4 微服务注册与发现 29
4.1 服务发现简介29
4.2 Eureka简介31
4.3 Eureka原理31
4.4 编写EurekaServer33
4.5 将微服务注册到EurekaServer上35
4.6 EurekaServer的高可用36
4.6.1 将应用注册到EurekaServer集群上38
4.7 为EurekaServer添加用户认证39
4.7.1 将微服务注册到需认证的EurekaServer40
4.8 理解Eureka的元数据41
4.8.1 改造用户微服务41
4.8.2 改造电影微服务41
4.9 EurekaServer的REST端点43
4.9.1 示例45
4.9.2 注销微服务实例49
4.10 Eureka的自我保护模式51
4.11 多网卡环境下的IP选择52
4.11.1 忽略指定名称的网卡52
4.11.2 使用正则表达式,指定使用的网络地址52
4.11.3 只使用站点本地地址53
4.11.4 手动指定IP地址53
4.12 Eureka的健康检查53
5 使用Ribbon实现客户端侧负载均衡 56
5.1 Ribbon简介56
5.2 为服务消费者整合Ribbon57
5.3 使用Java代码自定义Ribbon配置60
5.4 使用属性自定义Ribbon配置63
5.5 脱离Eureka使用Ribbon64
6 使用Feign实现声明式REST调用 66
6.1 Feign简介67
6.2 为服务消费者整合Feign67
6.3 自定义Feign配置69
6.4 手动创建Feign72
6.4.1 修改用户微服务72
6.4.2 修改电影微服务76
6.5 Feign对继承的支持78
6.6 Feign对压缩的支持79
6.7 Feign的日志80
6.8 使用Feign构造多参数请求82
6.8.1 GET请求多参数的URL82
6.8.2 POST请求包含多个参数83
7 使用Hystrix实现微服务的容错处理 85
7.1 实现容错的手段85
7.1.1 雪崩效应85
7.1.2 如何容错86
7.2 使用Hystrix实现容错88
7.2.1 Hystrix简介88
7.2.2 通用方式整合Hystrix89
7.2.3 Hystrix断路器的状态监控与深入理解91
7.2.4 Hystrix线程隔离策略与传播上下文93
7.2.5 Feign使用Hystrix96
7.3 Hystrix的监控101
7.3.1 Feign项目的Hystrix监控102
7.4 使用HystrixDashboard可视化监控数据103
7.5 使用Turbine聚合监控数据105
7.5.1 Turbine简介105
7.5.2 使用Turbine监控多个微服务105
7.5.3 使用消息中间件收集数据108
8 使用Zuul构建微服务网关 113
8.1 为什么要使用微服务网关113
8.2 Zuul简介115
8.3 编写Zuul微服务网关115
8.4 Zuul的路由端点118
8.5 Zuul的路由配置详解119
8.6 Zuul的安全与Header122
8.6.1 敏感Header的设置122
8.6.2 忽略Header123
8.7 使用Zuul上传文件124
8.7.1 编写文件上传微服务124
8.8 Zuul的过滤器127
8.8.1 过滤器类型与请求生命周期127
8.8.2 编写Zuul过滤器128
8.8.3 禁用Zuul过滤器130
8.9 Zuul的容错与回退130
8.9.1 为Zuul添加回退131
8.10 Zuul的高可用133
8.10.1 Zuul客户端也注册到了EurekaServer上133
8.10.2 Zuul客户端未注册到EurekaServer上133
8.11 使用Sidecar整合非JVM微服务134
8.11.1 编写Node.js微服务135
8.11.2 编写Sidecar136
8.11.3 Sidecar的端点138
8.11.4 Sidecar与Node.js微服务分离部署139
8.11.5 Sidecar原理分析139
9 使用SpringCloudConfig统一管理微服务配置142
9.1 为什么要统一管理微服务配置142
9.2 SpringCloudConfig简介143
9.3 编写ConfigServer144
9.3.1 ConfigServer的端点145
9.4 编写ConfigClient147
9.5 ConfigServer的Git仓库配置详解149
9.6 ConfigServer的健康状况指示器152
9.7 配置内容的加解密153
9.7.1 安装JCE153
9.7.2 ConfigServer的加解密端点153
9.7.3 对称加密153
9.7.4 存储加密的内容154
9.7.5 非对称加密155
9.8 使用/refresh端点手动刷新配置155
9.9 使用SpringCloudBus自动刷新配置157
9.9.1 SpringCloudBus简介157
9.9.2 实现自动刷新158
9.9.3 局部刷新159
9.9.4 架构改进159
9.9.5 跟踪总线事件160
9.10 SpringCloudConfig与Eureka配合使用161
9.11 SpringCloudConfig的用户认证162
9.11.1 ConfigClient连接需用户认证的ConfigServer163
9.12 ConfigServer的高可用164
9.12.1 Git仓库的高可用164
9.12.2 RabbitMQ的高可用164
9.12.3 ConfigServer自身的高可用165
10 使用SpringCloudSleuth实现微服务跟踪167
10.1 为什么要实现微服务跟踪167
10.2 SpringCloudSleuth简介168
10.3 整合SpringCloudSleuth170
10.4 SpringCloudSleuth与ELK配合使用172
10.5 SpringCloudSleuth与Zipkin配合使用176
10.5.1 Zipkin简介176
10.5.2 编写ZipkinServer176
10.5.3 微服务整合Zipkin178
10.5.4 使用消息中间件收集数据181
10.5.5 存储跟踪数据183
11 SpringCloud常见问题与总结186
11.1 Eureka常见问题186
11.1.1 Eureka注册服务慢186
11.1.2 已停止的微服务节点注销慢或不注销187
11.1.3 如何自定义微服务的InstanceID188
11.1.4 Eureka的UNKNOWN问题总结与解决189
11.2 Hystrix/Feign整合Hystrix后首次请求失败190
11.2.1 原因分析191
11.2.2 解决方案191
11.3 Turbine聚合的数据不完整191
11.3.1 解决方案192
11.4 SpringCloud各组件配置属性193
11.4.1 SpringCloud的配置193
11.4.2 原生配置193
11.5 SpringCloud定位问题思路总结194
12 Docker入门197
12.1 Docker简介197
12.2 Docker的架构197
12.3 安装Docker199
12.3.1 系统要求199
12.3.2 移除非官方软件包199
12.3.3 设置Yum源199
12.3.4 安装Dokcer200
12.3.5 卸载Docker201
12.4 配置镜像加速器201
12.5 Docker常用命令202
12.5.1 Docker镜像常用命令202
12.5.2 Docker容器常用命令204
13 将微服务运行在Docker上209
13.1 使用Dockerfile构建Docker镜像209
13.1.1 Dockerfile常用指令210
13.1.2 使用Dockerfile构建镜像215
13.2 使用DockerRegistry管理Docker镜像217
13.2.1 使用DockerHub管理镜像217
13.2.2 使用私有仓库管理镜像219
13.3 使用Maven插件构建Docker镜像220
13.3.1 快速入门221
13.3.2 插件读取Dockerfile进行构建222
13.3.3 将插件绑定在某个phase执行223
13.3.4 推送镜像224
13.4 常见问题与总结226
14 使用DockerCompose编排微服务227
14.1 DockerCompose简介227
14.2 安装DockerCompose227
14.2.1 安装Compose228
14.2.2 安装Compose命令补全工具228
14.3 DockerCompose快速入门229
14.3.1 基本步骤229
14.3.2 入门示例229
14.3.3 工程、服务、容器230
14.4 docker-compose.yml常用命令230
14.4.1 build230
14.4.2 command231
14.4.3 dns231
14.4.4 dns_search231
14.4.5 environment231
14.4.6 env_file232
14.4.7 expose232
14.4.8 external_links232
14.4.9 image232
14.4.10 links232
14.4.11 networks233
14.4.12 network_mode233
14.4.13 ports233
14.4.14 volumes233
14.4.15 volumes_from234
14.5 docker-compose常用命令234
14.5.1 build234
14.5.2 help235
14.5.3 kill235
14.5.4 logs235
14.5.5 port235
14.5.6 ps235
14.5.7 pull235
14.5.8 rm236
14.5.9 run236
14.5.10 scale236
14.5.11 start236
14.5.12 stop236
14.5.13 up236
14.6 DockerCompose网络设置237
14.6.1 基本概念237
14.6.2 更新容器237
14.6.3 links238
14.6.4 指定自定义网络238
14.6.5 配置默认网络239
14.6.6 使用已存在的网络239
14.7 综合实战:使用DockerComose编排SpringCloud微服务240
14.7.1 编排SpringCloud微服务240
14.7.2 编排高可用的EurekaServer243
14.7.3 编排高可用SpringCloud微服务集群及动态伸缩245
14.8 常见问题与总结247
后记
7.1.2
如何容错86
疑问?答疑?
关注极客云图了解更多内容