spring-cloud个人总结

spring-cloud

什么是springcloud?

Spring Cloud 是一系列框架的有序集合

Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来

通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包

它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、 断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署

Spring 公司将其他公司中微服务架构常用的组件整合起来,并使用 SpringBoot 简化其开发、配置。称为 Spring Cloud

springclouddubbo区别是什么?

Spring Cloud Dubbo 都是实现微服务有效的工具。

Dubbo 只是实现了服务治理,而 Spring Cloud 子项目分别覆盖了微服务架构下的众多部件

Dubbo 使用 RPC 通讯协议, Spring Cloud 使用 RESTful 完成通信, Dubbo 效率略高于 Spring Cloud

什么是微服务?

微服务就是将项目的各个模块拆分为可独立运行、部署,测试的架构设计风格

自我保护机制

什么是自我保护机制?

Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。

自我保护机制意义是什么?

自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定

负载均衡

服务端负载均衡

负载均衡算法在服务端

nginx 由负载均衡器维护服务地址列表

客户端负载均衡

负载均衡算法(策略)在客户端

Eureka在客户端维护服务地址列表

RibbonNetflix提供的一个基于HttpTcp的客户端负载均衡工具

Nacos,Eureka,Consul,Zookeeper

 

 

 

Hystrix

Hystix Netflix 开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败(雪崩)。

Hystix 主要功能

隔离

·        一个服务失败,导致整条链路的服务都失败的情形。

·        出现原因

•      tomcat线程池在调用远程接口时,陷入长时间等待

·        隔离方式

•      线程池隔离创建单独线程池(10个),设置超时时间,tomcat贤臣吃也最多只会阻塞10个线程

•      应用场景请求并发量大,并且耗时长(读取数据库):采用线程池隔离策略,这样可以保证大量的容器线程(tomcat)可用,不会由于服务原因,一直处于主色或等待状态,快速返回失败

•      信号量隔离不会创建新的线程池,用的还是tomcat线程池,但是设定最大阈值,超过阈值就不会再进行方法调用

•      请求并发量大,并且耗时短,(读取缓存):采用信号量隔离,因为这类服务返回通常非常快,不会占用容器线程太久时间,而且减少了线程切换的一些开销,提高了缓存服务的效率

·        什么时候使用?

•      当请求的服务网络开销比较大的时候,或者是请求比较耗时的时候,我们最好是使用线程隔离策略,这样的话,可以保证大量的容器(tomcat)线程可用,不会由于服务原因,一直处于阻塞或等待状态,快速失败返回。而当我们请求缓存这些服务的时候,我们可以使用信号量隔离策略,因为这类服务的返回通常会非常的快,不会占用容器线程太长时间,而且也减少了线程切换的一些开销,提高了缓存服务的效率。

·        两种隔离方式的区别?

•     

 

 

 

 

降级

·        当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

熔断

·        服务失败达到一定的值会将断路器打开10s内请求次数最少不低于20,失败请求占比达到50%打开后休眠五秒,半开允许部分请求访问,访问成功一定比率,则关闭熔断

限流

·        令牌桶算法:以一定速率往桶里补充令牌,只有获取到令牌之后才可以去进行业务处理。允许一定突发流量。

·        漏桶算法:以一定的速率控制请求处理。

Gateway

什么是网关?

网关就是系统的入口,封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、缓存、负载均衡、流量管控、路由转发等

动态路由

 cloud:    # 网关配置    gateway:      # 路由配置:转发规则      routes: #集合。      # id: 唯一标识。默认是一个UUID      # uri: 转发路径      # predicates: 条件,用于请求网关路径的匹配规则      # filters:配置局部过滤器的      - id: gateway-provider        # 静态路由        # uri: http://localhost:8001/        # 动态路由        uri: lb://GATEWAY-PROVIDER          predicates:        - Path=/goods/**      - id: gateway-consumer        # uri: http://localhost:9000        uri: lb://GATEWAY-CONSUMER        predicates:        - Path=/order/**

过滤器

 

 

 

 

 

补充

pom依赖原则

1.近者优先2.先声明者优先如果路径相同,谁先声明使用哪个版本如果路径不同,优先使用路径比较短的版本

前端到后端执行流程

 

 

 

请求参数

@PathVariable 路径参数{}占位符注入参数

@RequestBody 请求体json对象

@RequesParam 请求参数?id=1 可不可以不加?但是加了之后要必需传递

 

 

posted @ 2021-04-27 21:09  赶星而至  阅读(120)  评论(0编辑  收藏  举报