分布式限流和限制并发系统的设计与实现

来源 :南京大学 | 被引量 : 0次 | 上传用户:netwanderchf
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
本项目是在公司实习期间完成的分布式限流和限制并发服务,目前已经完全上线并使用半年,稳定且准确。随着公司业务迅速发展,甚至支持了大型的节日宣发活动。如果没有一个限流和限制并发服务的支持,则会导致下游业务方无法承受突发的流量,引起业务雪崩。所以,必须开发一个限流和限制并发服务来支撑公司项目。对于限流服务而言,调研目前市面上的开源项目如Sentinel等都无法在高qps(每秒发送的请求个数)下支撑一个分布式的限流服务。而其他的解决方案大多是用Redis做单点进行限流,利用Redis的int类型自增方式,如果请求超过预设上限则限流。但是,使用Redis会有单点性能问题,所以市面上的解决方案都是在高qps下降级到单机限流,因此误差较大,无法满足大型节日宣发活动的需求。另外,对于限制并发服务而言,调研发现市面上目前甚至没有可以使用的分布式限制并发开源项目。所以,为了满足公司业务蓬勃发展的趋势,需要重新设计一套分布式限流和限制并发系统。本文介绍了分布式限流和限制并发系统的设计和实现,主要分为配置模块、分布式限流模块和分布式限制并发模块。配置模块主要用于提供给用户创建查看更新限流或限制并发配置,添加更新限流或限制并发值,以及是否进行机房同步等配置参数。为了支持分布式即多个客户端请求总和在配置的限流或限制并发数之下,则不能只把限流或限制并发值对应的变量或参数放在客户端机器上,必须使用独立的服务做整体限流或限制并发的统计。因此使得客户端和服务端之间的请求必须建立在网络通信的基础上,则需要考虑网络请求的延迟甚至失败情况下的一系列处理方式。所以,目前提供给用户两种自主选择处理方式。一种选择是全部放行,另一种方式是降级到单机限流的配置。在具体设计中,使用了本地限流或限制并发加服务端限流或限制并发,首先进行本地判断限流或限制并发是否通过,接着进行服务端判断限流或限制并发是否通过。同时利用了批量拉取和本地缓存的思想,借鉴了java自旋锁的原理,成功解决了开源项目和Redis无法处理高qps的问题。在具体实现中,使用了避免缓存击穿的Single Fight模型,用到了单例模式的dcl(double check lock)双重校验锁防止并发写入。同时,分类别使用到了大量读锁和写锁,避免了并发问题。另外,用到了一致性哈希协议的哈希环,保证同一个类别的请求发送到同一个机器上,确保了限流或限制并发的准确性。
其他文献
目前,以微博为代表的互联网平台已经成为冲突性事件爆发与传播的主要阵地,相关议题的传播速度、强度以及公众的参与度前所未有。地方媒体数量较多,且均由属地政府直接管理,应该是面对冲突性议题的重要回应主体,但在面对网络冲突的蔓延时往往无法发挥实际作用。很多地方媒体虽然开通了新媒体账号,但在面对网络冲突性事件时,常常处于“失声”状态。这导致冲突事实不能得到权威确认,媒体功能没有得到有效发挥,地方媒体也因此极
学位
近年来随着我国不断加速城乡冷链基础设施的建设,以及物流行业和电商平台不断发展,我国居民如今能够轻松购买到更丰富多样的生鲜产品。但由于生鲜产品在运输过程中的温度往往不能得到有效控制,使得商品经过运输后往往会因为腐烂等情况产生很大的损耗。且国内众多中小型企业商户也缺乏对冷链监控的重视,额外进行冷链过程监控的成本也过高。此外国内现有的冷链监控系统主要只针对流通的记录,缺乏对温度的有效监控。基于以上的生鲜
学位
随着整个移动互联网生态变得越来越封闭,本地生活信息客户端的用户增长速度逐渐放缓,需要开发新的渠道来获取用户。凭借小程序技术的落实和普及,各大互联网平台纷纷通过布局自己的小程序进行平台化升级,并且历经三年半的积累建设,小程序生态逐步完善和成熟。此时公司与各平台合作布局应用的小程序版本,能够获得巨大的新增流量。目前已有十多家互联网企业搭建了自己的小程序平台,整体上提供的能力差异较小,因此需要在多个平台
学位
随着国内互联网和计算机信息技术的飞速发展,手机游戏以其强大的便携性和社交性超越端游成为国内最广泛流行的游戏形式。软件产业本身的发展带来了软件工程效率的极大改进,导致研发上线在整个手游的生命周期中占比越来越小,中后期的维护和运营对游戏营收支持增长愈发重要,传统的游戏研发侧对活动的开发迭代模式已无法适应新时代下游戏运营的目标。本文基于字节跳动游戏发行运营团队对游戏活动的开发上线需求,融合字节游戏技术中
学位
目前市面上大多数的移动端模拟经营类游戏具有系统模拟感不足、题材同质化严重、玩家目标感缺失等特点,导致玩家在短暂体验后便卸载游戏。为此,字节跳动公司下的某游戏工作室决定立项制作一款名为“模拟镖局”的游戏,并希望在客户端运行时更新游戏内容,保障玩家的游戏体验。玩家在游戏开始时经营一家镖局,随着游戏的发展,可解锁并经营酒馆、医馆、装备铺等建筑,与此同时进行镖客的养成。其中,主城子系统为“模拟镖局”游戏的
学位
随着近年来各大互联网公司争抢用户市场的斗争愈演愈烈,快速上线项目同时保障线上项目的健康稳定成为各大互联网公司都要面临的挑战。伴随着互联网技术快速更新,不少优秀的Dev Ops实践工具和平台被互联网公司用来保障项目开发的质量,互联网公司会独立出一些部门来负责项目开发工具的研发工作。在部门组织架构中,工具开发人员与工具使用人员通常属于不同的团队,工具开发人员开发出通用的项目开发测试工具,在向业务团队推
学位
<正>提高学科教学质量,集体备课当然必不可少。可作为数学教研组长的我最近有点儿烦:集体备课,总有几个老师姗姗来迟;还有的人到了,你说你的,他玩他的,一心扑在手机上;甚至有老师当面向我抱怨:“备什么备啊,还不是走形式,耽误时间?”……无奈,向一位同人请教。她说:“这个啊,也许还得从咱们自身开始改。我近来正在试验一种‘问题驱动’的集体备课方式,
期刊
近年来,中国手机市场的竞争日趋激烈,手机开发商在不断进行技术创新和系统升级的同时,也承担着介绍功能操作、接受使用建议、提供售后服务和解决用机问题等责任。作者实习所在的小米科技公司为了给MIUI系统的用户提供更加优质的服务,结合小米社区的设计理念以及当前应用移动化、轻量化的趋势,开发了一款MIUI系统内置App——服务与反馈,综合解决了以上提到的问题。但是,MIUI系统支持多种语言,覆盖上百个国家,
学位
随着国家全面推动实体经济的发展,作为实体经济主体的中小企业在我国经济社会的建设中发挥着重要作用。目前,很多中小企业在发展过程中受人力与资金的限制,仍然采用纸质化办公,或是直接引入市面上现有的通用ERP系统等方式进行企业资源管理。传统的纸质化办公方式效率过低,且难以处理企业经营过程中经常动态变化的数据。直接引入通用的ERP系统在多数情况下只能满足基本的管理工作,而无法适用于业务相关的定制化需求。本文
学位
随着社会化媒体平台兴起,公共事件的传播无远弗届,热点事件能够在社交媒体上引起广泛讨论,公共事件传播模式也相较于传统媒体时代发生了变迁。因此,本文提出问题:有哪些因素显著地影响公共事件传播影响力?本文以定量研究为主要研究方式,将公共事件传播影响力分为传播规模、传播峰值速度、传播持续时间,通过文献回顾,确定影响公共事件传播影响力的四个方面:媒体议程设置、意见领袖、公众参与、事件本身,爬取公共事件平台“
学位