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<br>EurekaServer 的启动<br>EurekaServerBootstrap<br>
EurekaServerAutoConfiguration
EurekaController<br>基于 SpringWebMVC 的普通 Controller<br>提供 EurekaServer 仪表盘数据<br>
PeerAwarelnstanceRegistry<br>集群节点同步数据的核心组件<br>
PeerEurekaNodes<br>微服务的节点组合<br>
EurekaServerContext<br>EurekaServer 的上下文<br>可以简单类比 ApplicationContext<br>
EurekaServerBootstrap<br>代替 ServletContextListener 启动 EurekaServer<br>
ServletContainer<br>Servlet 层的过滤器<br>Jersey 的核心控制器<br>可以类比 DispatcherServlet<br>
Application<br>配合 ServletContainer<br>
HttpTraceFilter<br>记录请求日志的过滤器<br>
初始化和启动
注册表同步
服务注册
缓存机制
心跳机制
Eureka Client
初始化和启动
服务注册
心跳机制
关键组件
RefreshAutoConfiguration
RefreshScope<br>Bean 的作用域刷新器<br>与分布式配置中心有关<br>
LoggingRebinder<br>日志的重绑定器
ContextRefresher、RefreshEventListener<br>配置刷新
RefreshScopeBeanDefinitionEnhancer<br>将声明了 Scope 为 refresh 的但没有标注 refresh 的 Bean 修改为 refresh 作用域
AutoServiceRegistrationAutoConfiguration<br>激活配置映射<br>
AutoServiceRegistrationConfiguration
EurekaDiscoveryClientConfiguration
Marker
EurekaHealthCheckHandlerConfiguration
EurekaHealthCheckHandler<br>健康检查
EurekaClientConfigurationRefresher<br>监听 RefreshScopeRefreshedEvent<br>配合 RefreshscopeBeanDefinitionEnhancer<br>重新加载/刷新 Bean 的执行器<br>
EurekaClientAutoConfiguration
DiscoveryClientOptionalArgsConfiguration
RestTemplateDiscoveryClientOptionalArgs<br>去除 Jersey 的兜底方案<br>支持 RestTemplate<br>
MutableDiscoveryClientoptionalArgs<br>支持 JerseyApplicationClient<br>默认使用
ManagementMetadataProvider<br>Eureka 元数据的提供者<br>
EurekalnstanceConfigBean<br>配置模型<br>
DiscoveryClient<br>Spring Cloud 对 Eureka 的整合核心<br>EurekaDiscoveyClient 实现 Discoveryclient<br>
EurekaSericeRegisty<br>微服务实例与注册中心的连接契约<br>可以获取和动志政变服务实例的状志<br>
EurekaAutosenicRegesraton<br>实现了 SmartLifecycle 接口<br>触发 EurekaServiceRegistry 的 register 和 deregister
RefreshableEurekaCientConfguration
ApplicationlnfoManager<br>EurekaClient 初始化时向 EurekaServer 注册<br>
EurekaRegistration<br>Eureka 实例的服务注册信息<br>
CloudEurekaClient 启动流程
1. 填充组件
healthCheckHandlerProvider<br>健康检查<br>
healthCheckCallbackProvider<br>更精确的健康检查契约<br>
preRegistrationHandler<br>执行预注册逻辑的处理<br>
ApplicationinfoManager<br>EurekaClient 初始化时向 EurekaServer 注册
backupRegistryProvider<br>本地注册表的提供
EndpointRandomizer<br>随机化服务器列表
2. 应用列表的本地缓存<br>高可用设计<br>注册中心宕机时仍能使用本地缓存
3. 初始化远程同步注册表、心跳监控的组件<br>与 Servo 有关<br>
4. 初始化定时任务的线程池和定时任务执行器<br>2 个线程<br>
HeartbeatThread<br>心跳定时器<br>
CacheRefreshThread<br>缓存定时器<br>
5. 初始化通信网关<br>EurekaTransport<br>案合了一些其他组件<br>
6. 初始化微服务实例区域检查器<br>可忽略<br>
7. 拉取注册信息<br>注册信息的全量获取<br>从 EurekaServer 拉取所有服务的注册信息<br>
8. 回调注册前置处理器<br>默认 null<br>
9. 初始化定时任务<br>第 4 步的线程池的任务初始化<br>
10. 向 Servo 监控注册
负载均衡:Ribbon
基本原理
负载均衡策略
服务发现集成
容错与重试
初始化和启动
调用流程
负载均衡策略
提供策略
自定义策略
关键组件
服务调用:Feign
基本原理
动态代理
注解解析
集成 Ribbon
集成 Hystrix
初始化和启动
调用流程
创建接口
关键组件
@EnableFeignClients
FeignClientsRegister<br>注册默认的配置<br>扫描所有的 @FeignClient 并注册<br>
FeignAutoConfiguration
FeignContext<br>与 SpringClientFactory 基本一致<br>内部组合了一组 ApplicationContext<br>
Targeter
DefaultTargeter
HystrixTargeter
FeignRibbonClientAutoConfiguration
DefaultFeignLoadBalancedConfiguration<br>发起基于 Feign 的负载均衡请求的客户端<br>
CachingSpringLoadBalancerFactory<br>组合 SpringClientFactory<br>相当于封装了 Ribbon 的组件<br>
Request.Options<br>简单的配置模型<br>10 秒的建立连接超时<br>60 秒的完整响应超时<br>
熔断降级:Hystrix
基本原理
熔断器
降级策略
隔离策略
初始化和启动
HystrixCommandAspect
熔断器原理
关键组件
@EnableHystrix
EnableCircuitBreakerlmportSelector
HystrixlnvocationHandler<br>整合 Feign
服务调用出现意外时降级到 Handler 中
取 Feign 接口的降级实现类并反射调用
HystrixCircuitBreakerConfiguration
HystrixShutdownHook<br>容器关闭时释放 Hystrix 资源<br>
HystrixCommandAspect<br>声明式熔断降级的核心切面类<br>
HystrixAutoConfiguration
HystrixHealthlndicator<br>服务健康检查<br>配合 Hystrix 的 Dashboard<br>
HystrixMetricsBinder<br>将 Hystrix 的性能监控指标暴露为 endpoint<br>
HystrixStreamEndpoint<br>支撑监控信息推送<br>
服务网关:Zuul
基本原理
初始化和启动
调用全流程
整体执行流程
过滤器执行流程
关键组件
@EnableZuulProxy
Maker
ZuulProxyMarkerConfiguration
ZuulProxyAutoConfiguration
DiscoveryClientRouteLocator<br>借助注册中心拉去服务注册信息读取路由
ServiceRouteMapper<br>负责 URI 路径中服务名称的转换
SimpleServiceRouteMapper<br>不负责任何转换
PatternServiceRouteMapper<br>利用正则表达式声明的规则转换 URI
ZuulServerAutoConfiguration
CompositeRouteLocator
RouteLocator<br>路由接口
SimpleRouteLocator<br>依赖 ZuulProperties 读取路由
DiscoveryClientRouteLocator<br>借助注册中心拉取服务注册信息读取路由
ZuulController<br>组合 ZuulServlet 完成请求转移<br>借助 ServletWrappingController 实现
ZuulServlet<br>专门处理 /zuul/** 请求<br>可用 ZuulServletFilter 代替
ZuulHandlerMapping<br>借助注册中心解析可以被处理的 URI
ZuulRefreshListener<br>刷新 Zuul 内部的路由表
ZuulRouteApplicationContextInitializer<br>将 Zuul 配置中显式声明的服务配置到 Ribbon 中<br>辅助 Ribbon 进行预初始化
ZuulFilterInitializer<br>初始化 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 条评论
下一页