[TOC]

在做分布式集群时候一般会产生什么问题?

  1. 并发性。加锁解决。

  2. 缺乏全局时钟。

  3. 通信异常。引起数据丢失或者接收数据延迟的问题。

  4. 网络分区,也叫脑裂。

  5. 三态。成功和失败以外的第三种状态,叫超时态。

  6. 节点故障。节点越多,发生故障的几率越大。

  7. cap不能同时满足。

  8. 一致性问题。

  9. 资源倾斜问题。忙的忙死,闲的闲死。

  10. 扩容和缩容问题。

  11. 分布式幂等性问题。

  12. session共享问题。

  13. 分布式全局生成id问题。

    来自: https://www.yuque.com/fudadajiagoushimeiriyiti/rqui93/ecylig

度量指标

QPS

Query Per Second: 每秒响应请求数,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。

TPS

Transactions Per Second,也就是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。

并发用户数

并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

RT

response Time:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。一般而言,用户感知友好的高并发系统,时延应该控制在250毫秒以内。

PV

PV(Page View):页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次。可以统计服务一天的访问日志得到。

什么是脑裂问题?

在一个高可用集群中,当多个服务器在指定的时间内,由于网络的原因无法互相检测到对方,而各自形成一个新的小规模集群,并且各小集群当中,会选举新的master节点,都对外提供独立的服务,这种情况就称为裂脑。

也有的人称之为分区集群,或者大脑垂直分隔,互相接管对方的资源,出现多个Master的情况,都可以称为脑裂。

脑裂(Split-Brain)是一个形象的比喻,好比“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”。

裂脑之后的后果是,可能会导致服务器端的数据不一致,或造成数据的丢失

图片

脑裂导致的三大问题,:

  • **数据不一致:**不同子集之间可能对同一数据进行不同的写入,导致数据不一致。
  • **重复写入:**在脑裂问题解决后,不同子集可能尝试将相同的写操作应用到主节点上,导致数据重复。
  • **数据丢失:**新 Matser会向slave 实例发送slave of命令,让所有slave 重新进行全量同步,在此之前会先清空实例上的数据,所以在主从切换期间,原slave上执行的写命令也会被清空。

希音面试:Redis脑裂,如何预防?你能解决吗?(看这篇就够了) (qq.com)