持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
spring cloud :
什么是sprig cloud:
是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成
什么是单体架构:单体架构是一个归档包包含了应用所有功能的应用程序,称为单体应用。
什么是微服务:微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信。
什么是Eureka(服务注册与发现)
Eureka作为SpringCloud的服务注册功能服务器,他是服务注册中心,系统中的其他服务使用Eureka的客户端将其连接到Eureka Service中,并且保持心跳,这样工作人员可以通过Eureka Service来监控各个微服务是否运行正常。专门负责将这个服务的信息注册到Eureka Server中。说白了,就是告诉Eureka Server,自己在哪台机器上,监听着哪个端口。Eureka Server是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号
Eureka的自我保护机制:
默认情况下,如果Eureka Service在一定时间内没有接收到某个微服务的心跳(心跳间隔默认30s),Eureka Service会进入自我保护模式,在该模式下Eureka Service会保护服务注册表中的信息,不在删除注册表中的数据,当网络故障恢复后,Eureka Servic 节点会自动退出自我保护模式(默认下线90s)
getWay起到的作用:网关配置,对client端请求起到路由功能,对服务进行路由转发,把请求转发到具体后端服务上
什么是Spring Cloud Zuul(服务网关):
Zuul是对SpringCloud提供的成熟对的路由方案,他会根据请求的路径不同,网关会定位到指定的微服务,并代理请求到不同的微服务接口,他对外隐蔽了微服务的真正接口地址。三个重要概念:动态路由表,路由定位,反向代理
什么是Ribbon(负载均衡):
Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,基于如简单轮询,随即连接等规则去连接这些机器
@LoadBalanced注解的作用 : 开启客户端负载均衡
Hystrix (断路器、熔断器):
当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应 防止方法:使用服务的隔离机制(线程池方式和信号量方式)。)
Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性
服务降级:在高并发的情况下,防止用户一直等待,使用服务降级方式进行处理(返回友好的提示给客户端,fallback回调方法)。当服务不可用的时候(正在等待的时候、网络延迟、响应时间过长),客户端会处于一直等待的状态。显然一直等待是不合理的,所以我们应该给客户端返回一个友好的提示,使用fallback(回调方法)进行服务降级处理。
服务降级目的:为了提高用户体验(自定义消息返回给客户端),防止服务雪崩效应。比如:连接超时、网络延迟、服务器响应时间过长等情况。
什么是服务隔离:指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖。当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其它模块,不影响整体的系统服务
服务隔离:每个服务接口之间互不影响,服务隔离有2种实现方式,线程池方式、信号量。
1.线程池方式:相当于每个接口(服务)都有自己独立的线程池,不同的线程池之间互不影响,能够实现服务接口隔离。缺点:CPU内存开销较大。
2.信号量方式:底层使用原子计数器(atomic),针对于每个服务都设置自己的独立的限制阈值。比如设置每个服务0接口最多同时访问的次数,如果超出缓存队列请求后,自己实现拒绝策略。
服务熔断:在高并发的情况下,如果达到一定的极限(可以自己设置阈值),如果流量超出了设置的阈值,然后拒绝访问,保护当前服务。当服务器达到最大的承受能力的之后,直接拒绝访问服务,然后调用降级方法,返回友好提示。
目的:为了防止服务宕机(保护服务),会进行熔断处理。
产生的原因:服务请求过多,高并发情况下。可以设置阈值进行限制。超出的请求存放在缓存队列中,如果缓存队列中线程满的话,直接拒绝访问服务,访问不了服务(熔断)。
熔断机制,指的是微服务架构中,由于某个服务瘫痪,为避免影响整个系统而采取的降级服务
在maven工程(前面章节中介绍的Ribbon或者Feign工程)的pom.xml中添加hystrix库支持断路器 在Ribbon应用中使用断路器 在Feign应用中使用断路器 断路器有三个状态:完全打开、半开 、和关闭
什么是spring cloud config(配置中心)
它是为分布式系统中的外部配置提供服务器和客户端支持。
SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案,旨在快速搭建单个微服务
而SpringCloud专注于解决各个微服务之间的协调与配置,服务之间的通信,熔断,负载均衡等 技术维度并相同,并且SpringCloud是依赖于SpringBoot的,而SpringBoot并不是依赖与SpringCloud,甚至还可以和Dubbo进行优秀的整合开发
Dubbo 的服务调用方式是远程调用,spring cloud 使用的是 Rest api
以上是个人的见解 ,欢迎指正 ! 好了,多思考。