Skip to content
1.SpringCloudAlibaba体系有哪些组件构成?分别用来干什么?
  1. Nacos:分布式注册与配置中心
  2. Sentinel:限流降级与熔断
  3. GateWay:网关
  4. Seata:分布式事务Seata
  5. OpenFeign:远程调用框架
  6. 特殊说明:分库分表环境下Seata无法正常工作,使用TX-LCN框架代替
2.Sentinel是如何实现流控的?
  1. 控制台指定流控规则,设置对指定微服务的指定路径,根据QPS达到阈值进入流控规则
  2. 到达阈值可设置三种流控规则:快速失败、预热模式和排队等待
  3. 流控模式:直接、关联和链路
    • 关联:当关联的资源达到限流条件时,开启限流
    • 链路:当从某个接口过来的资源达到限流条件时,开启限流
  4. 降级规则:当异常占比或异常数达到阈值,会返回特定数据,这个数据可以自定义
  5. 热点Key限流:可以根据方法的参数进行限流,比如限制单个商品QPS不超过10
3.单体架构与微服务如何抉择?
  • 单体架构:适合只有一台服务器,但也能进行扩展,例如一个SpringBoot工程跑在多个服务器,使用Nginx进行负载均衡;
  • 微服务:对服务进行拆分,方便水平扩展,负载均衡;例如订单服务流量高,那就多跑几个订单微服务即可,不需要多跑一整个项目。
    1. 但是系统更加复杂,会有很多重复开发
    2. 接口访问时间可能会增减,使用OpenFeign调用会产生网络延迟
    3. 如果只有一台服务器使用单体架构更好
4.什么是CAP,为什么不能都满足?那一项必须满足?
  • 一致性:每次读取都会收到最新的写入数据或错误信息。
  • 可用性:每个请求都会收到(非错误的)响应,但不能保证响应包含最新的写入数据。
  • 分区容忍性:尽管网络节点之间会丢弃(或延迟)任意数量的消息,系统仍然能够继续运行。
  • 一般必须保证分区容错性,即CP或AP
5.聊聊CP、AP、CA。
  • CP:保障一致性舍弃可用性,会导致一定的延迟。
  • AP:保证可用性的话,读操作不会收到写操作锁的影响,保障最终一致性,不会加长响应时间。
  • CA:一般不会这么做,因为一旦出现网络分区,系统会无法工作,也就构不成一个分布式系统。
6.Redis是AP还是CP的?

AP的,数据采用异步复制,保障最终一致性。

7.分库分表会带来哪些问题?

所有的读和写操作,都需要带着分表字段,否则会进行全表扫描。

8.什么是分布式BASE理论?
  • 基本可用BA:允许损失部分可用性(降级),即保证核心可用。
  • 软状态S:允许系统存在中间状态,而该中间状态不会影响系统整体可用性,即主从复制时,复制的节点有短暂时间不是最新数据。
  • 最终一致性E:副本经过一定时间后,最终能够达到一致的状态。