- 什么是cap理论
一致性(Consistency):写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点上,从任意结点读取到的数据都是最新的状态,如果读取不到最新的数据就返回查询失败。
可用性(Availability):用户发出任何请求,都会得到响应结果,且不会出现响应失败和超时,不保证每次响应都是最新的数据。
分区容错性(Partitiontolerance):一个分布式系统由多个节点组成,部分节点坏了,整个系统还可以保证正常访问,不会挂掉。
CPA理论表明:在一个系统中,CAP不可能同时满足,只可能最多同时满足两条。
对于分布式系统,容错性是一定会要的,要么保证一致性牺牲可用性,要么保证可用性牺牲一致性。
什么是springcloud
Spring Cloud并不是一项技术,它是一系列技术的集合。Spring Cloud包含了很多技术,每一项技术都是一种微服务开发过程中遇到的问题的一种解决方案。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。springcloud核心的组件有哪些
1.Spring Cloud Eureka:Eureka分为Eureka Server和Eureka Client,每个微服务都是一个Eureka Client。各个服务启动时,Eureka Client都会将服务注册到EurekaServer并被Eureka Server通过心跳监控,并且EurekaClient还可以反过来从Eureka Server拉取注册表,从而知道其他服务的地址信息以便调用。
2.Spring Cloud Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务,在网关上可以做鉴权、日志等操作,保护业务服务。
3.Spring Cloud Ribbon:主要功能是提供客户端的软件负载均衡算法。
4.Spring Cloud Feign:基于Ribbon,根据注解和选择的机器,拼接请求URL地址,发起请求进行服务间调用。
5.Spring Cloud Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题,并且提供服务降级、服务熔断、服务限流等功能。
6.Spring Cloud Config:分布式统一配置管理,统一管理各个微服务的配置文件。什么是hystrix
Hystrix是一个容错组件,主要提供服务降级、服务熔断、服务限流。
1.服务降级:当访问量激增服务器扛不住压力时,每次的访问都会超时处于阻塞状态,并且有可能导致其他服务也处于阻塞状态。为了防止这种情况发生,Hystrix可以对服务进行降级操作。事先对可能需要降级的方法加上@HystrixCommand注解,并添加超时时间参数,同时指定一个fallback的兜底方法。当调用方法超时,会停止继续调用该方法,直接返回fallback兜底方法,防止服务阻塞,提高用户体验。
2.服务熔断:在一段时间内,服务降级的数量超过实现配置的数量时,会触发服务熔断,服务熔断会在用户调用该方法时,直接返回fallback兜底方法,相当于保险丝熔断。熔断主要有三个参数:快照时间窗、请求总数阀值、错误百分比阀值。
3.服务限流:限制服务一秒钟处理一定数量的请求,防止秒杀等高并发操作使服务崩溃。
熔断开关有三个状态,打开,半开,关闭。
假设快照时间窗为10s、请求总数阀值为20、错误百分比阀值为60则在窗口时间(I0S)内,有超过0次请求,且超过0%的清求异常,会打开熔断开关。下一个窗口时间期间所有的清求都会直接进行降级处理,不会等待。当窗口期过去时,熔断开关会置为半开状态,释放一次请求到原来的处理逻辑上,如果此次请求成功,则会关闭熔断开关。如果还是失败,则会重新打开熔断开关。什么是eureka的自我保护机制
正常默认情况下,如果注册中心90s之内没有收到客户端的心跳,就会将这个客户端从注册中心剔除。如果在15分钟内,收到心跳的服务低于总的85%,则eureka会开启自我保护模式,不会剔除这些异常服务。属于AP高可用。
自我保护机制的原由就是防止注册中心网络异常而客户端正常的情况。当收不到大部分客户端的心跳时,注册中心会认为是自己的网络出现问题。