【高并发】- 生产级系统搭建 - 2

news2024/11/19 13:19:10

前言

    本章讲解高并发系统中常见概念及相关设计的方案,目的是让小伙伴都了解高并发系统中,每个环节所涉及到的相关概念。帮助大家更好地理解和掌握高并发系统中的场景及设计思想。

1. 常见高并发系统架构图(这里以秒杀系统为例)

上图中,架构比较简洁,下面将对这5层结构进行讲解

  • 用户层:用户端的展现部分,主要涉及商品的相关信息及当前“秒杀”活动的信息

  • CDN层:缓存静态资源文件

  • 负载均衡层:拦截请求及分发路由等

  • 服务层:相关的逻辑处理

  • 基础设施层:数据存储、大数据计算及消息推送相关操作

2. “秒杀”活动设计原则

业界总结出五大设计原则:

(1)数据应尽量少

    在用户请求时,发送请求所传输的数据和服务端响应请求所传输的数据应尽可能少。因为,这些数据在网络中传输是需要时间的,消息体太大会影响传输效率。另外发起请求所传输的数据需要在服务端进行各种解析,例如Json的反序列化等。这些操作都会消耗CPU资源,所以减少传输的数据能有效提高CPU使用率。

减少数据的操作包括:

① 简化“秒杀”页面的大小,去掉一些不必要的页面装修;

② 能预热的数据尽量提前预热;

③ 在发送“秒杀”请求时,只带上最有用的信息;

④ 在服务端返回数据时,返回最简数据体;

另外,尽量少依赖外部服务,能“自己做”就“自己做”

(2)请求数应尽量少

    在用户进入商品“秒杀”详情页时,浏览器会渲染各种额外的数据,如当前页面所关联的CSS、JavaScript文件、商品图片,以及页面Ajax发出请求所获取的数据等。这些额外的请求书应尽量少,因为浏览器每发送一次HTTP请求都会消耗一定的性能,特别是有些请求是串行的(如多个按顺序使用的Javascript文件)。

减少请求数的一个最常用的方案是:

① 将多个静态文件进行合并请求,即将多个CSS和JavaScript文件进行合并请求。在请求URL中,使用逗号做文件的分割。例如:https://xxx.com/active/1.js,2.js,3.js

② 这些静态文件在服务端还是独立存放的,只不过在服务端有一个解析此种URL的组件(如淘宝开发的nginx-http-concat),它会将解析出来的各个文件进行合并返回。

(3)请求路径应尽量短

    请求路径可以被理解为“请求从用户端发出到响应数据回到用户端这中间的各个节点”,如浏览器、CDN、负载均衡器、Web容器等。请求每经过一个节点都需要建立一个TCP连接,所以节点离用户越近,则意味着路径越短,这样性能和体验就越好。

缩短请求路径的一般做法是:

① 将依赖性强的应用合并部署在一起,将RPC变成对应用内部方法的调用。

② 还可以使用多级缓存来缩短路径。

(4)尽量使用“异步化”

    所谓“异步化”指的是:接收端接受用户的所有订单请求,并将这些请求直接丢进队列中;下单系统根据自身的实际处理情况,从队列中获取订单请求,并将其下发给订单中心生成真正的订单;同时,系统告知用户当前订单的处理进度,以及他们前面有多少人在等待。这样做可以解决“同步化处理不了峰值流量”的问题。

(5)避免单节点

    单节点是所有系统设计中的大忌,因为单节点系统意味着系统的不稳定性较高,可能会出现不可用的情况,给企业带来直接的损失。在设计系统(特别是“秒杀”系统)时,必须保证系统的高可用。

    章节拆分比较细,是为了让大家看的过程中,能够尽可能把内容接收进去,下章节讲解高并发系统的动静分离方案设计、热点数据处理、管控等介绍。

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

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

相关文章

国电投-光伏电站人工智能运维大数据处理分析比赛(记录)

前言 1-1 简介 DataFountain平台举办的比赛,赛题:光伏电站人工智能运维大数据处理分析。以下是比赛链接:光伏电站人工智能运维大数据处理分析 Competitions - DataFountain 1-2 任务背景 在分析光伏发电原理的基础上,论证了辐照…

虹科分享 | 2022年传感器事业部文章精选

2022年 文章精选 精选案例文章 虹科案例 | HK-Micronor光纤传感器应用领域介绍(上) 虹科案例 | HK-Micronor光纤传感器应用领域介绍(下) 虹科案例 | 如何更加准确的表征罐箱内燃油的质量规格? 虹科案例 | 监测各种…

java Vue+Springboot读书学习笔记共享平台

读书笔记共享平台的设计基于现有的网络平台,可以实现用户管理及数据信息管理,方便管理员对后台进行管理有详细的了解及统计分析,随时查看信息状态。 系统功能设计是在系统开发和设计思想的总体任务的基础上完成的。该系统的主要任务是实现读书…

CnOpenData中国保险机构网点全集数据

一、数据简介 改革开放以来,中国保险行业飞速增长,在补偿灾害损失、维护社会安定、支持中国的经济建设等方面发挥了重要作用。整个行业的突飞猛进体现在三个方面: 一是保险机构数量增长迅速。中国保险公司的数量从1980年的1家迅速增加至200多…

【云原生】Prometheus之图形化界面grafana与服务发现部署

内容预知 前言 1. 部署 Grafana 1.1 grafana的下载与安装 (1)安装grafana (2)配置数据源 (3)导入 grafana 监控面板 (4)删除模板操作 4.2 grafana的中文插件安装 2. 部署 Prometheus 服务发现 2.1…

C语言中二维数组的基本使用 定义 赋值读写指定元素的值 作为函数参数传递的注意点

文章目录问题依次解决C语言中二维数组如何定义、如何一次性赋值?如何使用 sizeof() 计算二维数组的行数、列数?【与定义数组的地方,在同一作用域内可用】如何读写指定位置的元素?【不同作用域,有两种方式】不同作用域内…

Git(见资源)

Git的概念【1】Git技术:公司必备,一定要会 【2】Git概念: Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。【3】什么是版本控制? 版本控制是一种记录一个或若干文件内容变化&#…

BGP基础实验(华为)

题目: 思路: 该题分为三个AS区域,并且三个区别间分别使用不同的路由,EBGP,IBGP,OSFP连接等,其中AS1与AS2之间使用的是EBGP连接,这点需要EBGP的命令来进行实现,AS2中使用的OSPF,AS2&a…

不规范使用ThreadLocal导致的bug,说多了都是泪

ThreadLocal一般用于线程间的数据隔离,通过将数据缓存在ThreadLocal中,可以极大的提升性能。但是,如果错误的使用Threadlocal,可能会引起不可预期的bug,以及造成内存泄露。 因为线程重用导致的信息错乱的bug 有时我们…

一起自学SLAM算法:11.2 环境感知

连载文章,长期更新,欢迎关注: 环境感知就是机器人利用传感器获取自身及环境状态信息的过程,自主导航机器人的环境感知主要包括实时定位、环境建模、语义理解等,下面具体讨论。 11.2.1 实时定位 定位其实就是在回答图…

BI技巧丨近两年及当年月份数据汇总

BOSS:白茶,有个需求,不知道你能不能做? 白茶:不能! BOSS:我还没说呢,小伙砸!做了加钱! 白茶:BOSS您吩咐! BOSS:是这样的&a…

C语言开发基于RT-Thread家庭安全环境检测系统源码,RTT设计大赛

基于RT-Thread家庭安全环境检测 简介 基于RT-Thread和中蓝讯科的AB32VG1开发板实现的家庭安全检测功能,主要包含如下功能: 1、基于RT-Thread操作系统的按键组件,音频播放组件等; 2、基于AB32VG1开发板的语音播放功能&#xff1b…

BlackByte勒索软件开始使用新的数据泄露工具ExByte

BlackByte 勒索软件在 2021 年被首次发现,随后不断发现其变种。BlackByte 勒索软件不仅使用双重勒索,还运营着勒索软件即服务(RaaS)。最近,研究人员发现 BlackByte 开始使用名为 ExByte 的数据泄露工具来窃取受害者的数…

什么品牌的蓝牙耳机音质好?四款高音质蓝牙耳机推荐

随着时代的发展,蓝牙耳机的使用频率越来越高,在日常生活中随处可见的戴蓝牙耳机的人。或是听音乐,或是追剧,或是玩游戏等等。在现如今众多的蓝牙耳机品牌当中,什么品牌的蓝牙耳机音质好?下面,我…

基于Yolo实现的交通路况汽车识别 附完整代码(使用Keras框架)

一、问题描述 假设你现在在做自动驾驶的汽车,你想着首先应该做一个汽车检测系统,为了搜集数据,你已经在你的汽车前引擎盖上安装了一个照相机,在你开车的时候它会每隔几秒拍摄一次前方的道路。 您已经将所有这些图像收集到一个文件夹中,并通过在您找到的每辆车周围画边界框…

BlackStone:一款功能强大的渗透测试报告工具

关于BlackStone BlackStone是一款功能强大的渗透测试报告工具,该项目可以帮助广大研究人员自动起草和提交渗透测试或安全研究审计报告。该工具允许我们在数据库中提交和存储渗透测试过程中发现的漏洞,并通过内部和外部审计来对漏洞进行分类。除此之外&a…

界面控件DevExpress WinForm的先进技术——服务器和即时反馈模式

DevExpress WinForm拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任…

vue中如何优雅的实现数字递增特效

需求 前几天项目开发中遇到一个需求,需要在数字更新时,实现其动态递增的效果 并且,在数字大于10000时,将单位进行转换,如数字大于10000时,单位从m变为万m 我们以vue中开发为例,一一实现下这两个…

多目标跟踪(MOT)入门介绍

1. 相关方向 这些是我所了解的多目标跟踪(MOT)的一些相关方向。其中单目标跟踪(VOT/SOT)、目标检测(detection)、行人重识别(Re-ID)都是非常热门的方向。而偏视频的相关方向就比较冷…

java 随机数种子 java设置随机数种子教程 java随机数种子怎么设置

我们常用的随机数生成就是Math.random();java.util.Random类有两种方式构建方式:带种子和不带种子import java.util.Random;不带种子:不带种子将会返回随机的数字,每次运行结果不一样public class RandomTest {public static void…