@@ -6,15 +6,15 @@ Spring Cloud就是微服务系统架构的一站式解决方案,在平时我
66
77** 服务注册 Register** :
88
9- 当 Eureka 客户端(服务提供者)向 Eureka Server 注册时,它提供自身的 ** 元数据 ** ,比如IP地址、端口,运行状况指示符URL,主页等。
9+ 当 Eureka 客户端(服务提供者)向 Eureka Server 注册时,它存储该服务的信息 ,比如IP地址、端口,运行状况指示符URL,主页等。
1010
1111** 服务续约 Renew** :
1212
1313** Eureka 客户端会每隔30秒(默认情况下)发送一次心跳来续约** 。 通过续约来告知 Eureka Server 该 Eureka 客户仍然存在,没有出现问题。正常情况下,如果 Eureka Server 在90秒没有收到 Eureka 客户端的续约,它会将实例从其注册表中删除。
1414
1515** 获取注册列表信息 Fetch Registries** :
1616
17- Eureka 客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息如果与 Eureka 客户端的缓存信息不同,Eureka 客户端自动处理。 Eureka 客户端和 Eureka 服务器可以使用JSON / XML格式进行通讯。
17+ Eureka 客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。Eureka 客户端和 Eureka 服务器可以使用JSON / XML格式进行通讯。
1818
1919** 服务下线 Cancel** :
2020
@@ -26,10 +26,50 @@ Eureka 客户端在程序关闭时向 Eureka 服务器发送取消请求。发
2626
2727 ** 架构图** :
2828
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)
3030
3131 可以充当服务发现的组件有很多:Zookeeper ,Consul , Eureka 等。
3232
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+
3373### 负载均衡之 Ribbon
3474
3575Ribbon 是一个客户端/进程内负载均衡器,** 运行在消费者端** 。
@@ -89,6 +129,10 @@ public News getHystrixNews(@PathVariable("id") int id) {
89129}
90130```
91131
132+ ## 服务熔断原理
133+
134+ hystrix会监控微服务之间调用的状况,当失败的调用到一定阀值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand 。 是通过spring 的 AOP 功能实现的 HystrixCommand 注解的方法是一个切点,有一个对方法增强的类,对他增强,如果出现失败就中断这个方法的调用,返回失败。
135+
92136## 微服务网关——Zuul
93137
94138ZUUL 是为了实现动态路由、监视、弹性和安全性而构建的。** 就是这样的一个对于消费者的统一入口。**
@@ -180,3 +224,4 @@ zuul: ignore-patterns:**/auto/**
180224你可以简单理解为 ` Spring Cloud Bus ` 的作用就是** 管理和广播分布式系统中的消息** ,也就是消息引擎系统中的广播模式。当然作为 ** 消息总线** 的 ` Spring Cloud Bus ` 可以做很多事而不仅仅是客户端的配置刷新功能。
181225
182226而拥有了 ` Spring Cloud Bus ` 之后,我们只需要创建一个简单的请求,并且加上 ` @ResfreshScope ` 注解就能进行配置的动态修改了 。
227+
0 commit comments