Spring-Cloud知识整理

什么是SpringCloud什么是微服务

一说起来springcloud第一个想到的就是分布式,微服务,那什么是微服务呢,微服务就是一个构件应用的架构方案,通俗的讲,就是说我们以前开发程序,大多都是单体项目,利用多台服务器部署多个应用程序来实现高可用,高并发等需求。而微服务的思想就是说把我们之前单体项目中的每一个模块,单独的拉出来成为一个可独立运行的服务,这意味着各项服务在工作(和出现故障)时不会相互影响。这就是所谓的微服务。
在这里插入图片描述
微服务的概念是由外国技术大佬提出来的,并在之后受到了广泛的认可,可以说微服务的思想提出之后改变了我们应用程序的架构模式。
当然所有的事物都是有双面性的,微服务的出现很大程度的解决了应用程序之中的耦合,提高了应用的可扩展性等等。但是显然服务多了之后,管理与部署的问题就随之而来了,这意味着搭建一个微服务架构,你需要更多的服务器,投入更多的资源去管理维护。显而易见,这并不是所有人都能接受的条件。
在这里插入图片描述
Spring-Cloud为我们提供了微服务架构一站式的解决方案,其中引入了很多组件让程序开发者们能够简单便捷的进行微服务系统的开发。注册中心负载均衡远程调用熔断器配置中心消息总线消息驱动、链路监控等。

一、注册中心(Eureka)

Eureka是基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Client,它使与服务的交互更加容易。客户端还具有一个内置的负载均衡器,可以执行基本的循环负载均衡。在Netflix,更复杂的负载均衡器将Eureka包装起来,以基于流量,资源使用,错误条件等多种因素提供加权负载均衡,以提供出色的弹性。

1.为什么使用Eureka

Eureka是netflix所提供的一款注册中心组件,其他还有,Consul,Apache Zookeeper,相对于后两者,前者是基于AP实现的

在这里插入图片描述

  • C(Consistency):一致性,即数据一致性,特指分布式系统中的数据一致性。
  • A(Availability):可用性,即服务的高可用,特指分布式系统中服务的高可用,某个服务瘫痪不影响整个分布式系统的正常运行。
  • P(Partition Tolerance):分区容错性(也有的叫分区耐受性),即网络故障,特指分布式系统中服务之间出现了网络故障,整个分布式系统仍然保持可用性和一致性。

eureka利用自我保护机制来实现服务的高可用性质,意思就是说在Eureka中注册过的服务,当出现网络波动,或者其他原因暂时不可用时,Eureka不会立即将此服务移除注册中心,而是在等待一段时间后如果还是不可用才会将服务剔除。当然这就不能实现数据源的一致性了,因为服务不可用时,返回的都是降级或者熔断过的数据。不剔除任何可能是正常的服务。而后两者则相反。当然没一种技术的存在都有他存在的里有,我们可以再实际开发环境中,根据不同的业务需求来选用。

二、负载均衡(Ribbon)

什么是负载均衡?

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。通俗的讲,就是说在我们微服务系统中,客户端会发送来很多请求,我们希望的是这些请求能够均匀分散到每一个微服务模块中,避免某一服务模块因为请求数太大而出现问题。我们希望服务们能共同分担请求,这就是负载均衡,而具体怎么分担,就是负载均衡算法了。
Ribbon中默认给我们提供了7种策略:
在这里插入图片描述

三、远程调用(OpenFegin)

OpenFegin解决了我们服务之间相互调用的问题。分布式系统在部署之后,我们的微服务模块会分散到不同的服务器中来解决高可用问题,就算某一台服务器突然挂了,还可以去其他服务器上调用相应的模块,在我们没使用Fegin(一下简称Fegin)之前远程调用我们可能会用HttpClient、RestTemplate等等。
为什么要用Fegin?
和HTTpClient和RestTemplate相比,Fegin的使用方式更加简便快捷,在Springboot中我们只需要导入相关包,简单几行代码和配置就能实现服务之间的调用,而且是基于接口编程的,更利于以后的管理与拓展。

四、熔断器(Hystrix)

什么是熔断?

可以想象一下,在我们生活中,如果某一地方电压过大,就会触发断路器,对这片区域进行战略式的停电,这是为了防止,因为电压过大导致线路损坏,或电压器爆炸等一系列严重问题。而在我们分布式系统中熔断这个概念与之相同。当我们客户端请求某一个服务,而这个服务发生了故障无法及时响应。在当是一个高并发的环境下,很多很多的请求进入了进入了这个有故障的服务中,因为无法及时的处理就会导致服务器CPU在处理这一块时要占用很多内存且无法及时释放,从而导致整个服务器宕机。这对我们来说是灾难性的,就好比电压过大导致线路损坏一样。而Hystrix就是专门为了解决这个问题。所以我们叫它熔断器。
在分布式系统中熔断器是怎么工作的?
首先在我们微服务系统中有几个概念需要知道,服务降级,服务熔断,服务限流。

  • 服务降级,就是降低优先级,当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作 。服务降级
  • 熔断机制是应对雪崩效应的一种微服务链路保护机制, 当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回”错误”的响应信息。当检测到该节点微服务响应正常后恢复调用链路。
    服务限流其实是指当系统资源不够,不足以应对大量请求,即系统资源与访问量出现矛盾的时候,我们为了保证有限的资源能够正常服务,因此对系统按照预设的规则进行流量限制或功能限制的一种方法。
  • 服务限流其实是指当系统资源不够,不足以应对大量请求,即系统资源与访问量出现矛盾的时候,我们为了保证有限的资源能够正常服务,因此对系统按照预设的规则进行流量限制或功能限制的一种方法。服务限流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值