美文网首页
redis分布式集群

redis分布式集群

作者: 不怕天黑_0819 | 来源:发表于2021-03-15 10:48 被阅读0次

    什么是分布式

    要理解分布式系统,主要需要明白一下2个方面:

    • 分布式系统一定是由多个节点组成的系统。

    其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。

    • 这些连通的节点上部署了我们的节点,并且相互的操作会有协同。

    分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已。而实际上这些服务是通过背后的众多服务器组成的一个分布式系统。因此分布式系统看起来像是一个超级计算机一样。

    例如淘宝,平时大家都会使用,它本身就是一个分布式系统。我们通过浏览器访问淘宝网站时,这个请求的背后就是一个庞大的分布式系统在为我们提供服务,整个系统中有的负责请求处理,有的负责存储,有的负责计算,最终他们相互协调把最后的结果返回并呈现给用户。

    使用分布式系统主要有特点:

    1、增大系统容量。我们的业务量越来越大,而要能应对越来越大的业务量,一台机器的性能已经无法满足了,我们需要多台机器才能应对大规模的应用场景。所以,我们需要垂直或是水平拆分业务系统,让其变成一个分布式的架构。

    2、加强系统可用。我们的业务越来越关键,需要提高整个系统架构的可用性,这就意味着架构中不能存在单点故障。这样,整个系统不会因为一台机器出故障而导致整体不可用。所以,需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性。

    3、因为模块化,所以系统模块重用度更高。

    4、因为软件服务模块被拆分,开发和发布速度可以并行而变得更快。

    5、系统扩展性更高。

    6、团队协作流程也会得到改善。

    分布式系统的类型有三种:

    1、分布式处理,但只有一个总数据库,没有局部数据库。

    2、分层式处理,每一层都有自己的数据库。

    3、充分分散的分布式网络,没有中央控制部分,各节点之间的联系方式又可以有多种,如松散的联接,紧密的联接,动态的联接,广播通知式的联接等。

    二,高可用

    高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响。停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。

    (1)解决单点问题主要有2种方式:

    主备方式

    这种通常是一台主机、一台或多台备机,在正常情况下主机对外提供服务,并把数据同步到备机,当主机宕机后,备机立刻开始服务。

    Redis HA中使用比较多的是keepalived,它使主机备机对外提供同一个虚拟IP,客户端通过虚拟IP进行数据操作,正常期间主机一直对外提供服务,宕机后VIP自动漂移到备机上。

    优点是对客户端毫无影响,仍然通过VIP操作。

    缺点也很明显,在绝大多数时间内备机是一直没使用,被浪费着的。

    主从方式

    这种采取一主多从的办法,主从之间进行数据同步。当Master宕机后,通过选举算法(Paxos、Raft)从slave中选举出新Master继续对外提供服务,主机恢复后以slave的身份重新加入。

    主从另一个目的是进行读写分离,这是当单机读写压力过高的一种通用型解决方案。其主机的角色只提供写操作或少量的读,把多余读请求通过负载均衡算法分流到单个或多个slave服务器上。

    缺点是主机宕机后,Slave虽然被选举成新Master了,但对外提供的IP服务地址却发生变化了,意味着会影响到客户端。解决这种情况需要一些额外的工作,在当主机地址发生变化后及时通知到客户端,客户端收到新地址后,使用新地址继续发送新请求。

    (2)数据同步

    无论是主备还是主从都牵扯到数据同步的问题,这也分2种情况:

    同步方式: 当主机收到客户端写操作后,以同步方式把数据同步到从机上,当从机也成功写入后,主机才返回给客户端成功,也称数据强一致性。很显然这种方式性能会降低不少,当从机很多时,可以不用每台都同步,主机同步某一台从机后,从机再把数据分发同步到其他从机上,这样提高主机性能分担同步压力。在redis中是支持这杨配置的,一台master,一台slave,同时这台salve又作为其他slave的master。

    异步方式: 主机接收到写操作后,直接返回成功,然后在后台用异步方式把数据同步到从机上。这种同步性能比较好,但无法保证数据的完整性,比如在异步同步过程中主机突然宕机了,也称这种方式为数据弱一致性。

    Redis主从同步采用的是异步方式,因此会有少量丢数据的危险。还有种弱一致性的特例叫最终一致性,这块详细内容可参见CAP原理及一致性模型。

    (3)方案选择

    keepalived方案配置简单、人力成本小,在数据量少、压力小的情况下推荐使用。如果数据量比较大,不希望过多浪费机器,还希望在宕机后,做一些自定义的措施,比如报警、记日志、数据迁移等操作,推荐使用主从方式,因为和主从搭配的一般还有个管理监控中心。

    宕机通知这块,可以集成到客户端组件上,也可单独抽离出来。Redis官方Sentinel支持故障自动转移、通知等,详情见低成本高可用方案设计(四)。

    逻辑图:

    引用链接:redis分布式集群

    相关文章

      网友评论

          本文标题:redis分布式集群

          本文链接:https://www.haomeiwen.com/subject/kmohcltx.html