一招上手!这样设计扛住亿级流量活动系统

作者 | 刘艳杰

责编 | 伍杏玲

出品 | CSDN云计算(CSDNcloud)

在企业里,做活动是一种十分常见的需求,有面向C端用户开展的活动,也有面向公司内部员工的活动。随着互联网技术的不断发展和疫情等方面的原因,线上开展的活动也越来越多,常见的形式有:内容征集、评论弹幕、点赞投票、竞猜答题、抽奖红包、组队分享、PK排行榜等,无论是单项活动还是多种玩法,其中不乏有会产生大量并发请求的活动。

活动期间,用户在短时间内密集参与,像瓜分红包、秒杀等活动,将引发用户集中点击,产生高并发请求,对系统产生一定的压力。如果活动期间负载过高或系统崩溃,将会导致用户无法参与活动,引起用户吐槽和投诉。

然而,活动类系统很多时候仅是“一次性”的,所以大家在这类系统的开发上投入的人力物力将相对较少,甚至有些活动是研发人员利用空隙时间开发的。所以往往我们发现,如果不是进行细致的开发设计和上线前的压测,一些大活动的系统在上线后出现问题的概率是非常高的。

一个能支撑大流量的活动系统是活动能够成功的关键,接下来我们一起看下大流量的活动系统应该如何设计架构。

大流量活动系统的架构长啥样?

大流量活动系统需要应对大量并发调用,在系统设计上就要求具备水平扩容的能力来满足业务需求。通常会采用如下的分层的系统架构设计,因为活动系统功能通常比较简单,模块较少,所以系统架构不会很复杂。

通常在系统从0~1阶段,为了让系统快速上线,通常是不考虑分层的,但是在面对大流量活动系统时就不得不进行分层设计,分层架构可让系统更容易进行横向扩展,提升系统吞吐量,这也是大流量系统的核心需求。同时,分层架构也增加了系统的复杂度和工作量。

以上架构分为LB、业务接入层、业务逻辑层、数据存储层等多个层次。

LB

用户流量入口,对外屏蔽内部服务架构细节,对内提供反向代理流量转发,提升整个系统的吞吐量。LB的核心作用是通过流量分发提升整个系统的吞吐量。

业务接入层

这层用来实现一些通用的业务逻辑处理,如数据编解码、用户身份校验、访问频率控制、限流降级、数据缓存、微服务入口等功能。这层通常在业务逻辑层内部通过中间件的形式实现。开发需要实现该层的业务逻辑,还需要和底层资源进行交互。

该层实现的业务功能是很多系统所需要的,多个业务逻辑层服务共用该层服务。值得注意的是,该层通常是无状态的,可以通过水平扩展增加系统吞吐能力。

业务逻辑层

业务逻辑实现的核心层,业务逻辑相关代码基本都集中在这一层。该层需要开发人员花费大量的时间进行设计实现,开发时间的多少将直接影响业务逻辑是否能够进行充分的进行设计和实现。业务性能问题,系统Bug常常光顾这一层。

开发者需要实现该层的业务逻辑,还需要和底层资源进行交互。该层通常是无状态的,可以通过水平扩展增加系统吞吐能力。

数据存储层

业务数据存储层,几乎所有的业务数据最终都需要持久化到数据库中,这层通常是系统瓶颈所在。

所有的活动类业务都需要数据库层,正常合理的使用数据库对系统性能将会产生非常大的影响。

数据存储层是有状态的,较难通过水平扩展增加系统的吞吐能力。通常是通过纵向提升数据库实例配置规格来提升数据库性能,但是纵向配置是有物理上限的,不能无限提升的。这就需要开发人员在这一层进行充分的设计,提升这一层的服务能力。

如上的系统架构是最常见最基础的分层系统架构,但在面临大流量活动系统时,即使经验丰富的开发人员,也不敢打保票说一定抗的住的。

实现大流量系统面临的挑战有哪些?

系统各层需要考虑的问题有:

当我们把架构中每一层需要考虑事项展开之后,系统的开发工作量就不会想前面看着少了,原本看着简单的系统就不再简单,需要考虑和解决的问题非常多。

流量入口LB层

  1. 安全防护:防止各类安全攻击,破坏系统、盗取数据

  2. 接入质量:需要考虑使用各类网络各个地域的用户的接入质量,否则很可能有部分用户因接入质量无法参与活动

  3. LB配置维护:需要靠性能可靠性,负载均衡策略,RS更新维护与健康检查、日志监控告警等多个方面的问题

  4. 拨测监控:监控系统是否正常提供服务

  5. 网络带宽:网络带宽是否足够,带宽问题通常比较隐蔽不易发现

业务核心层

  1. 基础资源:涉及计算、网络、存储等资源的创建配置管理,涉及安全扫描、安全防护、监控告警、系统优化等多访问的问题

  2. 业务部署:涉及服务的发布变更、频控限流、容错容灾、性能优化、日志采集等诸多方面的问题

  3. 业务开发:业务逻辑设计实现,容错、容灾能力实现

数据存储层

  1. 数据安全:防止密码泄露数据被盗等问题

  2. 业务设计:数据库分库分表设计,数据库索引设计

  3. 性能优化:提升系统吞吐能力

高性能高可用

  1. 高性能:系统各层的处理能力及性能瓶颈,如何排除链路中的性能瓶颈及优化,排除链路中的性能瓶颈可能需要进行大量的工作才能发现

  2. 高可用:全链路的容错、容灾设计,如何降低避免诸如网络抖动、可用区故障等故障对系统造成的影响

除了图中列举的,业务上还需考虑如下问题:

  1. 如何对用户身份进行校验保证用户身份的真实性?

  2. 如何防刷、防止羊毛党薅羊毛?

  3. 如何对业务数据进行统计?

  4. 如何快速搭建开发、生产等多套环境?

  5. 如何快速处理线上问题?

  6. 如何进行活动运营?实现一套运营管理后台系统?

  7. 如何进行活动开关控制?定时轮询 or 活动推送?

当所有这些问题汇集到一起时,对开发人员产生了不小的挑战。为了使活动万无一失,我们都需充分考虑。研发团队具备:

  1. 系统架构:需要进行整体性的技术架构设计规划

  2. 系统运维:能够对全链路业务资源进行运维管控

  3. 业务设计:实现业务逻辑,进行容错、容灾设计

  4. 性能优化:充分考虑系统可能存在性能瓶颈,并针对性的进行设计优化

  5. 容量设计:对系统容量进行评估,如何应对超出预估的大流量调用

  6. 监控告警:主动发现系统当中的各类问题,提早排除隐患

  7. 服务部署:相关业务资源的申请及部署,业务服务的部署

如此一来,开发团队的精力可能会被分散到系统的各个方面,这将导致开发团队没有足够的精力聚焦于业务逻辑,也没有足够的精力解决系统面临的最核心问题:如何应对大量高并发的服务调用。

高性能高可用的架构设计原则和方案目前有很多,但要实现一个高性能高可用的系统却并非易事,其背后有非常多的具体细致的工作要做:如系统容错容灾容量等问题。

基于Serverless模式的腾讯云·云开发(以下简称为“云开发”),可帮助开发者解决上述问题和挑战。

Serverless 云开发:解题之法?

业务系统概括起来需要实现两个能力:

  1. 业务逻辑:实现业务业务逻辑,包括前端、后端业务逻辑。部分业务逻辑为通用需求。

  2. 访问链路:搭建高性能大容量的访问链路,连通用户侧和业务逻辑层。这是通用需求。

腾讯云·云开发对通用的访问链路以及部分通用的逻辑抽象出来进行统一的实现,帮助开发者解决通用问题。云开发提供安全、高可靠、高并发、高性能的通用后端能力基础,为开发者提供高性能高并发大容量的访问链路,让开发者无需关心链路搭建涉及的一系列问题,让业务方基于Serverless架构实现业务逻辑,为开发者屏蔽底层基础架构,提供高效的弹性扩缩容能力,解决业务容量问题。云开发帮助业务解决通用性问题,让开发者有更多精力专注于解决业务本身,降本增效。

传统模式和云开发模式的对比如图所示:

在云开发模式下,用户仅需关注前后端的核心业务逻辑设计实现,无需关心底层基础设施和访问链路。

云开发服务架构

3.1 业务资源的弹性伸缩能力

开发者基于腾讯云·云开发提供的业务资源实现其业务逻辑,依托于云开发平台底层资源的弹性扩缩容能力,用户业务具备了弹性伸缩的能力,高效快速,避免了传统模式下扩容所产生了资源和人力成本。业务服务按需使用资源,按量计费,节省项目成本。

云函数

云函数平台架构

用户请求经云函数接入层 Invoker 进入到用户云函数运行时,触发用户逻辑逻辑,云函数是一种弹性的计算资源,能够自动跟随用户的并发量进行弹性伸缩,如下图所示:

每个并发的用户请求都会对应一个云函数实例,当用户请求上涨时,云函数实例自动进行扩容,当用户请求量下降时,云函数实例逐步进行缩容。弹性伸缩的过程是系统自动进行的,方便快速,为用户提供了强大的弹性伸缩能力,进而为用户业务的高并发提供了强有力的能力支持。

云开发目前为开发者提供单个云函数上限 1000 并发的能力支持,如果云函数的平均执行时间为 100ms,那么单个云函数可以达到 10000 QPS,可满足大部分用户场景的需求,50个云函数的总QPS将可以达到 50W QPS。

云数据库

腾讯云·云开发为用户原生提供数据库实例,用户不需要购买维护数据库实例,通过云开发SDK,开发者可以快速开始进行业务开发,节省时间。

云数据库在接入层和数据库底层也做了非常多的专项优化,同时也在部署方面进行了诸多方面的设计。

云开发数据库架构

云数据库接入层进行了分层设计并支持大规模的水平横向扩容,用户请求可在集群间进行灵活调度,应对可能出现的服务故障,提供更高的可用性和更短的恢复时间。用户请求经数据接入层服务进入到数据库引擎层,数据库接入层部署多个跨AZ的集群进行。数据库接入层帮助用户实现了数据库连接的维护与优化,用户无需关心数据库如何连接访问,维护数据库账密,提升了数据库的安全性。

腾讯云·云开发数据库为用户提供:

  1. 自动加索引:对用户慢查询请求进行分析,并针对性的进行自动索引优化,能够在用户无感知的情况下优化数据库性能,提升系统吞吐量,提升并发能力。

  2. 自动弹性Cgroups按需提供计算资源:根据用户数据库负载按需调整数据库运行所需要的计算资源。

  3. 自动进行在线热迁移:当主机负载过较高时,自动在线热迁移用户实例到负载低的主机,此过程用户几乎是无感知的。热迁移同时也能够支持全局的数据库主机间的负载均衡。

云开发通过以上措施,在降低用户数据库成本的同时,为用户提供数据库弹性能力,借助这些能力,开发者较少的关注数据库。

云开发数据库还为开发者提供实时数据库推送能力,用户基于此实现实时推送类业务,降低搭建推动服务的成本。

如前文所述,数据库层是有状态的,较难进行横向扩缩容,云开发为用户提供一定的纵向扩缩容能力与优化,提升数据库性能。用户自身也需要对数据进行一定的设计优化。

3.2 访问链路的弹性伸缩能力及可靠性设计

云开发平台为用户搭建了直达业务逻辑的高性能大容量的访问链路。用户不需要搭建和维护访问链上的一系列资源服务,降低了资源和人力成本。

云开发平台的性能和可用性将直接影响到用户业务的性能可用性。云开发作为一个公有云服务,在给开发者提供各类能力支持同时,更重要的是能为客户业务提高性能高可靠的服务,为此,云开发服务对系统的可用性容量等方面进行大量的设计优化。

容错:云开发服务通过链路优化、异常重试、多级缓存、缓存续期、失败降级、故障剔除等多方面的优化,提升系统系统的容错能力。

容量:云开发通过容器化的服务部署方式,实现访问链路的弹性伸缩能力,具备了容器化所带来的优势,当用户流量上涨时,访问链路可随着用户流量自动的进行弹性扩缩容,避免了因访问链路瓶颈导致等用户业务受限的问题。

容灾:基于容器化的部署方式,数据流接入层服务进行了多集群的服务部署,每个集群都进行了跨可用区部署,具备跨可用区的容灾能力。当单机、单可用区出现故障时,能够快速的通过集群切换进行容灾。同时,数据流服务依赖的其他服务,都具备多集群的跨AZ的容灾能力。

在腾讯云·云开发模式下,云开发搭建好从客户端到业务逻辑的访问链路,开发者无需关注用户端到业务逻辑之间的链路搭建以及涉及的一系列问题。同时,云开发为用户提供当前流行的Serverless架构能力,开发者基于轻量云函数、云托管来实现业务逻辑,无需关心基础设施,具备Serverless所带来的极简运维、按量计费、弹性伸缩等方面的优势。帮助开发者真正的做到了仅需关注业务逻辑层的实现,解放了开发者的生产力,让开发者有更多的时间专注于业务设计。

除了上述的降本增效、微信原生之外,云开发还提供了CMS内容管理、开源工具插件和低代码开发平台等能力和服务支持,帮助用户更快更好地进行开发。

抗住 5亿访问,腾讯云·云开发为你保驾护航

当一种新的技术形态出现在人们面前,有人选择先观望,再决定是否尝试接纳,而有人则大胆尝试。Serverless和腾讯云·云开发虽诞生仅两年,不妨碍云开发受到一大批开发者的追捧。目前,云开发注册账户数超过65万,服务超过100万开发者,云开发日均调用量近10亿次,2021春节期间,日服务调用量超过了16亿次。

云开发在腾讯游戏、微信支付、微信读书、猫眼电影、深圳机场等多样化活动上有较好的应用,帮助业务快速实现需求,平稳支持大流量洪峰。

如去年《创造营2020》决赛成团之夜,云开发保障业务稳定运行,实现了100%安全无死角的同时,还在投票“秒杀”场景下高性能地 hold 住全场,为节目的顺利进行保驾护航。

上线两周、访问次数即破5亿的四川省官方健康码“四川天府健康通”小程序就是基于云开发底座完成开发的。前端采用WeApps云开发低码的可视化、组件化、低码化等能力,后端采用了云函数、云数据库、云托管等云原生能力,充分发挥了云端低码可视化开发的优势及便利。在十余天内就高质量地完成了定制化开发工作。同时与传统开发模式相比,交付效率提升一倍,人力成本却能缩减一半。

今年春节,微信红包封面再次引爆社交网络,限时开放的个人红包封面制作活动更是直接拉低门槛,让更多人能够便捷享受到定制红包封面带来的乐趣,这活动便是搭载在云开发上,在整个活动期间平台抗住了上亿流量洪峰,资源成本仅花费几千元,有效地提高研发效率,极大降低人力成本。

总结

一个简单的系统需充分的设计才能迎接大流量活动的挑战,各种类型的系统都有一些通用的基础性的工作,腾讯云·云开发将这类通用的工作从系统中抽象出来,以服务的方式提供给用户,让开发者无需关心这些基础工作。

大流量的活动系统往往需要线上扩容的需求,云开发通过提供Serverless架构承载用户业务,让业务无需关系底层基础设施的同时,具备自动化的弹性扩缩容能力,帮助系统抗住大流量访问。

如此一来,云开发可帮助开发者从基础性工作中解放出来,有更多时间做业务设计、数据库设计、压力测试等工作,让系统更好地迎接大流量活动调用。

更多阅读推荐

  • 无法恢复,欧洲云服务巨头数据中心起火

  • CPU 空闲时在干嘛?

  • 低代码,让人人都可以是开发者

  • 三探云原生全景图,这次聊聊运行时层

  • 一眼看尽5G江湖,Gartner发布5G网络基础设施魔力象限报告

  • 冯诺依曼架构的 IO 鸿沟,谁能来填补?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域名解析到服务器

这本章主要讲购买的域名和服务器怎样进行域名解析。简单来说就是别人访问你的网站只需要在浏览器上输入你购买的域名,就可以访问你搭建的网站。 文章目录1. 解析2. 设置记录类型3. 绑定公网ip1. 解析 2. 设置记录类型 选择A类型 3. 绑定公网ip 效果图 备案 http…

基因行业容器存储解决方案

1、基因行业背景 1.1. 中国基因市场分析 基因组学是未来精准医疗的“基石”。70%的基因企业选择使用云计算来处理基因组相关业务。过去一年内,阿里云为基因医学影像数据提供了安全可靠的存储,500%数据增长,增长迅猛。强大无限制的计算能力&…

位置转经纬度~此key未开启WebserviceAPI服务功能

文章目录1. 现象2. 腾讯位置服务3. 登录开发者平台4. 开启WebserviceAPI5. 测试地址转经纬度api1. 现象 此key未开启WebserviceAPI服务功能,您可登陆https://lbs.qq.com/进行控制台key管理页面,找到此key并设置启用webserviceAPI 2. 腾讯位置服务 ht…

程序员今年在相亲市场上这么受欢迎?

前段时间有一个很火的网络段子:杭州的工程师在某婚恋交友网注册了一个账号,经过一个多月的“无人无津”后,他在公司职位栏加上了“JAVA开发工程师”短短几天就收到238封交友私信,最后还因为私信太多回复不了,他选择暂时…

云原生时代,谁是容器的最终归宿?

前言 “云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化…

腾讯云~安装MongoDB

文章目录一、 安装建议二、 安装步骤2.1. 下载2.2. 解压缩2.3. 重命名2.4. 配置环境变量2.5. 使其生效2.6. 配置MongoDB2.7. 启动MongoDB2.8. 网络安全组一、 安装建议 MongoDB 可以在mac/win/linux上安装,我个人建议在linux上安装会更好,这样测试起来更…

全部满分!阿里云函数计算通过可信云21项测试

今日,“2020 可信云线上峰会”正式召开。会上,中国信通院公布了混合云安全、云组网、函数即服务、消息队列、云计算安全运营中心等首次评估结果。阿里云函数计算通过了基础能力要求、平台可观测能力、服务性能、服务安全和服务计量准确性等 21 项测试&am…

Springboot集成Elasticsearch

在springboot中集成Elasticsearch&#xff0c;以我开发的博客系统项目为例,这是一篇文章内容。 准备 本次Elasticsearch使用的是单机版&#xff0c;版本为6.7.8&#xff0c;并且装好中文分词器。 Springboot集成Elasticsearch 首先在pom文件中引入Elasticsearch依赖。 <!-…

CentOS 替代品

我推荐替代产品&#xff1a;AlmaLinux 免费&#xff0c;和centos相似度都比较高&#xff0c;社区活跃度高 官网&#xff1a;https://almalinux.org/

卡顿人生,如何拯救?

原文链接&#xff1a;https://yqh.aliyun.com/detail/17536?utm_contentg_1000161682 本文为阿里云原创内容&#xff0c;未经允许不得转载。

三个月前被 K8S 弃用,Docker 火了!获 2300 万美元融资

整理 | 寇雪芹头图 | 下载于视觉中国出品 | CSDN云计算&#xff08;ID:CSDNcloud)美国加州时间 3月16号&#xff0c;Docker 宣布获得 2300 万美元的 B 轮融资。经过此轮融资&#xff0c;Docker的总资金达到5800万美元&#xff0c;主导本轮投资的是硅谷风投公司 Tribe Capital&a…

阿里腾讯今日头条纷纷翻牌子,ClickHouse到底有什么本事?

ClickHouse是近年来备受关注的开源列式数据库&#xff0c;主要用于数据分析&#xff08;OLAP&#xff09;领域。目前国内社区火热&#xff0c;各个大厂纷纷跟进大规模使用&#xff1a; 今日头条 内部用ClickHouse来做用户行为分析&#xff0c;内部一共几千个ClickHouse节点&am…

开启VScode的nvue、vue文件类型支持 - 代码高亮

装Vetur创建&#xff0c;配置&#xff0c;ok 注意&#xff1a;后面的值都是vue 效果图

Dubbo-go 发布 1.5 版,朝云原生迈出关键一步

引语 计算机技术浪潮每 10 年都有一次技术颠覆&#xff0c;相关知识体系最迟每 5 年都会革新一次&#xff0c;大概每两年贬值一半&#xff0c;在应用服务通信框架领域亦然。凡是有长期生命的通信框架&#xff0c;大概有 5 年的成长期和 5 年的稳定成熟期。每个时代都有其匹配的…

互联网究竟是怎么诞生的?

作者 | 小枣君来源 | 鲜枣课堂&#xff08;ID&#xff1a;xzclasscom&#xff09;1957年10月4日&#xff0c;苏联发射了人类第一颗人造卫星——斯普特尼克一号。斯普特尼克一号&#xff08;Спутник-1&#xff09;这颗卫星的升空&#xff0c;轰动了整个世界&#xff0c;也…

引入阿里云GA,商米加速IoT产品和解决方案全球化布局

在全球化战略布局下&#xff0c;今年以来&#xff0c;商米联合全球合作伙伴推出了多款智能IoT 产品和数字化解决方案&#xff0c;为商户提供更专业地服务。同时&#xff0c;今年6月份&#xff0c;商米还引入阿里全球加速GA&#xff0c;加速实现信息化办公系统全球部署&#xff…

企业方案 vscode

文章目录1. 下载插件2. 配置1. 下载插件 2. 配置 {"mithrilEmmet.vnodeFactoryFunctionName": "m", // Specifies the name of vnode factory function. E.g. for mithril, use m; for hyperscript, use h."mithrilEmmet.outputDefaultTagName"…

问答题:如何构建一套满足GPT-3的存储系统?

这几天GPT-3成为人工智能甚至整个科技圈最为热门的话题。作为著名人工智能科研公司 OpenAI 开发的文字生成 (text generation) 人工智能&#xff0c;GPT-3的相关论文在2020年5月份就已经发表&#xff0c;由于使用了45TB的数据&#xff0c;并采用了天文数字级别的1,750亿参数量而…

抖音实战~手机号一键注册登录流程(验证码)

文章目录一、 一键注册登录流程二、前端2.1. 验证码获取流程2.2. 验证码获取代码三、后端验证码3.1. 前置处理3.2. 拦截器添加3.3. 获取验证码一、 一键注册登录流程 二、前端 2.1. 验证码获取流程 1.点击->获取验证码调用后端获取验证码api接口2.验证码59秒倒计时3.重复点…

《2021中国数据资产化工具市场研究报告》隆重发布

早在五年前&#xff0c;数据是21世纪“新石油”的口号就已响彻行业。 在2020年4月&#xff0c;我国首次将“数据”与土地、劳动力、资本、技术并列为五大生产要素&#xff0c;并提出要“加快培育数据要素市场&#xff0c;完善数据要素的市场化配置机制”。企业作为市场主体&am…