第1篇 微服务开发基础——Spring Boot框架及使用
第1章 微服务架构开发 2
1.1 单体架构应用的困境 2
1.2 微服务架构 3
1.2.1 如何定义微服务架构 4
1.2.2 微服务架构的优点 5
1.2.3 微服务架构的缺点 6
1.3 微服务架构设计 7
1.3.1 微服务粒度 7
1.3.2 微服务拆分原则 8
1.3.3 微服务自治原则 9
1.3.4 微服务交互原则 10
1.3.5 微服务架构迁移 10
1.4 不应使用微服务架构的情形 11
第2章 微服务基础——Spring Boot 12
2.1 Spring与Spring Boot 12
2.2 快速启动Spring Boot 13
2.2.1 编写pom.xml文件 14
2.2.2 编写应用引导类 16
2.2.3 编写配置文件 17
2.2.4 运行项目 17
2.3 使用Spring Boot构建示例项目 19
2.3.1 经典三层应用架构 19
2.3.2 设计领域对象 20
2.3.3 实现数据管理 23
2.3.4 编写业务逻辑层 29
2.3.5 编写RESTful API 31
2.3.6 数据库初始化 35
2.3.7 启动测试 36
2.4 Spring Boot特性 37
2.4.1 Spring Boot自动配置机制 37
2.4.2 Spring Boot扩展属性配置 38
2.4.3 Spring Boot日志配置 39
2.5 关于敏捷开发 40
2.6 关于RESTful API设计 41
2.6.1 以资源为中心进行URL设计 42
2.6.2 正确使用HTTP方法及状态码 42
2.6.3 查询及分页处理原则 43
2.6.4 其他指导原则 43
第2篇 Spring Cloud组件实战
第3章 Spring Cloud简介 46
3.1 微服务架构的核心关键点 46
3.2 Spring Cloud技术概览 49
3.2.1 Spring Cloud子项目 50
3.2.2 为何选择Spring Cloud 53
3.3 Spring Cloud版Hello World示例 54
第4章 服务治理与负载均衡 58
4.1 什么是服务治理 58
4.2 构建服务治理——Eureka 59
4.2.1 搭建微服务Parent工程 60
4.2.2 搭建服务治理服务器——Eureka服务器 62
4.2.3 搭建服务提供者——注册服务 64
4.2.4 搭建服务消费者——获取服务 68
4.3 使用客户端负载均衡——Ribbon 72
4.3.1 什么是客户端负载均衡 72
4.3.2 启用Ribbon 74
4.3.3 负载均衡测试 75
4.4 使用Feign简化微服务调用 77
4.5 深入Eureka 80
4.5.1 服务注册及相关原理 80
4.5.2 Eureka自我保护模式 82
4.5.3 注册一个服务实例需要的时间 84
4.5.4 Eureka高可用集群及示例 84
4.5.5 多网卡及IP指定 88
4.5.6 Eureka服务访问安全 89
4.6 深入Ribbon 90
4.6.1 Ribbon客户端负载均衡原理 90
4.6.2 Ribbon负载均衡策略及配置 92
4.6.3 直接使用Ribbon API 94
4.7 深入Feign 96
4.7.1 Feign的参数绑定 96
4.7.2 Feign中的继承 97
4.7.3 Feign与Swagger的冲突 98
4.8 微服务健康监控 99
4.9 异构服务解决方案——Sidecar 101
第5章 微服务容错保护——Hystrix 102
5.1 什么是微服务容错保护 102
5.2 快速启动Hystrix 103
5.2.1 引入Hystrix依赖 104
5.2.2 开启Hystrix支持 104
5.2.3 修改UserService实现 104
5.2.4 容错测试 105
5.2.5 服务降级的两种实现方式 107
5.2.6 在Feign中使用Hystrix回退 109
5.3 Hystrix容错机制分析 110
5.3.1 Hystrix整体处理流程 111
5.3.2 HystrixCommand与HystrixObservableCommand 113
5.3.3 断路器原理分析 115
5.3.4 Hystrix异常——HystrixBadRequestException 117
5.4 服务隔离 117
5.4.1 线程池隔离与信号量隔离 118
5.4.2 服务隔离的颗粒度 119
5.4.3 服务隔离配置 119
5.4.4 小结 120
5.5 服务降级模式 121
5.5.1 快速失败 121
5.5.2 静默失败 121
5.5.3 返回默认值 122
5.5.4 返回组装的值 122
5.5.5 返回远程缓存 123
5.5.6 主/从降级模式 124
5.6 请求缓存 127
5.7 请求合并 128
5.8 Hystrix监控 130
5.8.1 Hystrix仪表盘 131
5.8.2 Turbine仪表盘集群监控 133
5.8.3 Turbine与消息服务器集成 136
……
第6章 API服务网关——Zuul 137
第7章 统一配置中心——Config 166
第8章 分布式服务跟踪——Sleuth 192
第9章 消息驱动——Stream 215
第10章 微服务应用安全——Security 258
第3篇 微服务与Docker容器技术
第11章 微服务与Docker 288
11.1 Docker简介 288
11.2 Docker的使用 289
11.3 Docker与Spring Cloud微服务 301
11.4 微服务与Jenkins 305
11.5 微服务编排 315
显示部分信息
前 言
前言 2014年3月,Martin Fowler在其博客上发表了Microservices(微服务)一文,对过去几年逐渐开始流行的微服务架构开发模式给出了正式的定义。同年,Netflix OSS将自己多年来在实际开发中所使用的微服务基础组件开源。随后,Pivotal在Netflix OSS的基础上对这些组件进行了封装和集成,推出了Spring Cloud。到如今,微服务架构已逐渐普及,在技术生态上也得到了不断完善和更新,其在容器、应用框架、发布管理及监控等方面都有了长足进步。微服务在日常开发中也崭露头角,逐渐得到了开发者的认同。与此同时,Spring Cloud在过去几年中快速发展,不断迭代和更新,已经形成了微服务开发“全家桶”式的解决方案,逐渐在微服务开发领域奠定了坚实的基础。
当我第一次接触微服务的概念时,以为这又是一个“新瓶装旧酒”的把戏。就像当年一些大公司为解决分布式大型应用所提出的COBRA、EJB、DCOM和ESB等概念一样难以使用,它们甚至还没有来得及等用户完全掌握就退出了历史的舞台。当我再次注意到微服务时,是因为Spring Cloud的推出。在大致阅读了相关文档之后顺便“跑”了一下示例项目,我就被其深深吸引了。正是这次接触,使我改变了对微服务的看法。正巧接下来的一段时间,公司内部正在做架构调整,也发现了微服务有其可用之处,所以便在架构调整中引入了Spring Cloud,并最终在项目中取得了不错的效果。这加深了我对微服务的好感,所以后续对Spring Cloud进行了更加深入和系统的学习与研究。
· · · · · · (
收起)