码迷,mamicode.com
首页 > 编程语言 > 详细

什么是SpringCloud?

时间:2020-04-26 19:18:43      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:framework   网关   告诉   lin   ase   用户   开源   异常   图片   

一、什么是SpringCloud?

二、各组件介绍

 

 


 

一、什么是SpringCloud?

SpringCloud是实现微服务结构的一种方式它将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等功能;协调分布式环境中各个系统,为各类服务提供模板性配置。其主要涉及的组件包括:

Eureka:注册中心
Zuul、Gateway:服务网关
Ribbon:负载均衡
Feign:服务调用
Hystrix或Resilience4j:熔断器
技术图片

 

 

二、各组件介绍
1.Eureka注册中心 
1.1.Eureka做什么?
Eureka就好比是滴滴,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。
同时,服务提供方与Eureka之间通过 “心跳” 机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。这就实现了服务的自动注册、发现、状态监控。
1.2.原理图 
基本架构:
技术图片
Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址
提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态 
1.3.
坐标:
1 <dependency> 
2       <groupId>org.springframework.cloud</groupId> 
3       <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 
4 </dependency>

启动类:

1 //声明当前应用为eureka服务 
2 @EnableEurekaServer 
3 @SpringBootApplication 
4 public class EurekaServerApplication {
5      public static void main(String[] args) { 
6          SpringApplication.run(EurekaServerApplication.class); 
7      } 
8 }
客户端注册服务到集群 :
1 eureka: 
2     client: 
3         service-url: # EurekaServer地址,多个地址以‘,‘隔开 
4         defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka

 

2.负载均衡Ribbon 
2.1.负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
2.2.负载均衡要干什么事情?

服务端负载

需要做三个事情:

1.接收请求

2.选择服务器地址

3.转发/执行请求(转发还是执行可以参考网关)

客户端负载

1.选择服务器地址

2.发请求

 

负载均衡就是分发请求流量到不同的服务器。
负载均衡一般分为两种:
1、 服务器端负载均衡(nginx)

技术图片

 

2、 客户端负载均衡(Ribbon)

技术图片

2.3、负载均衡架构

技术图片

 

 2.4.开启负载均衡 

因为Eureka中已经集成了Ribbon,所以我们无需引入新的依赖。
在RestTemplate的配置方法上添加 @LoadBalanced 注解:
1 @Bean 
2 @LoadBalanced public RestTemplate restTemplate() { 
3       return new RestTemplate(); 
4 }

 

3.熔断器Hystrix

 3.1.Hystrix的作用是什么呢?具体要保护什么呢?
        Hystrix是Netflflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。
        在高并发领域,在分布式系统中,可能因为一个小小的功能扛不住压力,宕机了,导致其他服务也跟随宕机,最终导致整个系统宕机,所以在SpringCloud中采用Hystrix进行处理。
        微服务I 发生异常,请求阻塞,用户请求就不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞。服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。
         Hystrix解决雪崩问题的手段主要是服务降级,包括:
         线程隔离
         服务熔断
 
3.2.线程隔离
        Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队,加速失败判定时间。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务。
       用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理,什么是服务降级?
服务降级:优先保证核心服务,而非核心服务不可用或弱可用。
       用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息) 。服务降级虽然会导致请求失败,但是不会导致阻塞,而且最多会影响这个依赖服务对应的线程池中的资源,对其它服务没有响应。
      触发Hystrix服务降级的情况:线程池已满、请求超时
 
3.3.服务熔断
熔断原理
       在服务熔断中,使用的熔断器,也叫断路器,其英文单词为:Circuit Breaker
熔断机制与家里使用的电路熔断原理类似;当如果电路发生短路的时候能立刻熔断电路,避免发生灾难。在分布式系统中应用服务熔断后;服务调用方可以自己进行判断哪些服务反应慢或存在大量超时,可以针对这些服务进行主动熔断,防止整个系统被拖垮。
       Hystrix的服务熔断机制,可以实现弹性容错;当服务请求情况好转之后,可以自动重连。通过断路的方式,将后续请求直接拒绝,一段时间(默认5秒)之后允许部分请求通过,如果调用成功则回到断路器关闭状态,否则继续打开,拒绝请求的服务。
 
 4.Feign
 
 
 
 
5.Spring Cloud Gateway网关
 
 
 
 

 

什么是SpringCloud?

标签:framework   网关   告诉   lin   ase   用户   开源   异常   图片   

原文地址:https://www.cnblogs.com/aaaazzzz/p/12781435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!