NoSQL中负载均衡系统如何解决热点问题,提高可用性?

本文探讨了表格存储系统中的负载均衡策略,尤其是如何解决NoSQL中的热点问题。文章介绍了表格存储的架构,包括worker和master,以及前端组件。负载均衡系统包括LBAgent和LBMaster,用于收集信息、分析数据并自动化解决热点问题。系统通过实时和离线分析,快速自动化处理热点,确保服务的高可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

表格存储(原名OTS)是一款阿里自研的NoSQL多租户分布式数据库,本文主要会分享在表格存储中,负载均衡系统如何解决热点问题。

1、表格存储架构

下图是表格存储系统最基本的一个架构图:

实际上,表格存储还有很多其他的模块,这里我们主要看下和本文内容相关的部分,并且也是最核心的一部分。

从下往上看,表格存储是基于飞天内核的产品,飞天内核主要提供了分布式共享存储、分布式锁服务、通信组件等基础功能。

然后上面是表格存储的引擎部分,主要由worker和master组成,一个集群中有少量的master和大量的worker,master负责管理worker的状态,并将partition调度到各个worker上提供对外的服务。

再上层是前端组件,提供统一的http服务,并把这些请求转发到worker上。

2、负载均衡相关的背景

在表格存储系统中,我们会对用户数据按分片键进行切分,切分之后的一个分片,我们叫做partition,它是表格存储系统里面,调度的基本单元,所有调度都是基于partition的。

partition可以做如下操作:

  • move:把partition从一台机器迁移到另外一台机器上进行服务。
  • split:把一个partition分裂成两个partition。
  • merge:把两个partition合并成一个partition。
  • group:group是隔离partition的主要手段,举个例子:它一般是先将一批worker加入到指定group中,然后将instance、table或者partition也加入到该group,完成这些操作后,系统会将属于指定group的instance、table的所有partition和显示指定group的partition都固定调度在该group的worker上,达到隔离的目的。说简单一点就是我给一些用户分配指定的机器,这些机器专门给这些用户服务。

上述的所有对partition的操作,包括move、split、merge、group,都是秒级别的。

3、热点问题

在NoSQL多租户系统中经常遇到的热点问题,主要分为以下两类:

1)用户访问热点

用户访问热点又分为合理的突发式访问热点,以及不合理的突发式访问热点:

  • 合理的突发式访问指的是,用户的表设计合理,只是业务量突然上涨导致的,比如说大促。
  • 不合理的访问热点指的是,用户的表设计不合理,在这个基础上,业务量上涨导致的热点。

2)机器热点

机器的热点问题指的是,该机器的cpu,网络流量由于某些原因突然变高,该机器资源成为瓶颈,导致的热点。

通常,热点问题很难处理,主要有如下原因:

  • 定位难:系统中的信息统计不够全,导致了出现热点问题,很难定位,只能靠猜。
  • 解决难:即使定位了问题,有可能还很难处理,主要原因是系统中处理热点的手段不足。
  • 人工处理慢:即使能定位,也能解决,但是处理时间太长,严重影响服务的可用性。

在表格存储系统中,对上述几个难点,我们都有对应的手段来解决。针对信息不全,定位难的问题,我们系统中有详细的partition级别统计信息,并且秒级别的partition move、split、merge、group功能也能很好地处理问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值