微服务架构介绍
近年来,微服务架构一直是互联网技术圈的热点之一,越来越多的互联网应用都采用了微服务架构作为系统构建的基础,很多新技术和理念如Docker、Kubernetes、DevOps、持续交付、Service Mesh等也都在关注、支持和跟随微服务架构的发展。
本文将会概要性地介绍微服务架构:包括微服务架构是如何演进的,微服务架构的主要流派,当前主流的云原生应用与微服务之间的关系等。
本文全面系统地介绍Spring Cloud及其在微服务架构中的应用。全文共13章。
第1章介绍微服务架构相关的基本概念;第2章介绍Spring Cloud中包含的组件以及Spring Cloud约定的上下文;第3章介绍Spring Cloud的基础: Spring Boot,包括如何构建一个Spring Boot服务、SpringBoot的配置文件和Actuator提供的监控管理端点;第4~13章详细讲解Spring Cloud组件,包括Eureka (服务注册与发现)、OpenFeign (声明式RESTful客户端)、Hystrix (断路器)、Ribbon (客户端负载均衡器)、Gateway ( API网关)、Config ( 配置中心)、Stream (消息驱动)、Bus (消息总线)、Security (认证与授权)、Sleuth (服务链路追踪)。
本文为读者揭开了Spring Cloud组件实现的技术内幕,并提供了进阶应用的思路,可作为使用Spring Cloud进行微服务架构实践的参考。
目录
第1章微服务架构介绍
1.1微服务架构的出现
- 1.1.1 单体应用架构
- 1.1.2 SOA架构
- 1.1.3 微服务架构
1.2微服务架构的流派
1.3云原生与微服务
1.4 本章小结
第2章Spring Cloud总览
2.1 Spring Cloud架构
2.2 Spring Cloud特性
- 2.2.1 Spring CloudContext:应用上下文
- 2.2.2 Spring CloudCommons:公共抽象
第3章Spring Cloud的基础: Spring Boot
3.1 Spring Boot简介
3.2 构建一个微服务
3.3 Spring Boot配置文件
- 3.3.1 默认配置文件
- 3.3.2 外部化配置
- 3.3.3 YAML
- 3.3.4 自动载入外部属性到Bean
- 3.3.5 多Profile
- 3.3.6 Starter
- 3.3.7 自制一个Starter
- 3.3.8 Actuator
3.4 本章小结
第4章服务注册与发现: Eureka
4.1 基础应用
4.1.1 Eureka简介
- 4.1.2 搭建Eureka服务注册中心
- 4.1.3 搭建Eureka服务提供者
- 4.1.4 搭建Eureka服务调用者
- 4.1.5 Eureka服务注册和发现
- 4.1.6 Consul的简单应用
4.2 服务发现原理
4.3 Eureka Client源码解析
- 4.3.1 读取应用自身配置信息
- 4.3.2 服务发现客户端
- 4.3.3 拉取注册表信息
- 4.3.4服务注册
- 4.3.5初始化定时任务
- 4.3.6服务下线
4.4 Eureka Server源码解析
- 4.4.1 服务实例注册表
- 4.4.2 服务注册
- 4.4.3 接受服务心跳
- 4.4.4 服务剔除
- 4.4.5 服务下线
- 4.4.6 集群同步
- 4.4.7 获取注册表中服务实例信息
4.5 进阶应用
- 4.5.1 Eureka Instance和Client的元数据
- 4.5.2 状态页和健康检查页端口设置
- 4.5.3 区域与可用区
- 4.5.4 高可用性服务注册中心
4.6本章小结
第5章 声明式RESTful客户端: Spring Cloud OpenFeign
5.1 基础应用
- 5.1.1微服务之间的交互
- 5.1.2 OpenFeign简介
- 5.1.3 代码示例
5.2 源码分析
- 5.2.1 核心组件与概念
- 5.2.2 动态注册BeanDefinition
- 5.2.3 实例初始化
- 5.2.4 函数调用和网络请求
5.3 进阶应用
- 5.3.1 Decoder与Encoder的定制化
- 5.3.2 请求/响应压缩
5.4 本章小结
第6章断路器:Hystrix
6.1基础应用
- 6.1.1 RestTemplate与Hystrix
- 6.1.2 Openeign与Hystrix
6.2 Hystrix原理
- 6.2.1 服务雪崩
- 6.2.2 断路器
- 6.2.3服务降级操作
- 6.2.4 资源隔离
- 6.2.5 Hystrix实现思路
6.3 源码解析
- 6.3.1 封装Hystrix.co mmand
- 6.3.2 HystrixComm and类结构
- 6.3.3异步回调执行命令
- 6.3.4异步执行命令和同步执行命令
- 6.3.5 断路器逻辑
- 6.3.6 资源隔离
- 6.3.7 请求超时监控
- 6.3.8 失败回滚逻辑
6.4进阶应用
- 6.4.1 异步与异步回调执行命令
- 6.4.2 继承HystrixCommand
- 6.4.3 请求合并
6.5本章小结
第7章 客户端负载均衡器:Spring Cloud Netlix Ribbon
7.1 负载均衡
7.2 基础应用
7.3 源码分析
- 7.3.1 配置和实例初始化
- 7.3.2 与OpenFeign的集成
- 7.3.3 负载均衡器Loa dBalancerClient
- 7.3.4 IL oadBalancer
- 7.3.5负载均衡策略实现
7.4 进阶应用
- 7.4.1 Ribbon API
- 7.4.2 使用Netty发送网络请求
- 7.4.3 只读数据库的负载均衡实现
7.5本章小结
第8章AP网关: Spring CIoud Gateway
8.1 Spring Cloud Gateway介绍
8.2基础应用
- 8.2.1 用户服务
- 8.2.2 网关服务
- 8.2.3客户端的访问
8.3源码解析
- 8.3.1 初始化配置
- 8.3.2网关处理器
- 8.3.3路由定义定位器
- 8.3.4路由定位器
- 8.3.5 路由断言
- 8.3.6网关过滤器
- 8.3.7全局过滤器
- 8.3.8 API端点
8.4应用进阶
- 8.4.1 限流机制
- 8.4.2 熔断降级
- 8.4.3 网关重试过滤器
8.5本章小结
第9章配置中心: SpringCloud Config
9.1基础应用
- 9.1.1 配置客户端
- 9.1.2配置仓库
- 9.1.3 服务端
- 9.1.4 配置验证
- 9.1.5 配置动态更新
9.2源码解析
- 9.2.1 配置服务器
- 9.2.2配置客户端
9.3应用进阶
- 9.3.1为Config Serv er配置多个repo
- 9.3.2客户端覆写远端的配置属性
- 9.3.3 属性覆盖
- 9.3.4 安全保护
- 9.3.5加密解密
- 9.3.6快速响应失败与重试机制
9.4本章小结
第10章消息驱动: SpringCloud Stream
10.1 消息队列
10.2 基础应用
- 10.2.1 声明和绑定通道
- 10.2.2 自定义通道
- 10.2.3 接收消息
- 10.2.4 配置
10.3 源码分析
- 10.3.1 动态注册BeanDefinition
- 10.3.2 绑定服务
- 10.3.3 获取绑定器
- 10.3.4 绑定生产者
- 10.3.5 消息发送的流程
- 10.3.6 StreamListener注解的处理
- 10.3.7 绑定消费者
- 10.3.8 消息的接收
10.4 进阶应用
- 10.4.1 Binder ForRocketMQ
- 10.4.2 多实例
- 10.4.3分区
10.5 本章小结
第11章消息总线: SpringCloud Bus
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.2 自定义监听器
- 11.3.3 事件的发起者
11.4 本章小结
第12章认证与授权: Spring Cloud Security
12.1基础应用
- 12.1.1 OAuth2简介
- 12.1.2 JWT
- 12.1.3 搭建授权服务器
- 12.1.4 配置资源服务器
- 12.1.5 访问受限资源
12.2 整体架构
12.3 源码解析
- 12.3.1 安全上下文
- 12.3.2 认证
- 12.3.3 授权
- 12.3.4 Spring Security中的过滤器与拦截器
- 12.3.5 授权服务器
- 12.3.6 资源服务器
12.4 进阶应用
- 12.4.1 Spring Secur ity定制
- 12.4.2 OAuth2定制
- 12.4.3 sO单点登录
12.5本章小结
第13章服务链路追踪: Spring Cloud Sleuth
13.1 链路监控组件简介
13.2 基础应用
- 13.2.1 特性
- 13.2.2 项目准备
- 13.2.3 Spring CloudSleuth独立实现
- 13.2.4集成Zipkin
13.3 本章小结
因为文章内容篇幅过长,平台限制字数,关于完整版内容,若是感兴趣想学习的朋友