一、背景
表格存储(原名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功能也能很好地处理问题。
最