微服务架构学习笔记目录
前言
参考资料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》
市面上的主流 Java 语言微服务架构主要以 Spring Cloud 为主,其中大致分为两派:Netflix 和 Alibaba;本系列笔记将基于这两种方案,重点放在各种微服务组件的学习,以实践为主;
微服务架构设计方面的理论知识请移步到笔者的另一系列博客:《微服务架构设计模式》系列笔记;
本系列笔记门槛:Java8 基础、Maven、SSM、Spring、Spring Boot;
推荐有这些技术基础:Docker、Redis、Git、SQL数据库;
点击下列标题可跳转到对应博文;
简易目录:
- 1. 微服务相关基础知识;
- 2. 服务配置管理:Spring Cloud Config、Nacos、*Spring Cloud 配置源码、*Nacos 获取配置与事件订阅源码、*Nacos 长轮询定时机制的源码;
- 3. 注册中心:Eureka、Nacos、Zookeeper、Consul、*Nacos 注册中心源码;
- 4. 服务调用:Ribbon、Feign;
- 5. 服务容灾:Hystrix、Sentinel、Sentinel 源码;
- 6. ;
- 7. 安全保护:OAuth2、JWT;
- 8. ;
- 9. ;
- 10. 分布式追踪:Sleuth、Papertrail、Zipkin;
- 11. 分布式事务:Seata;
- 12. RPC 通信:Dubbo;
- 13. ;
详细目录
1. 微服务相关基础知识
- 1. 分布式相关理论;
- 2. 微服务架构发展历程;
- 3. 云计算概述;
- 4. 微服务架构概述;
- 5. 主流 Spring Cloud 组件;
- 6. 一些资源链接;
- 7. 本系列笔记的编写思想;
[1.1 微服务的部署]
2. 服务配置管理
2.1 使用 Spring Cloud Config 管理服务配置项
- 1. Spring Cloud Config 基础知识点;
- 2. 配置服务器的示例;
- 3. 客户端获取服务端配置示例;
- 4. 动态刷新服务的配置;
- 5. 使用 Spring Cloud Config 加密敏感配置信息;
2.2 Alibaba Nacos 的统一配置管理
- 1. Nacos 配置中心基础知识;
- 2. Nacos 基础配置;
- 3. Nacos 加载配置的三种方案;
*2.3 Spring Cloud 启动及加载配置文件源码分析(以 Nacos 为例)
- 1. Spring Cloud 什么时候加载配置文件;
- 2. 准备 Environment 配置环境;
- 3. 刷新应用上下文;
- 4. Spring Cloud 加载配置文件源码结构图小结;
*2.4 Nacos 获取配置与事件订阅机制的源码分析
- 1. 客户端获取 Nacos 服务器里的配置;
- 2. Nacos 配置的事件订阅机制;
- 3. 源码结构图小结;
*2.5 Nacos 长轮询定时机制的源码分析
- 1. 客户端的长轮询定时机制;
- 2. 服务端的长轮询定时机制;
- 3. 源码结构图小结;
3. 注册中心与服务发现
3.1 Netflix Eureka 注册中心
- 1. Eureka 的基础知识;
- 2. 构建 Eureka 服务器;
- 3. 将客户端注册进 Eureka 服务器;
- 4. Eureka Server 的自我保护;
3.2 Alibaba Nacos 注册中心
- 1. Nacos 基础知识;
- 2. 安装并运行 Nacos 服务器;
- 3. 使用 Nacos 管理服务提供者;
- 4. 使用 Nacos 管理服务消费者;
- 5. Nacos 持久化配置;
- 6. Nacos 的高可用部署;
- 7. 包含 Nginx 的 Nacos 高可用示例;
- 8. Dubbo 使用 Nacos 作为注册中心;
3.3 Apache Zookeeper 注册中心
- 1. Zookeeper 基础知识;
- 2. 安装并运行 Zookeeper 服务器;
- 3. 使用 Zookeeper 管理服务提供者;
- 4. 使用 Zookeeper 管理服务消费者;
- 5. Dubbo 使用 Zookeeper 作为注册中心;
3.4 HashiCorp Consul 注册中心
- 1. Consul 基础知识;
- 2. 安装并运行 Consul 服务器;
- 3. 使用 Consul 管理服务提供者;
- 4. 使用 Consul 管理服务消费者;
*3.5 Nacos 服务注册与发现的源码分析
- 1. 客户端注册进 Nacos 注册中心(客户端视角);
- 2. Nacos 服务器注册服务(服务器视角);
- 3. 客户端查询所有服务实例;
- 4. 客户端监听 Nacos 服务器以动态获取服务实例;
- 5. 补充内容;
- 6. 源码结构图总结;
4. 服务调用
4.1 基于 Ribbon 的负载均衡详解
- 1. Ribbon 基础知识;
- 2. 服务消费者获取提供者的三个层次示例;
- 3. 通过 java 配置类自定义负载均衡算法示例(消费者服务);
- 4. 通过配置自定义负载均衡算法示例(消费者服务);
- 5. 本地负载均衡器的实现(消费者);
4.2 Feign 与 OpenFeign 的服务接口调用
- 1. OpenFeign 基本知识;
- 2. 在服务消费者端开启 Feign 支持;
- 3. 在服务消费者端开启 OpenFeign 支持;
- 4. 在服务消费者端开启 OpenFeign 支持;
- 5. OpenFeign 的日志打印功能;
[4.3 Loadbalancer]
5. 服务容灾
5.1 使用 Netflix Hystrix 断路器
- 1. Hystrix 基础知识;
- 2. 对服务使用 Hystrix 断路器;
- 3. 使用 HystrixConcurrencyStrategy 联系线程上下文;
- 4. 使用 hystrixDashboard 实现服务监控;
5.2 基于 Sentinel 的服务限流及熔断
- 1. Sentinel 基础知识;
- 2. 安装并运行 Sentinel 控制台;
- 3. Spring Cloud Nacos 集成 Sentinel;
- 4. 使用 @SentinelResource 自定义限流处理逻辑;
- 5. 手动配置流控规则;
- 6. Sentinel 规则持久化;
- 7. Sentinel 控制台集成 Nacos 实现规则同步;
- 8. 自定义 URL 限流异常和 URL 资源清洗;
[5.3 Resilience4j]
5.4 Sentinel 流控、统计和熔断的源码分析
- 1. Sentinel 的自动装配;
- 2. 获取 ProcessorSlot 链;
- 3. 流控槽实施流控逻辑 FlowSlot.entry();
- 4. 统计槽实施指标数据统计 StatisticSlot.entry();
- 5. 熔断槽实施服务熔断 DegradeSlot.entry();
- 6. Sentinel 源码结构图小结;
6. 服务网关路由
6.1 使用 Zuul 进行服务路由
- 1. Zuul 基础知识;
- 2. 构建 Zuul 网关服务;
- 3. 使用 Zuul 的三种类型过滤器示例;
- 4. 使用 Zuul 的路由过滤器实现灰度发布示例;
6.2 Gateway
7. 安全保护
7.1 基于 OAuth2 的安全认证
- 1. OAuth2 的基础知识;
- 2. 建立 OAuth2 服务器;
- 3. 使用 OAuth2 建立并保护服务资源;
- 4. 在上下游服务中传播 OAuth2 访问令牌;
7.2 构建使用 JWT 令牌存储的 OAuth2 安全认证
- 1. JWT 令牌存储基础知识;
- 2. 构建使用 JWT 令牌存储的 OAuth2 服务器;
- 3. 在受保护服务中使用 JWT;
8. 事件 / 消息驱动
8.1 使用 Spring Cloud Stream 整合 Apache kafka
- 1. Spring Cloud Stream 基础知识;
- 2. 构建消息的生产者;
- 3. 构建消息的消费者;
- 4. 分布式缓存示例(主要实现的是消费者的逻辑);
- 5. [可选] 自定义通道(以消息消费者为例);
8.2 RocketMQ
9. 服务总线
9.1 bus
9.2 nacos
10. 分布式追踪
10.1 使用 Sleuth 追踪服务调用链
- 1. Sleuth 基础知识;
- 2. 在服务中使用 Sleuth 追踪;
10.2 使用 Papertrail 实现日志聚合
- 1. Papertrail 基础知识;
- 2. 使用 Papertrail 进行日志聚合的示例;
10.3 使用 Zipkin 可视化日志追踪
- 1. Zipkin 基础知识;
- 2. 下载 Zipkin 服务器;
- 3. 手动安装和配置 Zipkin 服务器;
- 4. 使用 Zipkin 进行分布式跟踪;
11. 分布式事务
11.1 整合 Seata AT 模式实现分布式事务
- 1. Seata 基础知识;
- 2. Seata 服务端的安装;
- 3. Spring Cloud 集成 Seata 实现分布式事务;
- 4. Seata AT 模式的实现原理;
12. RPC 通信
12.1 使用 Apache Dubbo 实现远程通信
- 1. Dubbo 基础知识;
- 2. 构建 Dubbo 服务提供方;
- 3. 构建 Dubbo 服务消费方;
- 4. 在消费者端使用 Mock 配置实现服务降级;
- 5. Dubbo 使用 Zookeeper 作为注册中心(Spring Boot);
- 6. Dubbo 使用 Nacos 作为注册中心(Spring Boot);
- 7. Dubbo 使用 Nacos 作为注册中心(Spring Cloud);
13. 其他组件
13.1 OSS
- 1. ;
- 2. ;
- 3. ;
- 4. ;
- 5. ;
- 6. ;
- 7. ;
- 8. ;