Java快问快答小集锦002-分布式学习相关问题收集整理

1.单体架构存在什么缺陷?

单体架构在最开始的时候可以满足较少互联网用户的需求,在单体架构中web服务器和数据库是部署在同一台服务器上面也可以满足用户需求.
1.1 但是随着用户数量的增长,tomcat服务器和数据库之间存在资源竞争问题,单机的性能能不能满足同时支撑tomcat服务器和数据库之间的资源需求,不能满足多用户访问,达不到高可用需求.
1.2 第二点,在单机上面,一旦我们的服务器除了问题,数据库的安全性就受到了挑战,不能满足高可用的要求.
1.3 第三点,计算机单机的计算能力有限,当我们的用户请求增多,这时候计算机单机的数据计算能力就不能满足计算需求.
以上三点就是单体架构存在的风险:单机容量瓶颈\单机的数据数据计算能力瓶颈\单机故障风险都不能保证我们服务的高并发下高可用的需求.

2.为什么要使用分布式架构(分布式架构的优点)

分布式:提高系统无故障时间,系统中多个模块在不同服务器上部署,即可以成为分布式系统,如tomcat和数据库分别部署在不同服务器上面,或者两个相同功能的tomcat分别部署在不同服务器上面.解决的问题

2.1 解决单机性能不足问题:存储能力增强
2.2 解决单机高性能:计算能力增强
2.3 保证服务的高可用:系统中部分节点失效时,其他节点能够继续接替它继续提供服务,则可以任务系统具有高可用性.保证系统的高可用性,可从下面几个9说起,如下图所示:
在这里插入图片描述
为了提高可用性,我们要么提高系统的无故障时间,也就是减少系统的故障恢复时间,这就需要排除故障的原因:
(1)无计划的系统故障:
系统级故障:包括主机\操作系统\中间件\数据库\网络\电源以及外围设备
自然灾害\认为破坏\供电问题
(2)有计划的日常任务
运维相关:数据库维护\应用维护\中间件维护\操作系统维护\网络维护等问题
升级相关:数据库\中间件\应用\操作系统\网络\硬件等升级
这些分布式的部署实际上就是为了保证系统的弹力射击,在我们的系统出现故障的时候,要有基本的应对策略,保证服务稳定性,减少系统的不可用时间.

3.为什么要使用缓存?

用缓存,主要有两个用途:高性能\高并发

高性能: 缩短对用户的响应时间,当有一个请求发过来,如果每一次都要在数据库中查询时候,查询的速度比较慢,长时间给不了用户反馈,这时候如果把查询的结果存放在缓存中,后面如果有用户请求数据时候,直接读取缓存中的数据就可以了

高并发: mysql是一个重的数据库,并不适合高并发,mysql单机支撑最多能够支撑2000QPS也很容易报警.

所以如果一个系统同时又多个请求,那么mysql单机绝对会死掉,这时候如果有缓存,就可以吧很多数据放在缓存里面.缓存的功能就是简单的key-value操作,单机支撑的并发量轻松一秒超过几万到几十万,可以轻松支撑高并发,单机承载并发量是mysql单机的几十倍.

注意:缓存是走内存的,内存天然就支撑高并发.

4.使用缓存会带来什么样的问题?

4.1 缓存一致性问题
当数据库时效性要求很高的时候,需要保证缓存中的数据与数据库中的保持一致,而且需要保证节点和副本中的数据也要保持一致,不能出现差异现象.
这就比较依赖缓存的过期和更新策略,一般会在数据发生更变的时候,主动更新缓存中的数据或者移除对应的缓存.
在这里插入图片描述4.2 缓存击穿问题

对于一些设置了过期时间的key,可能这些key会在某些时间点被高并发访问,是一种非常"热点"的数据.这个时候,需要考虑缓存被"击穿"的问题,和缓存雪崩的问题,这里针对某一key缓存,而缓存雪崩则是很多key.
在这里插入图片描述

4.3 缓存雪崩问题-是什么?为什么?怎么解决?
一个服务失败,导致整条链路的服务都失败的情形,我们称之为服务雪崩.
服务熔断和服务降级就可以视为解决服务雪崩的手段之一。

服务熔断
什么是服务熔断呢?
服务熔断:当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。 需要说明的是熔断其实是一个框架级的处理,那么这套熔断机制的设计,基本上业内用的是断路器模式
每当20个请求中,有50%失败时,熔断器就会打开,此时再调用此服务,将会直接返回失败,不再调远程服务。直到5s钟之后,重新检测该触发条件,判断是否把熔断器关闭,或者继续打开。

这些属于框架层级的实现,我们只要实现对应接口就好!

服务降级
什么是服务降级?
这里有两种场景:

  • 当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度!
  • 当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免卡顿,迅速返回给用户!

其实应该要这么理解: - 服务降级有很多种降级方式!如开关降级、限流降级、熔断降级! - 服务熔断属于降级方式的一种!

可能有的人觉得熔断是熔断、降级是降级,分明是两回事!其实不然,因为从实现上来说,熔断和降级必定是一起出现。因为当发生下游服务不可用情况,这个时候为了对最终用户负责,就需要进入上游降级逻辑了。因此,将熔断降级视为降级方式的一种,也是可以说的通的!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值