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
328spring 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
4166Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。
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
7196Feign是受到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
172197Spring Cloud Bus 就像个分布式执行器,用于扩展的 Spring Boot 应用程序的配置文件,但也可以用作应用程序之间的通信通道。
173198
@@ -177,16 +202,16 @@ Spring Cloud Bus一般是配合Spring Cloud Config做配置中心的
177202
178203Spring 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
187212springcloud config实时刷新采用 `SpringCloud Bus `消息总线
188213
189- #### 20. ** Eureka 和zookeeper都可以提供服务注册与发现的功能,两者的区别**
214+ #### 19 . Eureka 和zookeeper都可以提供服务注册与发现的功能,两者的区别
190215
191216Zookeeper 保证了CP (C :一致性,P :分区容错性),Eureka 保证了AP (A :高可用,P :分区容错)
1922171 、Zookeeper ---- - 当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用的。也就是说服务注册功能对高可用性要求比较高,但是zk会出现这样的一种情况,当master节点因为网络故障与其他节点失去联系时,剩余的节点会重新选leader。问题在于,选取leader的时间过长(30 ~ 120s),且选取期间zk集群都不可用,这样就会导致选取期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务最终恢复,但是漫长的选择时间导致的注册长期不可用是不能容忍的
@@ -202,4 +227,4 @@ https://blog.csdn.net/qq_39827935/article/details/96282405
202227
203228https: // 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