springCloud是一系列框架的有序集合,把其他公司中微服务架构常用组件整合起来,并使用springBoot简化开发,配置
- 微服务技术将项目的各个模块拆分为可独立运行,部署测试的架构设计风格,这些小型服务都在独自的进行中运行,服务之间一般通过Http的RestFul api在进行通讯
- 分布式: 一个业务分拆多个子业务,部署在不同的服务器上
- 集群:同一个业务,部署在多个服务器上。比如之前做电商网站搭的redis集群以及solr集群都是属于将redis服务器提供的缓存服务以及solr服务器提供的搜索服务部署在多个服务器上以提高系统性能、并发量解决海量存储问题。
当我们开始一个项目的时候,我们通常在属性配置文件中进行所有的配置,随着越来越多服务的开发和部署,添加和修改这些属性变得更加复杂,有些服务的性能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理
- springCloud和Dubbo都是实现微服务有效的工具
- dubbo只是实现了服务治理,而springcloud覆盖了微服务架构之下的众多部件
- dubbo使用RPC通讯协议,SpringCloud使用RestFul风格进行完成通讯,dobbo效率高于springcloud
Ribbo是Netfix发布的负载均衡器,它有助于控制Http和TCP的客户端的行为,为Ribbon配置服务提供者地址后,Ribbo就可基于某种负载均衡算法,自动的帮助服务消费者区请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询,随机等。
Feign是一个声明式的Rest客户端,他用了基于接口的注解方式,很方便实现客户端配置(声明式接口,发起远程调用)
实现Feign的过程
- 在消费端引入open-feign依赖
- 编写Feign接口
接口上添加注解 @FeignClient,设置value属性为 服务提供者的 应用名称
编写调用接口,接口的声明规则 和 提供方接口保持一致
注入该接口对象,调用接口方法完成远程调用
- 在启动类添加 @EnableFeignClients 注解,开启Feign功能
-服务熔断机制是一种应对雪崩效应的一种微服务链路保护机制,当某个微服务不可用或者响应时间太长时,会进行服务降级,从而熔断该节点微服务的调用,快速返回错误信息,当检测到该节点调用响应正常的时候,恢复链路。
-服务降级:一般是从整体负荷考虑。就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的fallback回调,返回一个缺省值。这样做,虽然水平下降,但好歹可用,比直接挂掉强。
-springcloud里面,熔断机制是采用hystrix实现的,用于监控微服务调用情况,当失败的情况达到预定的阀值(5秒失败20次),会打开断路器,拒绝所以的请求,直到服务恢复正常为止。
- Hystrix是Netfix开源的一个延迟和容错库,用于隔离访问远程服务,第三方库,防止出现雪崩
@EnableHystrix:开启熔断
@HystrixCommand(fallbackMethod=”XXX”):声明一个失败回滚处理函数XXX,当被注解的方法执行超时(默认是1000毫秒),就会执行fallback函数,返回错误提示
-雪崩:在微服务中,往往一个请求可能会调用多个微服务的接口才可以实现,如果一个微服务出现异常,就会出现阻塞,用户请求就得不到响应,这个线程就不会释放,服务器所支持的线程是有限的,请求一直出现阻塞,会导致服务器资源耗尽,从而导致其他服务不可以用,从而形成雪崩(雪崩就是指一个服务失败,导致整条链路的服务都失败的情形)
-解决措施:
Hystrix解决雪崩的主要手段是服务降级:
隔离:线程池隔离,信息量隔离
降级:异常,超时
熔断
限流
触发Hystrix服务降级的条件:
Zookepper 保证了CP (C:一致性,P:分区容错性)
Eureke 保证了AP (A:高可用,P:分区容错性)
一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值(等同于所有的节点访问同一份最新的数据副本)
可用性(A):保证每一个请求不管成功或者失败都有响应
分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续操作
Eureka:Eureka各个节点都是平等的,一个节点挂掉了,剩下的节点任然可以提供注册和查询服务,只要有一台Eureka存在,就可以保证注册服务可用,Eureke还有保护机制,30秒发送一次心跳包,如果Eureka没有在规定时间内接受到85%的正常心跳包,就会就把清除过期的服务
zookeeper:zookeeper当一个节点挂了,剩下的节点会重新选取新的leader,选举的时间过长,这这个期间集群不可用,会导致整个注册服务瘫痪
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43296313/article/details/123047467
内容来源于网络,如有侵权,请联系作者删除!