springCloud组件详细解析

摘要:
使用Nginx的上游设置Zuul集群------拦截Nginx位置并转发到upstream。Hystri断路器是一种微服务弹簧云技术,可以有效防止微服务问题导致的其他微服务雪崩。Springcloudbus:服务消息总线。Spring cloudconfig:分为ConfigServer和ConfigClient。

1 springcloud有哪些组件?

  •  Eureka 服务注册中心
  •  Ribbon 负载均衡
  •  Zuul 网关
  •  Fegin 客户端Web
  •  Hsytri 熔断器
  •  Bus 消息总线
  •  Config 统一配置中心

2 什么是自我保护模式

 springCould的服务注册中心会监控微服务的心跳。如果检测到心跳,那么这个时候服务注册中心进入自我保护模式。等待到微服务恢复心跳,自动退出自我保护模式。

3、Eureka和zookeeper有什么区别

  Eureka:

  •    服务某一节点挂点后无需从新选举。
  •    保证AP模式。

 Zoomkeeper:

  •    服务某一节点挂点后,需要重新选举(具体怎么选举,自行百度),并且期间服务瘫痪不可用。
  •    保证CP模式

注意:

C:一致性。

A:可用性

P:分区容错性

4、discoverclient有什么作用?

  •    discoverclient根据服务名称从服务注册中心获取服务的信息。
  •    其中discoverClient也是Ribbon实现负载均衡的底层原理实现方法。

5 zuul什么是网关?

  zuul网关是统一接收、处理微服务收到的请求,转发到具体的服务


6 zuul的作用?

 统一管理微服务请求、权限控制、负载均衡、路由转发、监控等作用。


7 zuul和过滤器的区别?

  •   zuul:统一管理微服务的请求,权限控制、负载均衡、路由转发等作用。
  •   过滤器:针对于单服务而言拦截的服务请求等。


8、zuul和nginx的区别

  •    zuul:使用java语言编写,作用springCloud的微服务网关,实现负载均衡等。
  •    nginx:使用C语言编写,实现客户端的请求进行反向代理,请求转发、负载均衡。


9 zuulFilter的常用方法?

  •   run:拦截器的具体实现逻辑。
  •   shouldFilter:过滤器是否有效。
  •   filterOrder:过滤器的执行顺序。
  •   filterType:过滤器拦截位置。

10 zuul如何实现动态路由?

  利用path拦截请求,再根据服务的id(ServerId)到服务注册中心查找服务转发列表。


11 zuul网关如何搭建集群?

   使用Nginx的UpStream设置Zuul集群-----》通过Nginx的location拦截请并转发到upstream。zuul的默认负载均衡机制是轮循机制。

12 ribbon和nginx的区别?

  •    Nginx:拦截客户端的请求,并且通过反向代理,实现负载均衡。其负载均衡通过upstream配置进行转发。
  •    Ribbon:Ribbon是客户端负载均衡,从注册中心读取目标服务器信息,然后客户端采用轮询策略对服务直接访问,全程在客户端操作。

13 ribbon底层原理?--discoverclient

     底层原理是通过discoverClient从服务注册中心读,通过服务id(serverId)找到目标服务信息,对请求接口进行计数。再通过取模(%),达到负载均衡的轮循机制。(默认负载均衡是轮循)

14 Hystri断路器是什么?

   Hystri断路器就是针对微服务出现问题,有效的防止引起其他微服务的雪崩现象的一种微服务spring cloud技术。

  
15 Hystri防止服务雪崩的方式?

  •    服务降级:重写HysteiCommand的getFallback方法,当执行Hystri的run或construct方法出错,执行的getFallback方法。
  •    服务容错:在服务降级的基础上更具体的一种方式。在一定时间内计算请求失败数量(requestVolumeThreshold)或者错误率达到设定的阈值,直接调用fallBack方法。
  •    服务隔离:服务隔离就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式。
  •    服务监控:服务隔离就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式。

15 谈谈Hystri服务降级,熔断,隔离,监控?

    如上。

16 Hystri服务降级底层实现原理?

     重写HystriCommand的getFallback方法,当执行Hystri的run或construct方法出错,执行的getFallback方法


17 Hystri的服务熔断底层原理?

     是服务降级的基础上更直接的保护方法。当在一定时间范围内,请求达到一定值(设定的requestVolumnThroseld值)或发生的错误率 达到设定的值,直接走fallback方法。


18 服务隔离是使用线程池来实现的?

19 ribbon和fegin的区别?(springcloud调用接口的两种方式)

    Ribbon:需要自行实现http的编码。

    Fegin:无需实现http编码,只需要在接口上添加@Fegin注解,和在抽象方法上加注解@Post或者@Get请求方式即可。


20 spring clous bus是什么?21 springcloud config是什么?server,client两个部分。

   spring cloud bus:服务消息总线。用来扩展配置spring boot的应用程序配置文件,也可以用来是实现应用之间的通信,但是必须通过MQ来搭配实现。

   spring cloud config:分为Config Server和Config Client两部分。Config Server负责读取配置文件,并且暴露Http API接口,Config Client通过调用Config Server的接口来读取配置文件

  •     Config能够管理所有微服务的配置文件。
  •     集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作

免责声明:文章转载自《springCloud组件详细解析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MS17-010(永恒之蓝)远程溢出漏洞FreeMarker语法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

GitLab搭建详细过程

一、前提 系统:Centos 6.5 软件版本:gitlab-7.8.4 Selinux:关闭 防火墙规则:先清空(搭建好了后续自己添加相关放行规则) 二、yum源配置和相关依赖包 1.添加epel源和PUIAS_6_computational源 1 # yum -y install epel-release 创建该文件并添加以下内容: 1...

ActiveMQ之JMS及保证消息的可靠性<持久化、事务、签收>(三)

1.JAVAEE 是一套使用Java 进行企业级开发的13 个核心规范工业标准 , 包括:  JDBC  数据库连接  JNDI  Java的命名和目录接口  EJB   Enterprise java bean  RMI   远程方法调用    一般使用TCP/IP 协议  Java IDL    接口定义语言  JSP      Servlet   X...

spring相关的问题和原因分析

1、Bean的初始化顺序导致的项目启动失败 现象:shua-video项目中引用了配置中台bp-config的SDK,然后在mq消息监听类中使用。如上使用方式,在waterService中引用了bp-config。在测试环境mq中没有消息消费时项目能正常启动,但在线上有消息消费时项目启动报错,提示找不到bp-config类。 @Component @Slf...

thinkphp 5 整理笔记

初始化操作initialize 1 //会优先执行该函数 2 public functioninitialize() 3 { 4 echo 'initialize'; 5 } 前置操作 1 protected $beforeActionList =[ 2 //只执行test的时候会执行test1函数 3 //'tes...

ASP.NET中进行消息处理(MSMQ) 二

      在我上一篇文章《ASP.NET中进行消息处理(MSMQ)一》里对MSMQ做了个通俗的介绍,最后以发送普通文本消息和复杂的对象消息为例介绍了消息队列的使用。 本文在此基础上继续介绍MSMQ的相关知识点,最后还是通过一个示例程序来分析MSMQ在实际项目开发中的应用。 建议:如果你对MSMQ不够了解,在你阅读本文前请先阅读第一部分:《ASP.NET中...

推荐:Java性能优化系列集锦

Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难。随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了。现代JVM持续演进,内建了更为成熟的优化技术、运行时技术和垃圾收集器。与此同时,底层的硬件平台和操作系统也在演化。 目录: 一、Java性能优化系列之一--设计优化 二、J...