Skip to content

Commit ab2a658

Browse files
authored
Update Spring Cloud.md
1 parent e4a79e7 commit ab2a658

File tree

1 file changed

+48
-3
lines changed

1 file changed

+48
-3
lines changed

docs/Spring Cloud.md

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3575
Ribbon 是一个客户端/进程内负载均衡器,**运行在消费者端**
@@ -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

94138
ZUUL 是为了实现动态路由、监视、弹性和安全性而构建的。**就是这样的一个对于消费者的统一入口。**
@@ -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

Comments
 (0)