springCloud+springCloudAlibaba 整体流程

171 阅读4分钟

123

  • 网关 springCloudGateway
    • 1 为什么需要网关?
      • 传统的单体架构中只有一个服务开放给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,那么作为客户端如何去调用这些微服务呢?如果没有网关的存在,只能在本地记录每个微服务的调用地址, 问题:1客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性。 2认证复杂,每个服务都需要独立认证。 3存在跨域请求,在一定场景下处理相对复杂。
    • 2 路由转发认证鉴权熔断限流日志监控 等等
    • 3 Spring Cloud Gateway几个必知的术语?
      • 1 路由(route) :gateway的基本构建模块。它由ID、目标URI、断言集合和过滤器集合组成。如果聚合断言结果为真,则匹配到该路由。
      • 2 断言(Predicate ) :参照Java8的新特性Predicate,允许开发人员匹配HTTP请求中的任何内容,比如头或参数。
      • 3 过滤器(filter) :可以在返回请求之前或之后修改请求和响应的内容。
    • 4
  • 2 注册中心
    • 1 微服务的注册中心目前主流的有以下五种:Zookeeper Eureka Consul Nacos Kubernetes
    • 2 为什么需要注册中心? 存在下面问题
      • 1 营销、订单、库存这三个服务的地址都可能动态的发生改变,单存只使用配置的形式需要频繁的变更,如果是写到配置文件里面还需要重启系统,这对生产来说太不友好了;
      • 2 服务是集群部署的形式调用方负载均衡如何去实现;
    • 3 如何实现一个注册中心?
      • 1 在服务启动时,服务提供者通过内部的注册中心客户端应用自动将自身服务注册到注册中心,包含主机地址、服务名称等等信息;
      • 2 在服务启动或者发生变更的时候,服务消费者的注册中心客户端程序则可以从注册中心中获取那些已经注册的服务实例信息或者移除已下线的服务;
      • 3 1
      • 4 5
    • 4 如何解决负载均衡的问题?
    • 5 Nacos的临时与持久化实例 两种健康检查机制 Nacos的保护阈值
    • 6 image.png
  • 3 ribbon + feign openfeign
    • 1 Feign是什么?
      • Feign也是一个狠角色,Feign旨在使得Java Http客户端变得更容易。Feign集成了Ribbon、RestTemplate实现了负载均衡的执行Http调用,只不过对原有的方式(Ribbon+RestTemplate)进行了封装,开发者不必手动使用RestTemplate调服务,而是定义一个接口,在这个接口中标注一个注解即可完成服务调用,这样更加符合面向接口编程的宗旨,简化了开发。
    • 2 openFeign是什么?
      • 前面介绍过停止迭代的Feign,简单点来说:OpenFeign是springcloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
    • 3 Feign和openFeign有什么区别? image.png
    • 4 优化点
      • 1 openFeign的超时时间 (全局 + 针对某个服务)
      • 2 ApacheHttpClient OkHttp http连接池配置
      • 3 如何通讯优化开启 gzip压缩
      • 4 如何熔断降级
        • openFeign默认支持的就是Hystrix
        • openFeign+Sentinel
      • 5 负载均衡优化
      • 6 qw
  • 4 限流神器Sentinel ———— Hystrix
    • 不限流的后果 多个微服务之间互相调用的时候,如果D调用K和F,而K和F又调用其他的微服务,那么就会形成扇出 ,如果扇出某个链路上的微服务调用超时或者响应很慢,那么微服务D就会占用越来越多的系统资源,从而导致系统崩溃,也就是服务雪崩
    • 2 预防服务雪崩常见解决方案
      • 1 隔离、超时、限流、熔断、降级
    • 3
  • 5 分布式事务seata
    • 1
    • 2