-
Notifications
You must be signed in to change notification settings - Fork 0
/
spring-cloud
52 lines (27 loc) · 2.38 KB
/
spring-cloud
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
spring cloud 底层
一、Eureka
eureka client: 负责将这个服务的信息注册到eureka server中
eureka server: 注册中心,里面有一个注册表,保存了各个服务的所在的机器和端口号
二、Feign
关键机制-动态代理
1、针对接口定义@FeignClient注解,Feign就会针对这个接口创建一个动态代理
2、接着你要是调用那个接口,本质就是会调用feign创建的动态代理
3、feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务地址
4、发起请求,解析响应
三、Ribbon 负载均衡
默认使用Round Robin轮训算法
ribbon是和feign以及Eureka紧密协作,完成工作的
1、ribbon 会从eureka server获取对应的服务注册表,知道所有服务都部署在哪些机器上,在监听哪些端口号
2、使用默认的轮训算法,选择一台机器
3、feign会针对这台机器,构造并发起请求
四、Hystrix 是隔离、熔断以及降级的一个框架;不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
比如在5分钟内请求积分服务直接就返回了,不要去走网络请求卡住几秒钟,这个过程,就是所谓的熔断
每次调用积分服务,你就在数据库里记录一条消息,说给某某用户增加了多少积分,因为积分服务挂了,导致没增加成功!这样等积分服务恢复了,你可以根据这些记录手工加一下积分。这个过程,就是所谓的降级
五、Zuul
做统一的降级,限流,认证授权,安全
Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里
Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台
Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
总结出自[方志朋的博客](http://blog.csdn.net/forezp)