Spring Cloud
2023-05-08 18:27:21 0 举报
AI智能生成
学习笔记
作者其他创作
大纲/内容
注册中心:Eureka
源码结构
EurekaServer
@EnableEurekaServer:激活 EurekaServer 相关配置
EurekaServerMarkerConfiguration
EurekaServerInitializerConfiguration:启动 EurekaServer
eurekaServerBootstrap.contextInitialized:初始化、启动 EurekaServer
initEurekaEnvironment:初始化 Eureka 运行环境
initEurekaServerContext:初始化 EurekaServer 运行上下文
EurekaServerAutoConfiguration
EurekaController:提供 EurekaServer 仪表盘数据
PeerAwareInstanceRegistry:集群节点同步数据
PeerEurekaNodes:微服务节点集合
start
shutdown
EurekaServerContext:EurekaServer 的 ApplicationContext
DefaultEurekaServerContext
PeerAwareInstanceRegistry#init
numberOfReplicationsLastMin.start()
scheduleRenewalThresholdUpdateTask
EurekaServerBootstrap:代替 ServletContextListener 启动 EurekaServer
ServletContainer:可类比 DispatcherServlet
Servlet 层的过滤器
Jersey 的核心控制器
Application:配合 ServletContainer
HttpTraceFilter:记录请求日志的过滤器
EurekaClient
EurekaClientAutoConfiguration
DiscoveryClientOptionalArgsConfiguration
RestTemplateDiscoveryClientOptionalArgs:支持 RestTemplate,去除 Jersey 的兜底方案
MutableDiscoveryClientoptionalArgs:默认值解决方案,支持 JerseyApplicationClient
ManagementMetadataProvider:提供 Eureka 元数据管理
EurekalnstanceConfigBean:配置模型
DiscoveryClient:Spring Cloud 整合 Eureka 的核心,被 EurekaDiscoveryClient 实现
EurekaServiceRegistry:微服务实例与注册中心的连接契约,可以获取和动志政变服务实例的状志
EurekaAutoServiceRegistration:实现 SmartLifecycle 接口,触发 EurekaServiceRegistry 的 register 和 deregister
RefreshableEurekaCientConfguration
ApplicationInfoManager:EurekaClient 初始化时向 EurekaServer 注册
EurekaRegistration:Eureka 实例的服务注册信息
RefreshAutoConfiguration
AutoServiceRegistrationAutoConfiguration
EurekaDiscoveryClientConfiguration
EurekaClient 的启动
基本配置
整体架构
Client - Server
高可用
一致性
自我保护
Eureka Server
关键组件
@EnableEurekaServer
EurekaServerMarkerConfiguration
Marker
EurekaServerlnitializerConfiguration
EurekaServer 的启动
EurekaServerBootstrap
EurekaServer 的启动
EurekaServerBootstrap
EurekaServerAutoConfiguration
EurekaController
基于 SpringWebMVC 的普通 Controller
提供 EurekaServer 仪表盘数据
基于 SpringWebMVC 的普通 Controller
提供 EurekaServer 仪表盘数据
PeerAwarelnstanceRegistry
集群节点同步数据的核心组件
集群节点同步数据的核心组件
PeerEurekaNodes
微服务的节点组合
微服务的节点组合
EurekaServerContext
EurekaServer 的上下文
可以简单类比 ApplicationContext
EurekaServer 的上下文
可以简单类比 ApplicationContext
EurekaServerBootstrap
代替 ServletContextListener 启动 EurekaServer
代替 ServletContextListener 启动 EurekaServer
ServletContainer
Servlet 层的过滤器
Jersey 的核心控制器
可以类比 DispatcherServlet
Servlet 层的过滤器
Jersey 的核心控制器
可以类比 DispatcherServlet
Application
配合 ServletContainer
配合 ServletContainer
HttpTraceFilter
记录请求日志的过滤器
记录请求日志的过滤器
初始化和启动
注册表同步
服务注册
缓存机制
心跳机制
Eureka Client
初始化和启动
服务注册
心跳机制
关键组件
RefreshAutoConfiguration
RefreshScope
Bean 的作用域刷新器
与分布式配置中心有关
Bean 的作用域刷新器
与分布式配置中心有关
LoggingRebinder
日志的重绑定器
日志的重绑定器
ContextRefresher、RefreshEventListener
配置刷新
配置刷新
RefreshScopeBeanDefinitionEnhancer
将声明了 Scope 为 refresh 的但没有标注 refresh 的 Bean 修改为 refresh 作用域
将声明了 Scope 为 refresh 的但没有标注 refresh 的 Bean 修改为 refresh 作用域
AutoServiceRegistrationAutoConfiguration
激活配置映射
激活配置映射
AutoServiceRegistrationConfiguration
EurekaDiscoveryClientConfiguration
Marker
EurekaHealthCheckHandlerConfiguration
EurekaHealthCheckHandler
健康检查
健康检查
EurekaClientConfigurationRefresher
监听 RefreshScopeRefreshedEvent
配合 RefreshscopeBeanDefinitionEnhancer
重新加载/刷新 Bean 的执行器
监听 RefreshScopeRefreshedEvent
配合 RefreshscopeBeanDefinitionEnhancer
重新加载/刷新 Bean 的执行器
EurekaClientAutoConfiguration
DiscoveryClientOptionalArgsConfiguration
RestTemplateDiscoveryClientOptionalArgs
去除 Jersey 的兜底方案
支持 RestTemplate
去除 Jersey 的兜底方案
支持 RestTemplate
MutableDiscoveryClientoptionalArgs
支持 JerseyApplicationClient
默认使用
支持 JerseyApplicationClient
默认使用
ManagementMetadataProvider
Eureka 元数据的提供者
Eureka 元数据的提供者
EurekalnstanceConfigBean
配置模型
配置模型
DiscoveryClient
Spring Cloud 对 Eureka 的整合核心
EurekaDiscoveyClient 实现 Discoveryclient
Spring Cloud 对 Eureka 的整合核心
EurekaDiscoveyClient 实现 Discoveryclient
EurekaSericeRegisty
微服务实例与注册中心的连接契约
可以获取和动志政变服务实例的状志
微服务实例与注册中心的连接契约
可以获取和动志政变服务实例的状志
EurekaAutosenicRegesraton
实现了 SmartLifecycle 接口
触发 EurekaServiceRegistry 的 register 和 deregister
实现了 SmartLifecycle 接口
触发 EurekaServiceRegistry 的 register 和 deregister
RefreshableEurekaCientConfguration
ApplicationlnfoManager
EurekaClient 初始化时向 EurekaServer 注册
EurekaClient 初始化时向 EurekaServer 注册
EurekaRegistration
Eureka 实例的服务注册信息
Eureka 实例的服务注册信息
CloudEurekaClient 启动流程
1. 填充组件
healthCheckHandlerProvider
健康检查
健康检查
healthCheckCallbackProvider
更精确的健康检查契约
更精确的健康检查契约
preRegistrationHandler
执行预注册逻辑的处理
执行预注册逻辑的处理
ApplicationinfoManager
EurekaClient 初始化时向 EurekaServer 注册
EurekaClient 初始化时向 EurekaServer 注册
backupRegistryProvider
本地注册表的提供
本地注册表的提供
EndpointRandomizer
随机化服务器列表
随机化服务器列表
2. 应用列表的本地缓存
高可用设计
注册中心宕机时仍能使用本地缓存
高可用设计
注册中心宕机时仍能使用本地缓存
3. 初始化远程同步注册表、心跳监控的组件
与 Servo 有关
与 Servo 有关
4. 初始化定时任务的线程池和定时任务执行器
2 个线程
2 个线程
HeartbeatThread
心跳定时器
心跳定时器
CacheRefreshThread
缓存定时器
缓存定时器
5. 初始化通信网关
EurekaTransport
案合了一些其他组件
EurekaTransport
案合了一些其他组件
6. 初始化微服务实例区域检查器
可忽略
可忽略
7. 拉取注册信息
注册信息的全量获取
从 EurekaServer 拉取所有服务的注册信息
注册信息的全量获取
从 EurekaServer 拉取所有服务的注册信息
8. 回调注册前置处理器
默认 null
默认 null
9. 初始化定时任务
第 4 步的线程池的任务初始化
第 4 步的线程池的任务初始化
10. 向 Servo 监控注册
负载均衡:Ribbon
基本原理
负载均衡策略
服务发现集成
容错与重试
初始化和启动
调用流程
负载均衡策略
提供策略
自定义策略
关键组件
服务调用:Feign
基本原理
动态代理
注解解析
集成 Ribbon
集成 Hystrix
初始化和启动
调用流程
创建接口
关键组件
@EnableFeignClients
FeignClientsRegister
注册默认的配置
扫描所有的 @FeignClient 并注册
注册默认的配置
扫描所有的 @FeignClient 并注册
FeignAutoConfiguration
FeignContext
与 SpringClientFactory 基本一致
内部组合了一组 ApplicationContext
与 SpringClientFactory 基本一致
内部组合了一组 ApplicationContext
Targeter
DefaultTargeter
HystrixTargeter
FeignRibbonClientAutoConfiguration
DefaultFeignLoadBalancedConfiguration
发起基于 Feign 的负载均衡请求的客户端
发起基于 Feign 的负载均衡请求的客户端
CachingSpringLoadBalancerFactory
组合 SpringClientFactory
相当于封装了 Ribbon 的组件
组合 SpringClientFactory
相当于封装了 Ribbon 的组件
Request.Options
简单的配置模型
10 秒的建立连接超时
60 秒的完整响应超时
简单的配置模型
10 秒的建立连接超时
60 秒的完整响应超时
熔断降级:Hystrix
基本原理
熔断器
降级策略
隔离策略
初始化和启动
HystrixCommandAspect
熔断器原理
关键组件
@EnableHystrix
EnableCircuitBreakerlmportSelector
HystrixlnvocationHandler
整合 Feign
整合 Feign
服务调用出现意外时降级到 Handler 中
取 Feign 接口的降级实现类并反射调用
HystrixCircuitBreakerConfiguration
HystrixShutdownHook
容器关闭时释放 Hystrix 资源
容器关闭时释放 Hystrix 资源
HystrixCommandAspect
声明式熔断降级的核心切面类
声明式熔断降级的核心切面类
HystrixAutoConfiguration
HystrixHealthlndicator
服务健康检查
配合 Hystrix 的 Dashboard
服务健康检查
配合 Hystrix 的 Dashboard
HystrixMetricsBinder
将 Hystrix 的性能监控指标暴露为 endpoint
将 Hystrix 的性能监控指标暴露为 endpoint
HystrixStreamEndpoint
支撑监控信息推送
支撑监控信息推送
服务网关:Zuul
基本原理
初始化和启动
调用全流程
整体执行流程
过滤器执行流程
关键组件
@EnableZuulProxy
Maker
ZuulProxyMarkerConfiguration
ZuulProxyAutoConfiguration
DiscoveryClientRouteLocator
借助注册中心拉去服务注册信息读取路由
借助注册中心拉去服务注册信息读取路由
ServiceRouteMapper
负责 URI 路径中服务名称的转换
负责 URI 路径中服务名称的转换
SimpleServiceRouteMapper
不负责任何转换
不负责任何转换
PatternServiceRouteMapper
利用正则表达式声明的规则转换 URI
利用正则表达式声明的规则转换 URI
ZuulServerAutoConfiguration
CompositeRouteLocator
RouteLocator
路由接口
路由接口
SimpleRouteLocator
依赖 ZuulProperties 读取路由
依赖 ZuulProperties 读取路由
DiscoveryClientRouteLocator
借助注册中心拉取服务注册信息读取路由
借助注册中心拉取服务注册信息读取路由
ZuulController
组合 ZuulServlet 完成请求转移
借助 ServletWrappingController 实现
组合 ZuulServlet 完成请求转移
借助 ServletWrappingController 实现
ZuulServlet
专门处理 /zuul/** 请求
可用 ZuulServletFilter 代替
专门处理 /zuul/** 请求
可用 ZuulServletFilter 代替
ZuulHandlerMapping
借助注册中心解析可以被处理的 URI
借助注册中心解析可以被处理的 URI
ZuulRefreshListener
刷新 Zuul 内部的路由表
刷新 Zuul 内部的路由表
ZuulRouteApplicationContextInitializer
将 Zuul 配置中显式声明的服务配置到 Ribbon 中
辅助 Ribbon 进行预初始化
将 Zuul 配置中显式声明的服务配置到 Ribbon 中
辅助 Ribbon 进行预初始化
ZuulFilterInitializer
初始化 Zuul 的过滤器
初始化 Zuul 的过滤器
动态路由:Gateway
基本原理
初始化和启动
调用全流程
Predicate 和 Filter
RemoveCachedBodyFilter
AdaptCachedBodyGlobalFilter
NettyWriteResponseFilter
ForwardPathFilter
OrderedGatewayFilter
RouteToRequestUrlFilter
LoadBalancerClientFilter
WebsocketRoutingFilter
NettyRoutingFilter
ForwardRoutingFilter
RouteToRequestUrlFilter
LoadBalancerClientFilter
HystrixGatewayFilterFactory
AddRequestHeaderGatewayFilterFactory
AddRequestParameterGatewayFilterFactory
RewritePathGatewayFilterFactory
RedirectToGatewayFilterFactory
关键组件
配置中心:Config
基本原理
配置服务器
配置客户端
版本控制
加密和解密
Config Server
初始化和启动
配置文件
热更新
关键组件
Config Client
初始化和启动
服务治理:Nacos
基本原理
服务注册与发现
配置管理
服务治理
与 Eureka、Consul 的对比
服务调用:Feign
负载均衡:LoadBalancer
基本原理
服务实例获取
负载均衡策略
请求分发
服务网关:Gateway
服务容错:Sentinel
基本原理
计数器
规则引擎
拦截器
Dashboard
链路追踪:Sleuth + Zipkin
Sleuth
跟踪 ID
拦截器
Zipkin
数据收集
数据存储
可视化界面
基本配置
分布式事务:Seata
基本原理
事务协调器(TC)
事务管理器(TM)
资源管理器(RM)
AT 模式
TCC 模式
0 条评论
下一页