范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

  本文根据dbaplus社群第179期线上分享整理而成,文末还有好书送哦~
  讲师介绍
  陈新进
  阿里云技术专家
  参与阿里云自研NoSQL存储系统(表格存储)六年以上研发;
  主要负责产品的master模块和负载均衡系统,在系统稳定性和可用性方面有一定的积累。
  一、背景
  表格存储(原名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功能也能很好地处理问题。
  最后,我们开发了一套负载均衡系统,它能收集信息、分析信息、解决问题,做到热点问题快速自动化解决,不需要人工参与。
  二、负载均衡系统
  接下来我们来看看表格存储中的负载均衡系统是如何自动化解决问题的。首先介绍负载均衡系统的架构,然后分模块来详细阐述各个模块的功能。
  1、负载均衡架构
  下图是负载均衡系统的架构图:
  它主要包括LBAgent和LBMaster两个角色,其中LBAgent和worker进程部署在同一台机器上,它负责收集这台机器上的所有信息指标,包括worker进程和其他相关的进程。收集之后,在内存中维护近期的数据,同时把数据异步地写到外部存储系统中,在图中我们叫做MetricStore。
  然后往上一层的模块是OpsServer,它是很薄的一层封装,主要提供了所有命令的http服务。
  再往上是LBMaster。LBMaster中的collector模块通过OpsServer实时收集LBAgent的数据,并把近期的数据维护在内存中,这个模块我们叫做MetricsTable,它主要提供各种数据聚合和top排序的功能。
  在线分析模块(OnlineAnalyzer)会实时分析MetricsTable中的近期数据,来检测是否有热点等异常的问题。如果有,则对这些信息进行进一步分析,来产生相应的解决action,并把这些action交给执行模块(Executor)。执行模块通过OpsServer把相应的action发送给worker或者master,由worker或者master执行action,最终解决热点问题。
  同时,LBMaster还有一个离线分析模块(OfflineAnalyzer),这个模块主要从外部存储系统MetricStore中读取信息,并对这些信息进行分析,以检测系统中是否有潜在问题,如果有,则对这些问题产生相对应的action,同样通过OpsServer交给worker或者master来执行,最终解决潜在的问题,做到防患于未然。
  无论是在线分析模块还是离线分析模块,分析出的结果和action都会写入到一个外部存储系统中,这里叫做ResultDataStore,主要为了人工或者系统对这些action做进一步的分析。
  最后,LBMaster还提供一个白屏化的管控平台,这个管控平台能够实时查询LBMaster中的各种数据,同时也可以通过它来发送人工运维命令。
  2、信息收集模块
  信息收集模块有两个重点:
  信息尽可能地全。
  不能影响主路径的性能。
  在表格存储系统中,任何一个模块处理请求时,都会顺便收集该模块的相关信息,这些信息会随着请求一起流动。如下图:
  在图中,经过rpc模块,就会收集rpc模块中的统计信息;经过m1、m2模块时,也会一起收集m1、m2模块的信息;最终在返回用户前,异步地把信息推送到一个后台计算模块,这个模块会在后台用很少量的资源来汇总这些信息,并定期把信息推送给LBAgent。
  由于这个后台计算模块,不在主路径上执行,是异步执行的,并且只占用少量的资源,可能只有一个核的cpu,所以对主路径的性能影响极小。
  通过这种方式,我们既保证了能收集到各个模块的信息,同时尽可能地减少了对主路径性能的影响。
  3、LBAgent模块
  LBAgent模块主要有三个功能:
  收集单机上的所有信息。
  对这些信息进行预聚合。
  异步地持久化所有信息。
  如图所示:
  LBAgent端的接收信息模块不仅会收到worker进程的信息,还会收到系统中其他相关进程的信息。收到信息之后,LBAgent在内存中维护近期收集的信息,同时异步地将信息持久化到外部存储系统(MetricStore)中,以保存更长时间。LBMaster通过接口周期性地获取LBAgent内存中维护的信息。
  4、LBMaster模块
  LBMater模块是负载均衡系统最核心的模块。它的主要功能是:
  收集集群所有信息。
  多维度信息的top查询,包括但不限于错误率、延时、qps等信息。
  分析信息、产生action、执⾏action。
  自我反馈策略的有效性。
  我们结合下图来看:
  collector负责收集信息,MetricsTable负责多维度信息的top查询,OnlineAnalyzer和OfflineAnalyzer模块分别分析在线实时信息和离线信息,ActionExecutor模块负责执行分析模块产出的action。
  在action执行完成之后,ActionEvaluation模块会比较action执行前后的信息变化来判断这个action的效果,通过这种方式来反馈该action是否真正解决了问题。
  此外,LBMaster还有一个配置相关的模块,各个模块都有灵活的配置,配置存储在外部存储系统中,配置模块会读取这些信息,然后同步给所有模块。所有模块的配置都支持实时地动态更新。
  最后总结下,LBMaster的有如下特点:
  冷热数据存储分离:其中热数据存储在内存中,保留最近小时级别的数据,冷数据存储在外部存储系统中,可以按需保留数月甚至几年。
  离线在线模块分离:从架构图中可以看到,离线模块和在线模块的路径不会相互影响。
  配置灵活、动态加载:LBMaster支持灵活的配置,并且能够不升级动态加载。
  白屏化操作及信息展示:LBMaster中的所有信息都支持白屏化的展示,并且还可以白屏化发送运维命令给LBMaster,LBMaster会执行这些运维命令。
  高可用:由于LBMaster在整个负载均衡系统中起着核心的作用,所以它还要做到高可用。
  接下来,我们从在线和离线两方面来看下负载均衡处理问题的情况。
  5、在线分析路径
  首先看在线分析路径。在线分析主要是分析短期信息,发现问题,最终解决问题,它主要有如下特点:
  数据实时性要求极高,分析频率高,秒级别发现并处理问题。
  数据量小、全部维护在内存表中。
  主路径不依赖任何外部系统。
  我们从架构图来看在线分析路径,可以发现:
  整个数据流路径,从worker到LBAgent最后到LBMaster,以及控制流路径从LBMaster到worker、master,除了分析的结果会异步地写外部存储系统外,不涉及任何外部系统。
  并且分析结果写外部存储系统的失败也不影响主路径的执行,它是一个异步的操作。所有这些设计都是为了满足实时性的要求。
  在表格存储系统中有很多在分析的策略,下面举两个例子:
  例1:热点问题导致读写队列满报错
  首先,负载均衡系统分析信息会发现worker1的队列被打满,报错,到达了单partition的服务瓶颈。
  然后进一步分析发现可以做split来解决这个问题,因此负载均衡系统发出split partition1的action,action通过worker和master执行后,partition1被切分为partition11和partition12,并调度到两台机器上服务。通过这种方式解决了热点问题。
  例2:机器资源满导致的问题
  负载均衡系统分析信息发现worker1的资源被打满,然后开始分析原因,最后发现是partition2导致的,进一步分析发现partition2的访问模式有问题。
  比如说是单partitionkey的访问,或者顺序写访问,这种访问模式,split不能解决问题,所以负载均衡系统发出隔离partition2的action,action执行后,partition2被单独隔离到一台机器上服务。
  此时,partition2不影响其他任何用户,并且也独享整体机器的资源,系统给它提供了最大的服务能力。
  6、离线分析路径
  与在线分析路径恰好相反的是,离线分析主要是分析长期信息,发现潜在的问题,并最终消除这些潜在问题,做到防患于未然。和在线路径相比,它的特点是:
  数据实时性要求低,分析频率低,小时级别发现并处理问题。
  由于数据量大,信息维护在外部存储系统中。
  计算量大,所以分析的时候可以依赖外部分析系统。
  从架构图来看,离线分析路径的数据来源于外部存储系统,并且由于分析的数据量很大,它会先借助外部分析系统做初步的分析,然后把分析结果写入到一张结果表中。
  最后LBMaster的离线分析模块,对结果表中的信息做进一步的分析,然后发现问题,产生action。借助外部分析系统,大大减少了LBMaster的资源消耗,也大大增加了分析的能力。
  接下来简单介绍两个离线分析策略的例子:
  首先是auto merge,在NoSQL系统中,有部分的partition刚开始访问量很大,所以被切分成很多partition,随后这些partition的访问量可能会很低,甚至几乎没有,那么我们就可以将这些partition进行merge,来节约系统资源。
  但是,不能通过短期统计数据判断一个partition访问量低就对它做merge,因为有些partition的访问模式是周期性的,所以要通过长期统计数据来判断一个partition能否做merge。
  另外一个例子是,我们可以通过对长期数据的分析来预测某些用户的访问峰值,提前做好资源的调整。
  7、效果展示
  接下来,展示一些负载均衡系统上线后的效果。选取的都是有明显热点的业务,所以效果都非常明显。
  如下图所示,负载均衡系统上线后,读操作的错误率和延时明显降低,吞吐量明显提高:
  如下图所示,负载均衡系统上线后,写操作的错误率明显降低,并且在发现热点的时候,即错误率突然升高时,能立刻处理掉:
  三、总结
  最后从我自己做负载均衡系统的实践中总结了几点经验:
  每个模块的信息统计是根本
  如果没有信息统计,或者信息统计不全,都会导致问题定位不出来或是定位错误,整个负载均衡系统都无从谈起。并且这部分的工作量绝对不小,不是很简单就能做到信息全,并且也几乎不影响性能的。
  把人工处理自动化是最高效的策略
  很多人刚开始都会觉得负载均衡要用到非常多的机器学习算法,这个可能是对的。
  但是对于前期来说,我们把人工处理方式来进行自动化处理,可能就能解决90%以上的线上问题,并不需要高大上的机器学习算法。在经过这个阶段之后,一些难点问题,或者预测性的策略方面,再去考虑机器学习的东西。
  策略配置丰富,控制灵活
  每个策略都要有一些阈值或者条件,这些条件都不能写死在系统中,都要由配置的方式来传入,因为线上的情况差异非常大,只有这样才能有机会针对不同的业务、不同的场景进行配置定制。
  系统快速迭代,支持差异化配置
  负载均衡系统是一个要求快速迭代的系统,比如今天发现线上一类问题,就需要尽快写出策略上线,来解决线上的问题。
  再者,由于每个业务的特点不同,访问模式的差异非常大,对可用性的要求也会有很大区别。
  所以这里就需要非常灵活的配置,对于不同的业务,也许是同一个策略都会需要不同的配置才能达对这个业务而言的最优效果。
  Q & A
  Q1:请问表的统计信息都统计些什么?既然有工作者队列,为什么还需要担心处理热点问题?
  A1:在系统中,有部分队列不是独享的,可能是整个进程所有partition都共享的,如果一个partition出现了热点访问,占用了所有的资源,可能会导致这台机器上所有partition的访问都受到影响。
  Q2:那么不采用hash环的分布式策略,比起明确分区键值有什么坏处?为什么要选用后者?
  A2:hash分片最大的问题是,一旦确定之后动态调整比较困难,基于分片键的方式,能比较容易做到动态调整,比如split。而hash分片,如果刚开始分片有问题,后续再调整就比较困难。
  Q3:我们这边用的是RabbitMQ,没有想过要另找一套的思路。当时自己创建这个的时候有没有参考别的解决方案?然后如何抉择的?
  A3:你这里的队列服务可能和我说的不太一样。如果你们是基于队列服务做得系统,那么队列服务相关的负载均衡你们基本上就无能为力,要看队列服务这个产品来做,如果你们自己的系统本身也有热点问题,那么本次分享应该对你有所帮助。
  直播回放
  https://m.qlchat.com/topic/details?topicId=2000003638109687
  彩蛋来了
  在本文微信订阅号(dbaplus)评论区留下足以引起共鸣的真知灼见,小编将在本文发布后的隔天中午12点根据留言精彩程度选出1位幸运读者,送出以下好书一本~
  注:同一月份里,已获赠者将不可重复拿书。
  特别鸣谢图灵教育为活动提供图书赞助。
  掌握数据库新思维,获得更优操作启发
  不妨来Gdevops北京站学点独家技能
  ↓↓点击链接了解更多详情及报名↓↓
  2019 Gdevops全球敏捷运维峰会-北京站

科龙睡眠王助你一臂之力,畅观今夏欧洲杯每年的夏天都是与酷暑做的一场斗争,外面明晃晃的太阳看着就让人不想出门,家里如果不开空调,简直跟蒸笼没有区别。可今年的盛夏不同往日,四年一届的欧洲杯马上就要开幕,球迷们本就焦躁的心越幸福家居生活买灯送车,买月影家居张继科壕送宏光miniEV家里还在装修啊,我们家买了一个比较大的三室两厅,因为打算把他的爷爷奶奶都接过来住,所以还有闺密什么的,经常会来住,所以就直接买了一个很大的三室两厅,但是这样子的房间装修起来也很费劲窦骁海上繁花终于开播霸总形象温柔深情自带苏感昨晚,改编自匪我思存的同名小说,积压了四年之久的都市爱情剧海上繁花终于开播,据悉在周三至周五20点于芒果TV乐视视频爱奇艺优酷和腾讯视频与大家相见。该剧由窦骁李沁领衔主演,张云龙特268V为二手车市场再添活力,出具最专业的的检测报告不怕踩雷根据商务部统计数据显示,今年15月,中国二手车交易量达690。7万辆,同比增长60。9,比2019年同期增长22。9,二手车交易量与新车销量的比例由2019年同期的0。551提升到老郑深度对比漫步者与JEET无线蓝牙耳机谁更划算大家好,我是老郑,一个有着十几年搞机经验的资深评测达人。这几年由于工作的关系,接触了很多数码产品,其中就包括蓝牙耳机。这几年蓝牙耳机发展迅速,参与的品牌也很多,其中漫步者与JEETJEETONE升级版对比漫步者lollipods蓝牙耳机,哪款更值得买?大家好,我是发烧友阿铭,捣鼓耳机已经六七年了,所以对市面上常见的有线耳机和无线蓝牙耳机都很了解,身边朋友在买蓝牙耳机之前都会问问我的建议。而最近很多网友留言问我JEETONE升级版蓝牙耳机什么牌子好?玩机达人秦浩盘点五大蓝牙耳机排名大家好,我是爱玩机的达人秦浩。现在说起年轻人出街的时尚单品,真无线蓝牙耳机绝对是其中之一。不过目前真无线蓝牙耳机的市场鱼龙混杂,再加上很多都是千篇一律的设计,大多数人都不知道蓝牙耳鲁花集团,以高品质产品保障消费者的餐桌健康滴滴鲁花香飘万家,鲁花集团旗下产品向来以中国好味道著称,一直是千家万户厨房中的必备。从一个乡镇作坊到如今的国内龙头企业,鲁花集团从诞生之日起就牢固树立起科技创新诚信经营绿色共享等理前锋工作室多维度对比漫步者与JEET无线蓝牙耳机买谁划算?大家好,这里是前锋工作室,成立到现在已经五年多了,我们每周都会为大家带来一款数码产品的评测,这五年从没间断过。这周我们选择的是最热门的两款蓝牙耳机JEETONE升级版和漫步者lol复盘616微盟零售购物节品牌私域的次元壁正被击穿618已过,又一个年中电商节日落下帷幕。不少媒体以静悄悄概括今年的618。对,也不对。对的是,往年那种在各个渠道铺天盖地式的广告轰炸的确没有再度重现不对的是,正是因为战场发生了转移华米的钢铁雄XIN618已过,又一个年中电商节日落下帷幕。在底层技术创新的历史长河中,造芯一直是一个比较特殊的一个审视对象在很长一段时间,它既距离互联网思维路途遥远,也受到规模和资金实力的掣肘和限制
大学生是买个轻薄本还是买个游戏本?如果是211或者985,再或者是想好好学习不想荒废大学4年的同学,建议你买个带独显的轻薄本。说真的,真正玩3a大作的学生并不多,大多数还是玩一玩lol啊,dota2之类的游戏,94普通人的颜值是什么水平啊看到身边的美女这么多容貌焦虑了怎么办?这些都是精修照片,容颜憔悴的一般是睡眠不足,气血不足或生活和工作太累压力过大,与生俱来的颜值,还是不要刻意去想太多,累人,改变能改变的,不能改变的,顺其自然就好。可以在学识上渊博一外卖小哥快递员网约车司机你们的商业保险有人买单了大河报豫视频记者冯子雍一大波关系民生的条例正在路上!今后,平台经营者应为网约车外卖或者快递等从业人员提供商业保险保障个人违反南水北调保护条例进行放生或被罚款五千元以上二万元以下河南国际首次,领先水平!辽宁这所大学用机器人辅助骨科手术超200台!医用手术机器人的出现,是现代医学科学发展的里程碑。近日,中国医科大学附属第一医院副院长骨科主任朱悦教授团队连续成功完成两例机器人辅助下的腰椎椎板减压椎弓根螺钉置入术。经文献查询,这摩尔定论不死!台积电3nm性能大提升,官方表示量产没问题关于摩尔定论,虽然半导体大多数厂商都表示摩尔定论就算没有死掉,但半导体的发展速度的确已经降下来。看看高通苹果这两代芯片即使在升级了制程之后,CPU性能也没有太大变化,就明白半导体的把一台特斯拉熔成iPhone13,要卖多少钱?看完不敢说库克割韭菜了当你有一台特斯拉Model3,你会干什么?是发朋友圈?还是找小姐姐兜风?还是试刹车俄罗斯珠宝公司Caviar给了新玩法,把它熔成一部iPhone13,起名TeslaElectro!6000mAh大电池,待机长达35天,vivo新机仅1399元近日,关于vivo手机的消息较少,下一代的Nex4也还未定档,vivo还是将更多精力放在中端手机上,旗下的iQOO手机倒是火力全开,不仅发布了最新一代的iQOONeo5s,还悄悄上性价比才是王道,骁龙888Plus五千毫安一亿像素,售价不到两千国内的高性价比手机市场,可谓是红海一片,不仅有新兴的品牌realme和iQOO,也有老品牌的摩托罗拉和中兴,所以也导致各大手机厂商的竞争力度也是越来越大,在造福消费者的同时也加剧了快手与美团战略合作互联互通共创高品质本地生活新样态顶端新闻河南商报记者马千惠12月27日,快手与美团宣布达成互联互通战略合作。双方将基于快手开放平台,打通内容场景营销在线交易及线下履约服务能力,共同为用户创造一站式完整消费链路。(李彦宏首款汽车机器人2022年亮相,集度2023年量产12月27日,百度创始人董事长兼CEO李彦宏在百度Create2021(百度AI开发者大会)演讲中表示,人机共生时代,中国将迎来AI黄金十年。未来十年,AI将显著降低技术门槛,为各三星旗舰狂降2000元清仓,120Hz3200万自拍IP68超声波屏幕指纹众所周知,三星手机在国际上发展得风生水起,但在国内却表现一般,性价比无法与国产手机相比,同时曾经三星note7爆炸门事件还让用户记忆犹新,今天要说的这款手机是三星在去年10月份推出