Spring Cloud 技术体系
2019-08-05 10:20:59 0 举报
AI智能生成
Spring Cloud 技术体系
作者其他创作
大纲/内容
服务调用(Service Call)
核心理念
远程过程调用(RPC)
核心概念
接口定义语言(IDL)
根存(Stubs)
通讯协议
二进制协议
CORBA
RMI
EJB
Hession
Thrift
本文协议
XML-RPC
WebService
REST
AJAX
客户端
Feign
灵感来源
Retrofit
JAX-RS
WebSocket
Spring Cloud Feign
依赖
spring-cloud-starter-feign
激活
@EnableFeignClients
接口声明
@FeignClient
支持
Hystrix
配置
Ribbon
配置
源码分析
上下文
FeignContext
注解参数处理器
AnnotatedParameterProcessor
请求头
RequestHeaderParameterProcessor
请求参数
RequestParamParameterProcessor
路径变量
PathVariableParameterProcessor
Hystrix 支持
命令
FallbackCommand
Ribbon 支持
负载均衡
负载均衡器
FeignLoadBalancer
工厂
CachingSpringLoadBalancerFactory
客户端
LoadBalancerFeignClient
加码器(Encoder)
字符类型
SpringEncoder
解码器(Decoder)
字符类型
StringDecoder
Spring MVC ResponseEntity
ResponseEntityDecoder
请求拦截器
RequestInterceptor
GZIP 处理
Accept-Encoding 请求头
FeignAcceptGzipEncodingInterceptor
Content-Encoding 请求头
FeignContentGzipEncodingInterceptor
BASIC 认证
BasicAuthRequestInterceptor
通用装配
FeignClientsConfiguration
自动装配
默认
FeignAutoConfiguration
GZIP 处理
Accept-Encoding 请求头
FeignAcceptGzipEncodingAutoConfiguration
Content-Encoding 请求头
FeignContentGzipEncodingAutoConfiguration
Ribbon
FeignRibbonClientAutoConfiguration
注册
处理对象
FeignClientsRegistrar
注解
候选注解
@FeignClient
激活
@EnableFeignClients
服务网关(Gateway)
核心理念
使用场景
Web 网关
REST API 网关
WebService 网关
服务能力
监控(Monitoring)
测试(Testing)
压力测试(Stress Testing)
A/B 测试(A/B Testing)
动态路由(Dynamic Routing)
路由规则
域名匹配
http://user.acme.com
IP匹配
http://192.168.1.2 -> user
路径匹配
http://www.acme.com/user
协议匹配
ftp://www.acme.com
服务整合(Service Migration)
负荷减配(Load Shedding)
安全(Security)
认证(Authentication)
静态资源处理(Static Resources handling)
活跃流量管理(Active traffic management)
依赖
服务来源
服务发现
服务注册
服务通讯
协议
二进制
本文协议
方式
同步(Sync)
异步(Async)
服务接口
弱约束
XML
JSON
HTML
强约束
接口定义语言(IDL)
RMI
Hession
架构
SOA
微服务
事件驱动架构
类型
服务
ESB
EJB
Web
上游(Upstream)
Apache
Nginx
其他反向代理服务器
下游(Downstream)
Java Web Server
Java Servlet
Tomcat Valve
PHP Web Server
.NET Web Server
服务端
Spring Cloud Zuul
用途
监控(Monitoring)
压力测试(Stress Testing)
动态路由(Dynamic Routing)
服务整合(Service Migration)
负荷减配(Load Shedding)
安全(Security)
认证(Authentication)
静态请求处理(Static Response handling)
活跃流量管理(Active traffic management)
依赖
spring-cloud-starter-zuul
激活
@EnableZuulProxy
合并注解
@EnableSidecar
spring-cloud-netflix-sidecar
@SpringCloudApplication
整合
Eureka
Hystrix
ZuulFallbackProvider
生命周期
初始化
ServletInitializer
ZuulFilterInitializer
处理
ZuulServlet
ZuulRunner
ZuulFilter
销毁
移除 ZuulFilter
清楚 FilterLoader 缓存
路由
规则
配置
过程
Metrics
Spectator
spring-cloud-starter-spectator
Servo
Atlas
源码分析
通用
路由处理
代理运行器
ZuulRunner
实际执行器
ZuulFilter
执行顺序控制
filterOrder()
类型控制
filterType()
设计权限
字符类型描述类型
是否应该执行
shouldFilter()
执行
run()
类型
路由预处理
pre
路由
route
路由后处理
post
错误
error
Zuul
ZuulFilter 加载器
FilterLoader
加载ZuulFilter Java/Groovy 源文件
ZuulFilter 仓储
FilterRegistry
Spring Cloud Zuul
路由处理
前端总控制器
Servlet
ZuulServlet
装配
手动(@EnableZuulProxy)
配置 Bean(@Configuration)
ZuulConfiguration
配置属性 Bean(@ConfigurationProperties)
ZuulProperties
路由定位器
RouteLocator
前端总控制器
ZuulServlet
ZuulFilter 内置实现 Bean
DispatcherServlet 探测
ServletDetectionFilter
Form 表单数据
FormBodyWrapperFilter
设计模式
J2EE 设计模式
前端控制器模式
GoF 23
责任链模式
代理模式
策略模式
消息驱动整合(Message-Driven Integration)
核心理念
消息总线(Message Bus)
核心理念
分布式跟踪(Distributed Tracing)
核心理念
预备(Preparation))
技术体系
架构
面向服务架构(SOA)
微服务(MSA)
测试驱动开发(TDD)
领域驱动设计(DDD)
事件驱动架构(EDA)
技术
Java 8 基础
Spring Framework 4.x
Spring Boot 1.x
环境依赖
Spring Cloud
Dalston.SR3
Spring Boot
1.5.x
Spring Framework
4.3.x
Maven
3.5.0
Java
>= 8
原生云应用(Cloud Native Applications)
知识储备
12-Factor 应用
Codebase
Dependencies
Config
Backing services
Build, release, run
Processes
Port binding
Concurrency
Disposability
Dev/prod parity
Logs
Admin processes
Spring Framework
ApplicationContext
Spring Boot
SpringApplication
SpringApplicationBuilder
Bootstrap 上下文
Bootstrap Application Context
理解 Application Context 层次性
端点(Endpoints)
上下文重启
/restart
生命周期回调
/pause
/resume
分布式配置(Configuration)
技术回顾
Spring Framework
Environment
PropertySources
PropertySource
@PropertySources
@PropertySource
@Profile
Spring Boot
application.properties
事件(Event)
ApplicationEnvironmentPreparedEvent
ApplicationPreparedEvent
监听器(Listener)
ConfigFileApplicationListener
Java 加密扩展(JCE)
JCE 8
Spring Cloud 配置客户端
配置文件
bootstrap.yml
bootstrap.properties
Bootstrap 配置属性(Properties)
调整 Bootstrap 配置文件路径
覆盖远程配置属性
自定义 Bootstrap 配置
自定义 Bootstrap 配置属性源
安全
Spring Cloud 服务器
@EnableConfigServer
Environment 仓储
分布式配置实现
Git 实现
认证(Authentication)
文件系统实现
自定义实现
Zookeeper
健康指标(Health Indicator)
加密和解密(Encryption and Decryption)
秘钥管理(Key Management)
创建Key
@RefreshScope Bean
@RefreshScope 使用场景
端点(Endpoints)
Environment 端点
/env
@RefreshScope 端点
/refresh
上下文重启
/restart
生命周期回调
/pause
/resume
服务发现/注册(Discovery/Registry)
核心理念
服务发现(Discovery)
WebService
UDDI
REST
HATEOAS
Messaging
JMS
Java
JNDI
JINI
Apache River
服务注册(Registry)
SOA
服务提供方(Service Registry)
服务代理(Service Broker)
服务消费者(Service Consumer)
高可用(High Availability)
原则(Principles)
消除单点失败
可靠性交迭
故障探测
可用性比率计算
系统设计
服务发现(Discovery)
客户端
Netflix Eureka
引入
spring-cloud-starter-eureka
API
EurekaClient
ServiceInstance
Spring Cloud Commons
API
@EnableDiscoveryClient
DiscoveryClient
ServiceInstance
服务注册(Registry)
客户端
Netflix Eureka
激活
@EnableEurekaClient
区域化(zones)
安全(Secure)
健康检查(Health Checks)
健康指标(Health Indicator)
服务端
Netflix Eureka
激活
@EnableEurekaServer
高可用
区域化
Zones
Regions
负载均衡(Load Balance)
核心理念
客户端(Client)
Round-robin DNS
服务端(Server)
调度算法
先来先服务(First Come First Served)
最早截止时间优先(Earliest deadline first)
最短保留时间优先(Shortest remaining time first)
固定优先级(Fixed Priority)
轮训(Round-Robin)
多级别队列(Multilevel Queue)
特性(Features)
非对称负载(Asymmetric load)
SSL 卸载和加速
分布式拒绝服务攻击保护
HTTP 压缩
TCP 卸载
TCP 缓冲
直接服务返回
健康检查
优先级队列
内容意识切换
客户端认证
编程式流量操作
防火墙
入侵防御系统
客户端
Netflix Ribbon
激活
@RibbonClient
负载均衡器
ILoadBalancer
AbstractLoadBalancer
BaseLoadBalancer
DynamicServerListLoadBalancer
ZoneAwareLoadBalancer
负载均衡客户端
LoadBalancerClient
自动装配
LoadBalancerAutoConfiguration
源码分析
RestTemplate 自定义器
RestTemplateCustomizer
RestTemplate 请求拦截器
LoadBalancerInterceptor
标记注解
@LoadBalanced
实际请求客户端
LoadBalancerClient
RibbonLoadBalancerClient
负载均衡上下文
LoadBalancerContext
RibbonLoadBalancerContext
负载均衡器
ILoadBalancer
BaseLoadBalancer
DynamicServerListLoadBalancer
ZoneAwareLoadBalancer
NoOpLoadBalancer
负载均衡规则
核心规则接口
IRule
随机规则
RandomRule
最可用规则
BestAvailableRule
轮训规则
默认实现
RoundRobinRule
重试实现
RetryRule
客户端配置
ClientConfigEnabledRoundRobinRule
可用性过滤规则
AvailabilityFilteringRule
RT权重规则
WeightedResponseTimeRule
规避区域规则
ZoneAvoidanceRule
PING 策略
核心策略接口
IPingStrategy
PING 接口
IPing
实现
NoOpPing
DummyPing
PingConstant
PingUrl
Discovery Client 实现
NIWSDiscoveryPing
Spring Framework
REST 客户端
模板类
RestTemplate
客户端请求拦截器
ClientHttpRequestInterceptor
服务短路(Circuit Breakers)
核心理念
名词由来
Martin Fowler
短路器模式
更早由来
容错(Fault tolerance)
目的
系统整体性保护
近义词
熔断保护
容错保护
优雅降级
设计哲学
取舍之道
触发条件
错误类型
超时(Timeout)
异常(Exception)
性能类型
响应时间(RT)
处理手段
内容处理
空内容
容错内容
异常处理
程序异常
状态码
实现方式
客户端
服务端
服务端
Spring Cloud Hystrix
依赖
spring-cloud-starter-hystrix
激活
@EnableCircuitBreaker
命令
@HystrixCommand
应变方法
fallbackMethod
命令分组
groupKey
命令关联 Key
commandKey
线程池关联 Key
threadPoolKey
属性
HystrixProperty
通用属性
commandProperties
线程池属性
threadPoolProperties
忽略异常集合
ignoreExceptions
可观察执行模式
ObservableExecutionMode
@HystrixCollapser
超时
指标
健康指标(Health Indicator)
/health -> hystrix
数据指标(Metrics)
/hystrix.stream
生产特性(Production-Ready Features)
Turbine
使用场景
指标聚合
端口
/turbine.stream
配置
turbine.aggregator.clusterConfig
激活
@EnableTurbine
Turbine Stream
依赖
spring-cloud-netflix-hystrix-stream
spring-cloud-starter-stream-*
激活
@EnableTurbineStream
Spring Cloud Hystrix Dashboard
依赖
spring-cloud-starter-hystrix-dashboard
激活
@EnableHystrixDashboard
源码分析
Spring Cloud Hystrix
TODO
Netflix Hystrix
TODO
0 条评论
下一页