@@ -6,15 +6,15 @@ Spring Cloud就是微服务系统架构的一站式解决方案,在平时我
6
6
7
7
** 服务注册 Register** :
8
8
9
- 当 Eureka 客户端(服务提供者)向 Eureka Server 注册时,它提供自身的 ** 元数据 ** ,比如IP地址、端口,运行状况指示符URL,主页等。
9
+ 当 Eureka 客户端(服务提供者)向 Eureka Server 注册时,它存储该服务的信息 ,比如IP地址、端口,运行状况指示符URL,主页等。
10
10
11
11
** 服务续约 Renew** :
12
12
13
13
** Eureka 客户端会每隔30秒(默认情况下)发送一次心跳来续约** 。 通过续约来告知 Eureka Server 该 Eureka 客户仍然存在,没有出现问题。正常情况下,如果 Eureka Server 在90秒没有收到 Eureka 客户端的续约,它会将实例从其注册表中删除。
14
14
15
15
** 获取注册列表信息 Fetch Registries** :
16
16
17
- Eureka 客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息如果与 Eureka 客户端的缓存信息不同,Eureka 客户端自动处理。 Eureka 客户端和 Eureka 服务器可以使用JSON / XML格式进行通讯。
17
+ Eureka 客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。Eureka 客户端和 Eureka 服务器可以使用JSON / XML格式进行通讯。
18
18
19
19
** 服务下线 Cancel** :
20
20
@@ -26,10 +26,50 @@ Eureka 客户端在程序关闭时向 Eureka 服务器发送取消请求。发
26
26
27
27
** 架构图** :
28
28
29
- ![ image-20200229172633604] ( https://github.com/lvminghui/Java-Notes/blob/master/docs/imgs/Eureka .png)
29
+ ![ image-20200229172633604] ( C:\Users\吕明辉\AppData\Roaming\Typora\typora-user-images\image-20200229172633604 .png)
30
30
31
31
可以充当服务发现的组件有很多:Zookeeper ,Consul , Eureka 等。
32
32
33
+ ## Eureka 原理⭐
34
+
35
+ Eureka 主要包括两块: Eureka Server 和 Eureka Client。
36
+
37
+ ** Eureka Server,服务端** ,有三个功能: ** 服务注册** ** 提供注册表** ** 同步状态**
38
+
39
+ ** Eureka Client,客户端** ,是一个 Java 客户端,用于简化与 Eureka Server 的交互。它会拉取、更新和缓存 Eureka Server 中的信息。因此当所有的 Eureka Server 节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。** 服务续约** , ** 服务剔除** , ** 服务下线** 的功能。
40
+
41
+ Eurka 工作流程是这样的:
42
+
43
+ 1、Eureka Server 启动成功,等待服务端注册。
44
+
45
+ 2、Eureka Client 启动时根据配置的 Eureka Server 地址去注册中心注册服务
46
+
47
+ 3、Eureka Client 会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常
48
+
49
+ 4、当 Eureka Server 90s 内没有收到 Eureka Client 的心跳,注册中心则认为该节点失效,会注销该实例
50
+
51
+ 5、单位时间内 Eureka Server 统计到有大量的 Eureka Client 没有上送心跳,则认为可能为网络异常,进入自我保护机制,不再剔除没有上送心跳的客户端
52
+
53
+ 6、当 Eureka Client 心跳请求恢复正常之后,Eureka Server 自动退出自我保护模式
54
+
55
+ 7、Eureka Client 定时从注册中心获取服务注册表,并且将获取到的信息缓存到本地
56
+
57
+ 8、服务调用时,Eureka Client 会先从本地缓存找寻调取的服务。如果获取不到,先从注册中心刷新注册表,再同步到本地缓存
58
+
59
+ 9、Eureka Client 获取到目标服务器信息,发起服务调用
60
+
61
+ 10、Eureka Client 程序关闭时向 Eureka Server 发送取消请求,Eureka Server 将实例从注册表中删除
62
+
63
+ ## Eureka 和 ZooKeeper 的区别 ⭐
64
+
65
+ * C (Consistency) 强一致性
66
+ * A(Availability) 可用性
67
+ * P (Partition tolerance) 分区容错性
68
+
69
+ Zookeeper保证的是CP,Eureka保证的是AP。
70
+
71
+ ** Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整 个注册服务瘫痪**
72
+
33
73
### 负载均衡之 Ribbon
34
74
35
75
Ribbon 是一个客户端/进程内负载均衡器,** 运行在消费者端** 。
@@ -89,6 +129,10 @@ public News getHystrixNews(@PathVariable("id") int id) {
89
129
}
90
130
```
91
131
132
+ ## 服务熔断原理
133
+
134
+ hystrix会监控微服务之间调用的状况,当失败的调用到一定阀值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand 。 是通过spring 的 AOP 功能实现的 HystrixCommand 注解的方法是一个切点,有一个对方法增强的类,对他增强,如果出现失败就中断这个方法的调用,返回失败。
135
+
92
136
## 微服务网关——Zuul
93
137
94
138
ZUUL 是为了实现动态路由、监视、弹性和安全性而构建的。** 就是这样的一个对于消费者的统一入口。**
@@ -180,3 +224,4 @@ zuul: ignore-patterns:**/auto/**
180
224
你可以简单理解为 ` Spring Cloud Bus ` 的作用就是** 管理和广播分布式系统中的消息** ,也就是消息引擎系统中的广播模式。当然作为 ** 消息总线** 的 ` Spring Cloud Bus ` 可以做很多事而不仅仅是客户端的配置刷新功能。
181
225
182
226
而拥有了 ` Spring Cloud Bus ` 之后,我们只需要创建一个简单的请求,并且加上 ` @ResfreshScope ` 注解就能进行配置的动态修改了 。
227
+
0 commit comments