程序员必备知识点
限流算法:
1.1:漏桶算法
漏桶算法(Leaky Bucket)是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量
1.2:令牌桶算法
令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。
应用场景:利用redis实现限流和并发
1.3:滑动窗口算法
为统计单位事件内发生事件的数量,例如需求---每小时访问登录接口的数量,如果我们统计的规则为1点,2点...这样的统计方法肯定不够准确(1:30-2:30也是一个小时)。为了减弱这种不准确引入了滑动窗口。我们可以把一小时划分成60份,或者更多份这样就可以减弱统计的误差。这种思路就是滑动窗口算法。
应用场景:hystrix的熔断机制。
分布式与微服务
个人理解,微服务是架构设计方式,分布式是系统部署方式,比较可知两者解决的问题不通,故不能做比较。
微服务:重在解耦合,使单个应用服务体积变小。
分布式:即把服务分散的部署在不同的机器上的,然后通过网络关联个个服务。目的可累加多个计算机的计算能力,同时也避免的一台计算机宕机后导致的不可用。
CAP定理
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得理论。
Consistency(一致性):即数据一致性,若是主备数据库系统,即保证数据的强一致性(任意时刻访问数据,主备数据库的数据都是一样的)。也可理解关联的数据一直性,例如 订单表和库存表,即order增加,库存减少。
可用性(Availability):保证每个请求不管成功或者失败都有响应。
分区容忍性(Partition tolerance):即指分布式部署。