每日八股:分布式

介绍一下cap理论

CAP原则又称CAP理论,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

一致性:在分布式系统中的所有数据备份,在同一时刻是同样的值(等同于所有节点访问同一份最新的数据副本)。

可用性:在集群中一部分节点故障后,集群整体还能响应客户端的读写请求(对数据更新具备高可用性)。

分区容错性:以实际效果而言,分区相当于对通信的时限要求,系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

分布式锁

分布式锁是用于分布式环境下并发控制的一种机制,用于控制某个资源在同一时刻只能被一个应用所使用。

RPC的概念是什么?

RPC即远程过程调用,允许程序调用运行在另一台计算机上的程序中的过程或函数,就像调用本地程序中的过程和函数一样,而不用了解底层网络细节。

一个典型的RPC调用过程通常包含以下几个步骤:

1.客户端调用:客户端程序调用本地的一个伪函数(也成为存根,Stub),并传入所需的参数。这个伪函数看起来跟普通的本地函数一样,但实际上它会负责处理远程调用的相关事宜。

2.请求发送:客户端存根将调用信息(包括函数名、参数等)进行序列化,通过网络将请求发送给服务器。

3.服务器接收与处理:服务器端收到请求后,将请求信息进行反序列化,然后找到对应的函数并执行。

4.结果返回:服务器端将函数的执行结果进行序列化,通过网络发送回客户端。

5.客户端接受结果:客户端接收服务器端发来的结果后,将其进行反序列化,并将结果返回给调用者。

常见的限流算法你知道哪些?

1.固定窗口限流算法:就是对一段固定时间窗口内的请求进行计数,如果请求数超过了阈值,则舍弃该请求,如果没有达到阈值,则接受该请求,且计数加1。当时间窗口结束时,重置计数器为0。固定窗口算法限流的优点是实现简单,但可能会出现流量吐刺的问题。

2.滑动窗口限流算法:改进固定窗口缺陷的方法是采用滑动窗口限流算法,滑动窗口就是将限流窗口内部切分为一些更小的时间片,然后在时间轴上进行滑动,每次滑动,滑过一个小时间片,就形成了一个新的限流窗口,即滑动窗口。然后在这个滑动窗口内执行固定窗口算法即可。

滑动窗口可以避免固定窗口出现的超过阈值两倍请求的问题,因为一个短时间内出现的所有请求必然在一个滑动窗口内,所以一定会被滑动窗口限流。

3.漏桶限流算法:模拟水流过一个有漏洞的桶进而限流的思路。从系统的角度来看,我们不知道什么时候会有请求来,也不知道请求会以多大的速率来,这就给系统的安全性埋下了隐患,但是如果加了一层漏斗算法限流后,就能够保证请求以恒定的速率流出。在系统看来,请求永远是以平滑的传输速率过来,从而起到了保护系统的作用。

缺点:

1.即使系统资源很空闲,当多个请求同时到达时,漏桶也是慢慢的一个一个的去处理请求,会浪费计算资源。

2.不能解决流量突发问题。

4.令牌桶限流算法:令牌桶是另一种桶限流算法,它模拟一个特定大小的桶,然后向桶中以特定的速度放入令牌,请求到达后,必须从桶中取出一个令牌后才能继续处理。如果桶中没用令牌了,那么当前请求就会被限流。如果桶中的令牌放满了,令牌桶也会溢出。放令牌的动作是持续不断进行的,如果桶中的令牌数达到上限,则丢弃令牌,因此桶中可能一直持有大量可用令牌,此时请求进来可以直接拿到令牌执行。

#分布式##八股##Java选手#
全部评论

相关推荐

评论
1
6
分享

创作者周榜

更多
牛客网
牛客企业服务