Skip to content

Commit 43165c6

Browse files
Update SpringCloud.md
1 parent 7796f4d commit 43165c6

File tree

1 file changed

+43
-18
lines changed

1 file changed

+43
-18
lines changed

SpringCloud.md

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,33 @@
1-
#### 1.**什么是 spring cloud?**
1+
## Spring Cloud
2+
3+
4+
* [1.什么是 Spring Cloud?](#1什么是-spring-cloud)
5+
* [2.使用Spring Cloud有什么优势?](#2使用spring-cloud有什么优势)
6+
* [3.服务注册和发现是什么意思?Spring Cloud如何实现?](#3服务注册和发现是什么意思spring-cloud如何实现)
7+
* [4.Spring Cloud由哪些组件组成?](#4spring-cloud由哪些组件组成)
8+
* [5.什么是Hystrix?它如何实现容错?](#5什么是hystrix它如何实现容错)
9+
* [6.什么是Hystrix断路器?我们需要它吗?](#6什么是hystrix断路器我们需要它吗)
10+
* [7.什么是Netflix Feign?它的优点是什么?](#7什么是netflix-feign它的优点是什么)
11+
* [8.Eureka的工作原理?](#8eureka的工作原理)
12+
* [9.说说Eureka的自我保护机制?](#9说说eureka的自我保护机制)
13+
* [10.什么是zuul?](#10什么是zuul)
14+
* [11.zuul的工作流程?](#11zuul的工作流程)
15+
* [12.什么是服务熔断?什么是服务降级?](#12什么是服务熔断什么是服务降级)
16+
* [13.什么是服务雪崩效应?](#13什么是服务雪崩效应)
17+
* [14.ZuulFilter有哪些常用方法?](#14zuulfilter有哪些常用方法)
18+
* [15.如何实现动态Zuul网关路由转发?](#15如何实现动态zuul网关路由转发)
19+
* [16.什么是 Spring Cloud Bus?](#16什么是-spring-cloud-bus)
20+
* [17.Spring Cloud Bus 原理?](#17spring-cloud-bus-原理)
21+
* [18.SpringCloud Config可以实现实时刷新吗?](#18springcloud-config可以实现实时刷新吗)
22+
* [19.Eureka和zookeeper都可以提供服务注册与发现的功能,两者的区别](#19eureka和zookeeper都可以提供服务注册与发现的功能两者的区别)
23+
* [参考链接](#参考链接)
24+
25+
26+
#### 1.什么是 Spring Cloud?
227

328
spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。
429

5-
#### 2.**使用Spring Cloud有什么优势?**
30+
#### 2.使用Spring Cloud有什么优势?
631

732
使用Spring Boot开发分布式微服务时,我们面临以下问题
833

@@ -13,7 +38,7 @@ spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发
1338
- 性能-问题 由于各种运营开销导致的性能问题。
1439
- 部署复杂性-Devops技能的要求。
1540

16-
#### 3.**服务注册和发现是什么意思?Spring Cloud如何实现?**
41+
#### 3.服务注册和发现是什么意思?Spring Cloud如何实现?
1742

1843
当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。
1944

@@ -36,7 +61,7 @@ spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发
3661
![0e9c7b73ca58fcbd7ee8f5b7c3fe450.png](http://img1.sycdn.imooc.com/5f309a610001d87510410539.jpg)
3762

3863

39-
#### 5.**什么是Hystrix?它如何实现容错?**
64+
#### 5.什么是Hystrix?它如何实现容错?
4065

4166
Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。
4267

@@ -56,7 +81,7 @@ Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三
5681

5782
现在假设由于某种原因,employee-producer公开的服务会抛出异常。我们在这种情况下使用Hystrix定义了一个回退方法。这种后备方法应该具有与公开服务相同的返回类型。如果暴露服务中出现异常,则回退方法将返回一些值。
5883

59-
#### 6.**什么是Hystrix断路器?我们需要它吗?**
84+
#### 6.什么是Hystrix断路器?我们需要它吗?
6085

6186
由于某些原因,employee-consumer公开服务会引发异常。在这种情况下使用Hystrix我们定义了一个回退方法。如果在公开服务中发生异常,则回退方法返回一些默认值。
6287

@@ -66,7 +91,7 @@ Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三
6691

6792
![img](https://img-blog.csdn.net/20180922211948793?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21vYWt1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
6893

69-
#### 7.**什么是Netflix Feign?它的优点是什么?**
94+
#### 7.什么是Netflix Feign?它的优点是什么?
7095

7196
Feign是受到Retrofit,JAXRS-2.0和WebSocket启发的java客户端联编程序。Feign的第一个目标是将约束分母的复杂性统一到http apis,而不考虑其稳定性。在employee-consumer的例子中,我们使用了employee-producer使用REST模板公开的REST服务。
7297

@@ -108,7 +133,7 @@ public void getEmployee() throws RestClientException, IOException {
108133

109134
之前的代码,有像NullPointer这样的例外的机会,并不是最优的。我们将看到如何使用Netflix Feign使呼叫变得更加轻松和清洁。如果Netflix Ribbon依赖关系也在类路径中,那么Feign默认也会负责负载平衡。
110135

111-
#### #### 8.Eureka的工作原理?
136+
#### 8.Eureka的工作原理?
112137

113138
`Eureka`:服务注册中心(可以是一个集群),对外暴露自己的地址
114139
`提供者`:启动后向Eureka注册自己信息(地址,提供什么服务)
@@ -139,21 +164,21 @@ Zuul的应用场景: 对外暴露,权限校验,服务聚合,日志审计
139164
实际上,API网关将自己注册到Eureka服务注册中心上,也会从注册中心获取所有服务以及它们的实例清单。在Eureka的帮助下,API网关已经维护了系统中所有`serviceId与实例地址的映射关系`。当有外部请求到达API网关的时候,根据请求的URL找到最匹配的path,API网关就可以知道要将该请求"路由"到哪个具体的serviceId上去。 最终通过`Ribbon的负载均衡策略`实现请求的路由。
140165

141166

142-
#### 13.什么是服务熔断?什么是服务降级?
167+
#### 12.什么是服务熔断?什么是服务降级?
143168

144-
**服务熔断:**
169+
服务熔断:
145170
熔断机制是应对`雪崩效应`的一种微服务`链路保护机制`。
146171
当某个微服务不可用或者响应时间太长时,会进行服务降级,进而熔断该节点微服务的调用,快速返回“错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。
147172
SpringCloud框架里熔断机制通过`Hystrix`实现,Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内调用20次,如果失败,就会启动熔断机制。
148-
**服务降级:**
173+
服务降级:
149174
服务降级,一般是从整体负荷考虑。就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的`fallback回调`,返回一个缺省值。
150175

151-
#### 14.什么是服务雪崩效应?
176+
#### 13.什么是服务雪崩效应?
152177

153178
雪崩效应是在大型互联网项目中,当某个服务发生宕机时,调用这个服务的其他服务也会发生宕机,大型项目的微服务之间的调用是互通的,这样就会将服务的不可用逐步扩大到各个其他服务中,从而使整个项目的服务宕机崩溃。
154179

155180

156-
#### 15.ZuulFilter有哪些常用方法?
181+
#### 14.ZuulFilter有哪些常用方法?
157182

158183
`Run()`:过滤器的具体业务逻辑
159184

@@ -163,11 +188,11 @@ Zuul的应用场景: 对外暴露,权限校验,服务聚合,日志审计
163188

164189
`filterType()`:过滤器拦截位置
165190

166-
#### 16.如何实现动态Zuul网关路由转发?
191+
#### 15.如何实现动态Zuul网关路由转发?
167192

168193
通过`path`配置拦截请求,通过 `Serviceld`到配置中心获取转发的服务列表,zuul内部使用 `Ribbon`实现本地负载均衡和转发。
169194

170-
#### 17.什么是 Spring Cloud Bus?
195+
#### 16.什么是 Spring Cloud Bus?
171196

172197
Spring Cloud Bus就像个分布式执行器,用于扩展的 Spring Boot应用程序的配置文件,但也可以用作应用程序之间的通信通道。
173198

@@ -177,16 +202,16 @@ Spring Cloud Bus一般是配合Spring Cloud Config做配置中心的
177202

178203
Spring Cloud config实时刷新也必须采用 SpringCloud Bus消息总线
179204

180-
#### 18.Spring Cloud Bus 原理?
205+
#### 17.Spring Cloud Bus 原理?
181206

182207
发送端(endpoint)构造事件event,将其publish到context上下文中(spring cloud bus有一个父上下文,bootstrap),然后将事件发送到channel中(json串message),接收端从channel中获取到message,将message转为事件event,然后将event事件publish到context上下文中,最后接收端(Listener)收到event,调用服务进行处理。
183208
整个流程中,只有发送/接收端从context上下文中取事件和发送事件是需要我们在代码中明确写出来的,其它部分都由框架封装完成。
184209

185-
#### 19.SpringCloud Config可以实现实时刷新吗?
210+
#### 18.SpringCloud Config可以实现实时刷新吗?
186211

187212
springcloud config实时刷新采用 `SpringCloud Bus`消息总线
188213

189-
#### 20.**Eureka和zookeeper都可以提供服务注册与发现的功能,两者的区别**
214+
#### 19.Eureka和zookeeper都可以提供服务注册与发现的功能,两者的区别
190215

191216
Zookeeper保证了CP(C:一致性,P:分区容错性),Eureka保证了AP(A:高可用,P:分区容错)
192217
1Zookeeper-----当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用的。也就是说服务注册功能对高可用性要求比较高,但是zk会出现这样的一种情况,当master节点因为网络故障与其他节点失去联系时,剩余的节点会重新选leader。问题在于,选取leader的时间过长(30~120s),且选取期间zk集群都不可用,这样就会导致选取期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务最终恢复,但是漫长的选择时间导致的注册长期不可用是不能容忍的
@@ -202,4 +227,4 @@ https://blog.csdn.net/qq_39827935/article/details/96282405
202227

203228
https://blog.csdn.net/moakun/article/details/82817757
204229

205-
https://www.imooc.com/article/309292
230+
https://www.imooc.com/article/309292

0 commit comments

Comments
 (0)