您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

电商系统高并发的设计思想

时间:2023-08-03 12:39:07  来源:今日头条  作者:南京路老R

电商系统的设计中高并发是很重要的一环,随着618 818 1111等这些互联网电商的大促节点的设置,流量呈现突发陡增的现象,如果设计不好,你的系统很容易垮掉,就如同洪水猛兽一般。那么高并发的设计在整个开发设计过程中就十分的重要,那么高并发的设计思想通常有哪些方面呢?

我们讲主要由以下几个方面:无状态设计、缓存设计、服务化设计、队列设计、并发设计、数据异构

1、无状态设计

什么叫无状态设计?

  • 冗余部署多个服务
  • 完全对等服务不存储业务上下文信息

目的 :无状态应用,便于水平扩展

例如 : 用户session数据,存储在redis集群中,业务系统不存储session数据。

无状态设计

2、并发设计

请求合并,降低请求的链路,

目的:减少整体请求的时间

看下面一个例子,一个用户请求需要三个环节,如果是串行,分别是10,12,20 那么就是42

串行

那么如果并发请求呢?那么就是最长一个 就是20 前提是这三个没有相互依赖关系

并发请求

3、服务化设计

系统扛不住,业务需求变化比较频繁的时候,那么这个时候我们就需要去拆我们的服务,拆到更小,更细的服务,就是做微服务

比如一个实时交易系统,一开始没有什么流量我们用一个系统就够了,但是当流量上来,业务规则变化比较大,这个时候我们会把一个系统拆分成几个,甚至十几个服务,什么查询服务,支付服务,订单服务,商品服务,库存服务等等

 

服务化设计主要解决了哪些问题

  • 流量分散,原来模式整体网络会很容易出现流量集中情况。
  • 合理降级,原来模式核心业务与非核心业务耦合,在关键时候互相影响
  • 扩容简单,原来模式由于业务多,服务整体扩容,浪费成本也不经济
  • 上线独立,原来模式单次上线需求列表多,上线时间长,影响面大
  • 开发独立,原来模式代码耦合度比较高,修改代码通常会对多个模块产生影响,操控难度大,风险高

4、缓存设计

在说缓存的时候我们要先给大家普及一个概念,CPU缓存是介于CPU和内存之间的一个临时存储设备,它用来解决CPU运算速度与内存读写速度不同的问题,缓存的容量非常小,一般就几兆或者十几兆,因为缓存的读写速度要比内存的频率更高,所以CPU减少了大量与内存之间的数据传输,所以大大提高了CPU的运输能力。

一级缓存其实还分为一级数据缓存( Data Cache,D-Cache,L1d)和一级指今缓存(Instruction Cache,I-CacheL1i),分别用于存放数据及执行数据的指令解码,两者可同时被CPU访问,减少了CPU多核心、多线程争用缓存造成的冲突,提高了处理器的效能

缓存的分类

 

所以大家在做开发设计的时候要多考虑增加缓存,可以大大减少请求量和提升请求效率。但是在做缓存的时候也会遇到二个问题

第一个就是缓存穿透的问题 缓存穿透主要只查询缓存时候,缓存里没有,然后再去数据库里查询。如果是恶意请求,在瞬间请求流量非常大的时候,缓存里都没有,所有请求都会穿透到数据库,这样会导致数据库瞬间压力会非常大

应对方案一:缓存空对象,这样就不会去查DB,但是需要考虑业务的影响

 

应对方案二:用一个定时任务不断的刷新缓存里的值

 

 

第二个就是缓存热点的问题 比如在查询某一个活动信息的时候 某一个存在Redis的Key在短时间内被查询了1亿次,这样会导致所有请求在瞬间都会请求到同一台Redis上,导致单台Redis压力过大,整体服务不可用,那么怎么去解决。也是两个方案

1、根据hash值分散存储

 

2、数据打散,采用多级缓存的策略

 

所以大家在做缓存设计的时候要注意上面的这两个点,很重要 很重要 很重要

5、队列设计

队列主要使用场景:异步处理、系统解耦数据同步、流量削峰、扩展性、缓冲等。

比如 削峰处理 :瞬间流量过大,数据排队处理

例如 : 发券系统能力有限,瞬间流量太大直接打到发券服务,可能会导致发券服务压力过大,服务不可用

 

6、数据异构

异构数据主要存储数据之间的关系,然后通过查询源库,查询实际数据。不过,有时可以通过数据冗余存储来减少源库查询量或者提升查询性能。

例如 : 评价数据,商品和评价的数据关系用Solr存储,用户和评价的数据关系用数据库存储,最后元数据采用Hbase存储。

 

总结:高并发的六大核心设计思想希望大家好好的学习,有任何不懂或者不理解的私聊老R 为你一一解答

 

#头条创作挑战赛#



Tags:电商系统   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
电商系统高并发的设计思想
在电商系统的设计中高并发是很重要的一环,随着618 818 1111等这些互联网电商的大促节点的设置,流量呈现突发陡增的现象,如果设计不好,你的系统很容易垮掉,就如同洪水猛兽一般。那...【详细内容】
2023-08-03  Search: 电商系统  点击:(180)  评论:(0)  加入收藏
亿级流量电商系统JVM模型参数二次优化
亿级流量电商系统JVM模型参数预估方案,在原来的基础上采用ParNew+CMS垃圾收集器一、亿级流量分析及jvm参数设置1. 需求分析大促在即,拥有亿级流量的电商平台开发了一个订单系...【详细内容】
2021-10-25  Search: 电商系统  点击:(307)  评论:(0)  加入收藏
电商系统架构全链路解析
1、电商系统可能是世界上最复杂的业务系统说个有意思的小事,和一位PM同行聊工作,问我电商做的如何,我说并不是一件易事。对方哈哈一笑,说电商不就那么回事吗,有啥难的,是个PM都能...【详细内容】
2020-06-19  Search: 电商系统  点击:(262)  评论:(0)  加入收藏
软件架构-解密电商系统-秒杀的原理和开发思路
说秒杀系统其实更多的高级一点的知识,不会太多的在业务上说明秒杀,那样确实太浪费时间,主要核心的点,如何处理高并发系统调优,压测。发现性能的瓶颈更好的调优。还会说说高阶的优...【详细内容】
2019-09-18  Search: 电商系统  点击:(908)  评论:(0)  加入收藏
软件架构-解密电商系统商品营销-会员模块业务!解读模块工具
上次说了商品,商品分类,品牌,分类的属性,规格。很多电商网站例如:京东,国美,苏宁他们的商品都是存储在redis中的,通过请求获取到的redis进行js的渲染动态的展示商品的信息。源码:http...【详细内容】
2019-09-16  Search: 电商系统  点击:(1016)  评论:(0)  加入收藏
解密电商系统架构发展历程
以前看的一本书淘宝这十年来,一起回顾下电商系统的发展历程,其实也折射了目前很多系统技术发展的变革。从单机版到目前淘宝的技术状态。 (一)目的 一起了解学习的分布式专题技...【详细内容】
2019-09-12  Search: 电商系统  点击:(697)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(11)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(10)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条