首页 > 其他分享 >如何打造一个高并发系统?

如何打造一个高并发系统?

时间:2025-01-23 17:53:17浏览次数:1  
标签:缓存 服务 请求 签到 Redis 系统 接口 并发 打造

今天和大家聊聊作为一个后端开发,在实际工作中,我们如何打造一个高并发的系统?
如下图所示,大概有六个层面,我们结合具体的场景直播间签到去一一细说。

一、前端

1、打散请求即把用户的接口分散一点去请求后端,尽量不要集中在某一时刻
场景:比如直播间讲师发起了一个签到,用户去点击签到,调用签到请求接口。假设这个直播间的在线人数上百万,那么这个签到接口的请求可能会有近百万的QPS。毫无疑问,这会对后端服务造成瞬时、巨大的流量冲击。
解决措施:这种瞬时洪峰流量,我们就可以在前端对用户签到接口做打散处理。比如针对直播间的在线人数,当超过某个阈值时,做3秒内任一毫秒的分散请求。避免这些请求在大流量直播的直播间里,瞬间同时请求过来,冲垮后端服务。

2、防抖防重即在前端加上防止重复点击、重复请求后端的逻辑。比如点击签到按钮后,前端做一些类似3秒的防重复请求处理,避免用户多次点击请求到后端,这样可以减少大量无意义无效的请求。

3、服务降级:在高并发、系统压力较大或部分服务出现故障时,通过暂时减少或关闭某些功能,以保证系统的核心功能仍然能够正常运行,避免整个系统崩溃。
场景:比如在签到服务中,用户签到是核心接口,当签到服务受到流量冲击导致压力过大时,可以将除该接口外的其它功能在前端暂时屏蔽掉(可配置),这样用户就不会去请求对应的接口了,优先保证核心接口正常运行。

二、Nginx/网关

1、负载均衡:这个应该大家都比较熟悉,就是尽可能将请求均匀地打在各个服务器上,常见的有轮询策略、hash策略等,就不一一赘述了。

2、网关限流:一般我们C端的服务都会有一个统一的网关系统,实现比如用户信息获取、路由的分发、接口限流等功能。我们对于C端的接口,在上线前会经过接口压测,然后根据压测结果设置接口限流值。在高并发场景下,比如签到接口设置的是10WQPS,我们就会把在同一秒内超过10W的请求直接在网关层丢弃掉,避免将下游的签到服务打挂

三、业务层

1、同步返回:比如前端请求签到接口,我们后端会返回签到成功给前端,但实际是否成功还不确定,因为我们肯定不会实时同步去查询或者写入MySQL。毕竟我们的MySQL还是比较脆弱的,经不住上万QPS同时操作

2、异步处理:跟上面其实意思差不多,同步返回结果,但我们会将实际的数据使用中间件如kafka、RocketMQ、RabbitMQ、Redis等进行削峰,然后推送到下游,最后使用脚本去消费推送的数据进行实际的逻辑处理。

四、数据层

1、本地缓存:感兴趣的可以翻翻 我之前写的文章 。可以说本地缓存是服务器上读写性能都最高的介质了,因为本地缓存是直接操作该服务器本身的内存呀。只要内存够大,几十万、几百万的QPS都轻轻松松不在话下

2、Redis缓存:Redis缓存的性能仅此于本地缓存,一般抗10万以下的QPS用Redis就够了。Redis缓存实际上也是操作的Redis服务器的内存,只是Redis服务器和本地服务器还有网络连接。所以Redis性能会比本地缓存稍微差一点,一般同等配置可能都会差一到两个量级。

3、MySQL:这个大家应该都很熟系了,常用的分库分表、读写分离等等这时都排上用场了。

五、底层架构

1、K8s弹性伸缩在高峰期提前扩容、高峰期之后缩容。在流量突刺时快速扩容,在流量下落时缩容。k8s提供了多种灵活的弹性伸缩机制,可以根据不同场景和需求自动调整集群的资源使用,确保系统能够在负载波动时稳定运行。根据实际的应用场景,合理配置这些伸缩机制,能够有效提升系统的弹性和可用性。最重要的是,比之前使用CVM物理机,能极大地降低服务器成本

2、微服务架构:微服务架构通过将单一应用拆分成多个独立的服务,使得每个服务可以独立扩展和维护,从而提高系统的可扩展性和维护性。例如直播间红包是一个服务、直播间签到是一个服务、直播间抽奖又是另一个服务...。这些服务通常是在单独的服务去维护,尽量做到互相隔离,互不影响

六、日志监控和告警

假如现网服务出现了问题,我们如何快速地感知呢?那当然是在各个关键服务都增加日志记录,然后增加监控告警,触发某个阈值时就告警。尽量在用户感知到问题前,我们去发现到并解决。

以上,就是我们在设计高并发系统时,需要考虑的一些问题和一些解决方案。当然,这里只是讲了大的宏观架构层面,落地到具体的业务场景中,还需要结合实际情况去思考一些细节和方案,去解决实际的性能瓶颈点,这是一件非常有意思的事,希望大家都能从解决问题中收获快乐

标签:缓存,服务,请求,签到,Redis,系统,接口,并发,打造
From: https://www.cnblogs.com/lmz-blogs/p/18688280

相关文章

  • PHP+MYSQL+HTML实现在线购物商城,基于php的电商系统,电子商务网站,零食购物商城
     一,功能介绍        前台主要包括网站首页、商品推荐、最新商品、新闻咨询、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、最新商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等操作,购......
  • 神旗视讯: 从零搭建高性能信创会议系统
    概述:    本文描述如何在阿里云上,从零搭建一套免费好用的信创会议系统。同样的步骤也可以在华为云,腾讯云,电信云,移动云等公有云系统搭建此系统。    更加详细的安装配置指南,可以访问神旗视讯技术社区。阿里云准备工作:    1.申请VM:    以下以......
  • 电脑分区后进不了系统怎么办,修复教程
    电脑分区后进不了系统,可能的原因有多种,包括分区操作不当导致系统文件丢失或损坏、BIOS设置错误、引导文件未正确配置等。针对这些问题,可以尝试以下解决方法:一、检查BIOS设置断开多余的外部硬盘驱动器:如果电脑连接了多个硬盘,确保只从包含操作系统的硬盘启动。进入BIOS设置:重启......
  • SSM白酒营销管理 SSM框架下白酒营销与管理信息化平台的构建 基于SSM框架的白酒销售与
    计算机毕业设计SSM白酒营销管理gh21y (配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着互联网技术的飞速发展,白酒行业也在不断探索如何通过数字化手段提升营销与管理效率。传统的白酒营销管理方式往往依赖于人工记录和线下操作,不......
  • SSM安卓日程管理APP 利用SSM实现的Android日程管理应用设计 基于SSM框架的Android日程
    计算机毕业设计SSM安卓日程管理APPqksh9(配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着移动互联网的飞速发展,人们的生活节奏日益加快,高效的时间管理和日程安排成为提升生活和工作效率的关键。在这样的背景下,开发一款基于SSM框架......
  • SSM本科生考勤与考核管理信息系统 SSM架构下的本科生考勤与考核信息化平台 基于SSM框
    计算机毕业设计SSM本科生考勤与考核管理信息系统38de1(配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着信息技术的飞速发展,高校教学管理逐渐从传统模式向信息化、智能化转型。在这一背景下,开发一套高效、便捷的本科生考勤与考核管......
  • 基于Java的宠物医院管理系统 毕业设计源码14635
    目 录1绪论1.1选题背景1.2研究现状1.3论文结构与章节安排2 宠物医院管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 操作可行性分析2.1.3 法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分析......
  • springboot助农管理系统 毕业设计源码15080
                                 目录1绪论1.1研究背景及意义1.3系统开发的目标意义1.4论文结构与章节安排2.助农管理系统系统分析2.1可行性分析2.2系统功能分析2.3 系统用例分析2.4业务流程......
  • 【附源码】springboot 玩具销售系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot某火锅店管理系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......