25张图详解大型分布式电商系统架构(二)

本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好的参考价值。

1、电商案例的原因

分布式大型网站,目前看主要有几类:

大型门户,比如网易,新浪等;

SNS网站,比如校内,开心网等;

电商网站,比如阿里巴巴,京东商城,国美在线,汽车之家等。

大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NoSQL,分布式缓存,使用高性能的通信框架等。电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NoSQL等技术。因此,我们采用电商网站作为案例,进行分析。

2、电商网站需求

客户需求:

建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款;

用户购买时可以在线与客服沟通;

用户收到商品后,可以给商品打分,评价;

希望能够支持3~5年,业务的发展;

预计3~5年用户数达到1000万;

定期举办双11、双12、三八男人节等活动;

其他的功能参考京东或国美在线等网站。

客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。需求功能矩阵需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述。这样做常常忽视掉一个很重要的需求(非功能需求),因此推荐大家使用需求功能矩阵,进行需求描述。本电商网站的需求矩阵如下:

3、网站初级架构

一般网站,刚开始的做法,是三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统。

这是前几年比较传统的做法,之前见到一个网站10万多会员,垂直服装设计门户,N多图片。使用了一台服务器部署了应用,数据库以及图片存储。出现了很多性能问题。

如下图:

但是,目前主流的网站架构已经发生了翻天覆地的变化。一般都会采用集群的方式,进行高可用设计。至少是下面这个样子:

使用集群对应用服务器进行冗余,实现高可用;(负载均衡设备可与应用一块部署);

使用数据库主备模式,实现数据备份和高可用;

4、系统容量预估

预估步骤:

注册用户数-日均UV量-每日的PV量-每天的并发量;

峰值预估:平常量的2~3倍;

根据并发量(并发,事务数),存储容量计算系统容量。

根据客户需求:3~5年用户数达到1000万注册用户,可以做每秒并发数预估:

每天的UV为200万(二八原则);

每日每天点击浏览30次;

PV量:200*30=6000万;

集中访问量:240.2=4.8小时会有6000万0.8=4800万(二八原则);

每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于);

每秒并发量:16.7万/60=2780(约等于);

假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。

1毫秒=1.3次访问;

没好好学数学后悔了吧?!(不知道以上算是否有错误,呵呵~~)服务器预估:(以tomcat服务器举例)按一台web服务器,支持每秒300个并发计算。平常需要10台服务器(约等于);[tomcat默认配置是150],高峰期需要30台服务器;容量预估:70/90原则系统CPU一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。内存,IO类似。以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。在此CPU,硬盘,网络等不再进行评估。5、网站架构分析根据以上预估,有几个问题:

需要部署大量的服务器,高峰期计算,可能要部署30台Web服务器。并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。

所有的应用部署在同一台服务器,应用之间耦合严重。需要进行垂直切分和水平切分。

服务器Session同步耗费大量内存和网络带宽,数据需要频繁访问数据库,数据库访问压力巨大。

大型网站一般需要做以下架构优化(优化是架构设计时,就要考虑的,一般从架构/代码级别解决,调优主要是简单参数的调整,比如JVM调优;如果调优涉及大量代码改造,就不是调优了,属于重构):

业务拆分;

应用集群部署(分布式部署,集群部署和负载均衡);

多级缓存;

数据库集群(读写分离,分库分表);

服务化;

消息队列;

其他技术;

6、网站架构优化

6.1业务拆分

业务拆分作用:提升为子系统可由专门的团队和部门负责,专业的人做专业的事,解决模块之间耦合以及扩展性问题;每个子系统单独部署,避免集中部署导致一个应用挂了,全部应用不可用的问题。

等级定义作用:用于流量突发时,对关键应用进行保护,实现优雅降级;保护关键应用不受到影响。

拆分后的架构图:

参考部署方案2

如上图每个应用单独部署,核心系统和非核心系统组合部署

6.2应用集群部署(分布式,集群,负载均衡)

分布式部署:将业务拆分后的应用单独部署,应用直接通过RPC进行远程通信;

集群部署:电商网站的高可用要求,每个应用至少部署两台服务器进行集群部署;

负载均衡:是高可用系统必须的,一般应用通过负载均衡实现高可用,分布式服务通过内置的负载均衡实现高可用,关系型数据库通过主备方式实现高可用。

集群部署后架构图:

6.3多级缓存

缓存按照存放的位置一般可分为两类本地缓存和分布式缓存。本案例采用二级缓存的方式,进行缓存的设计。一级缓存为本地缓存,二级缓存为分布式缓存。(还有页面缓存,片段缓存等,那是更细粒度的划分)一级缓存,缓存数据字典,和常用热点数据等基本不可变/有规则变化的信息,二级缓存缓存需要的所有缓存。当一级缓存过期或不可用时,访问二级缓存的数据。如果二级缓存也没有,则访问数据库。缓存的比例,一般1:4,即可考虑使用缓存。(理论上是1:2即可)。

根据业务特性可使用以下缓存过期策略:

缓存自动过期;

缓存触发过期;

流程说明

一般采用Cache中间件实现,建议使用Redis,因此它有持久化功能,方便分布式Session宕机后,可以从持久化存储中加载会话信息;

结合Cache中间件,实现的分布式Session,可以很好的模拟Session会话。

6.5数据库集群(读写分离,分库分表)

大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计。一般有两种方式读写分离和分库分表。读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式。本案例在业务拆分的基础上,结合分库分表和读写分离。如下图:

业务拆分后:每个子系统需要单独的库;

如果单独的库太大,可以根据业务特性,进行再次分库,比如商品分类库,产品库;

在分库、分表的基础上,进行读写分离;

6.6服务化

将多个子系统公用的功能/模块,进行抽取,作为公用服务使用。比如本案例的会员子系统就可以抽取为公用的服务。

6.7消息队列

消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统。是分布式系统的标准配置。本案例中,消息队列主要应用在购物,配送环节。

用户下单后,写入消息队列,后直接返回客户端;

库存子系统:读取消息队列信息,完成减库存;

配送子系统:读取消息队列信息,进行配送;

目前使用较多的MQ有ActiveMQ、RabbitMQ、ZeroMQ、MSMQ等,需要根据具体的业务场景进行选择。建议可以研究下RabbitMQ。

6.8其他架构(技术)

大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段,希望能给大家带来启发。

数商云是一家全链数字化运营服务商,专注于提供SCM/企业采购/SRM供应商/DMS经销商/渠道商等管理系统,B2B/S2B/S2C/B2B2C/B2C等电商系统,从“供应链——生产运营——销售市场”端到端的全链数字化产品和方案,致力于通过数字化和新技术为企业创造商业数字化价值。

百胜软件莅临数商云参观交流,双方拟定战略合作关系

供应链上下游商业合作模式:数商云助力企业构建高效协同生态

THE END
1.服务器架构十张图带你了解大型网站架构服务器架构图说道大型网站,就的先说大型网站的特点:高并发,大流量,高可用,海量数据等。下面就说说大型网站的架构演化过程吧。 1、初始阶段的网站架构 初始阶段都比较简单,通常一台服务器就可以搞定一个网站了,看图。 应用程序、数据库、文件等所有资源都在一台服务器上,通常使用LinuxPHPMySQLApache就可以完成整个项目部署,然后再https://blog.csdn.net/baidu_39511645/article/details/78345573
2.网站架构图流程图模板该网站架构图展示了一个典型的三层结构,包括用户界面层、业务逻辑层和数据访问层。用户界面层负责与用户进行交互,提供友好的界面和用户体验。业务逻辑层处理用户请求,执行相应的业务逻辑,如数据处理、计算和验证等。数据访问层负责与数据库进行交互,实现数据的增删改查操作。整个系统采用了分层的设计模式,使得各层之间的https://www.processon.com/view/65df0119e8cd8a0357e2d80c
3.全网最全:架构图模板合集(精选23张,建议收藏)上下文流程图架构图设计是软件工程中至关重要的一部分,它有助于清晰地传达系统的结构和组件之间的关系。以下是一些架构图设计的技巧: 选择合适的架构图类型:不同类型的架构图适用于不同的场景。常见的架构图类型包括高层次的系统架构图、流程图、组件图、时序图等。选择适当的类型来满足你的信息传达需求。 https://m.163.com/dy/article/IHEVF8RP05565XC4.html
4.网站架构图导图社区 网站架构图269 1 举报 发布时间:2020-09-03 1. 首页设计:满足用户需求,简洁明快的界面设计,提供引人入胜的视觉体验。 2. 导航栏设置:清晰明了的分类安排,方便用户快速找到所需内容。 3. 内容分类:精确细致的分类体系,帮助用户快速准确地浏览和筛选信息。 4. 搜索功能:高效精准的搜索算法,助力用户快https://mm.edrawsoft.cn/template/416265
5.网站架构图思维导图模板简约红色组织架构图主题模板 原杰 免费 设计公司企业团队人员组织架构图 Memories。、 免费 地产企业组织架构图 王小二 免费 ?心理学专业委员会组织架构图 I`m fine 免费 图片素材分享网站架构图 Yyyy 免费 通用公司组织架构图 L 会员 红色简约工程人员架构图 原来是y 免费 通用的公司组织架构图模板 二硫碘化https://shutu.cn/search/wangzhanjiagoutu.html
6.web网站架构图火山引擎是字节跳动旗下的云服务平台,将字节跳动快速发展过程中积累的增长方法、技术能力和应用工具开放给外部企业,提供云基础、视频与内容分发、数智平台VeDI、人工智能、开发与运维等服务,帮助企业在数字化升级中实现持续增长。本页核心内容:web网站架构图https://www.volcengine.com/theme/1175652-W-7-1
7.网站架构图怎么画的灵活性和扩展性:考虑到网站的未来发展和扩展需求,确保网站架构具有足够的灵活性,可以方便地添加新功能和模块。 技术更新:随着技术的不断进步,可能需要更新和优化网站的技术架构,以提供更好的性能和用户体验。 总之,绘制网站架构图是设计和搭建一个成功网站的重要步骤。通过定义网站架构、使用适当的工具和参考成功网站,http://www.yoyo360.com/xianhuazhuti/480381.html
8.小型网站架构图中小型网站架构华为云为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:小型网站架构图。https://www.huaweicloud.com/theme/453837-1-X
9.网站信息架构图专题模板网站信息架构图图片素材下载我图网网站信息架构图专题为您整理了2536个原创高质量网站信息架构图图片素材供您在线下载,PSD/JPG/PNG格式网站信息架构图模板下载、高清网站信息架构图图片大全等,下载图片素材就上我图网。https://so.ooopic.com/sousuo/46629709/
10.网站系统技术架构图专题资料网站系统技术架构图信息来自InfoQ中文网发布的网站系统技术架构图相关内容,主要包含网站系统技术架构图等相关技术资讯,InfoQ是一个实践驱动的社区资讯站点,致力于促进软件开发领域知识与创新的传播。https://www.infoq.cn/tag/1ec684fd7bd7c89c87d0
11.php网站系统架构图怎么做?Worktile社区要制作PHP网站的系统架构图,可以按照以下步骤进行操作: 1. 确定系统的模块组成:首先,要明确网站系统的各个模块,包括前端展示模块、后台管理模块、数据库模块等。 2. 绘制系统模块的框架:在绘制架构图之前,首先要确定模块之间的关系和依赖。可以使用一些绘图工具,比如Visio、draw.io等,创建一个新的项目,然后绘制一个https://worktile.com/kb/ask/195672.html
12.架构图网站模板架构图网页模板免费企业网站模板自助建站凡科建站为您提供架构图网站模板、架构图网页模板、免费企业网站模板,行业全面,0基础建网站,让您可以在线制作网站模板。https://jz.fkw.com/biaoqian/258076/
13.网站设计架构图网站设计框架结构网站设计架构图 网站设计框架结构 网页设计规范 一、网站页面设计: 1、网站页面类型:“国”字型、拐角型、框架型(左右、上下、综合)、封面型、标题正文型、Flash型。 举例:“国字型” 2、网站页面构成: 1)页头(Header):通常放置Logo(网站标志)、Banner(广告条)。https://blog.51cto.com/u_16099165/7108233
14.网络营销的策划方案一、组织架构图 公司总经理 部门经理 程序员 设计师 硬件维护 资深推广 信息发布 信息收集 资深业务 普通业务 二、各部门职责 网络营销部门内设三个分部,即技术部、推广部、业务部。网络营销部门设部门经理一职,下属三个分部,设主管一职。 (1)技术部主要职能 https://www.oh100.com/a/202305/6744003.html
15.GitMind·思乎GitMind(思乎)是一款全平台 在线思维导图脑图架构图制作软件工具,支持手机手机思维导图,Windows/Mac/L多平台操作及内容同步。它提供有海量的架构图,流程图、思维导图模板可供用户直接使用,支持在线制作流程图、思维导图、组织结构图、类图、用例图、ER图、网络拓扑图https://gitmind.cn/
16.组织架构图组织架构图在线制作AI生成组织架构图Canva可画组织架构图制作工具简单易用,在线操作,同时有丰富的组织架构图模板可供选择,更有智能AI工具助你轻松完成组织架构图制作。https://www.canva.cn/graphs/organization-charts/
17.实施方案(2023—2025年)的通知豫政办图1“河南链”总体架构图 (二)“河南链”公共基础平台架构。“河南链”公共基础平台由管理、服务2个中台及标准规范、运维管理、安全保障等3个支撑体系组成。 管理中台。对区块链基础支撑资源进行统一动态调配,负责区块链系统的全生命周期管理,形成资源编排、合约管理、用户与权限、运行管控、API(应用程序接口)网关、基https://www.henan.gov.cn/2023/03-28/2715211.html
18.低代码开发之开源数据可视化分析平台datagear系统架构图 根据上图可以知道datagear整体架构不算复杂,最下层通过各种数据库驱动连接管理不同数据库。ORM框架用的是MyBatis,用的SpringBoot框架管理和启动应用程序。前端通过Jquery和Echarts渲染各种图表和组件。支持多种数据集、可视化图表和数据管理。 模块介绍 datagear-analysis 数据分析底层模块,定义数据集、图表、看板https://cloud.tencent.com/developer/article/2177539
19.RAM账号权限管理使用3个PVC分别建立开发、测试和生产环境,每个环境中分别创建一台ECS和一个RDS,为研发环境的ECS绑定弹性公网IP。另外建立开发、测试、生产环境专用OSS Bucket,代码库专用OSS Bucket和一个其他OSS Bucket。此环境可以通过CADT工具完成快速部署,部署前请留意架构图模板中的提示信息。 https://developer.aliyun.com/article/858399
20.odoo17官方版本发布白皮书,全部功能及重要更新ReleaseNote更全面的网站服务预约 条码操作增加声音提醒,更方便的序列号处理 文档管理增强,如批量上传,拖放操作等 电商增强,如可使用图像作为属性规格,直接显示优惠券 人力资源增强,增加多层级组强架构图 会展管理/门票管理,可实现二维码签到等 前台访客管理,出勤管理 https://www.odooapp.cn/blog/odoo-install-deploy-6/odoo17-official-release-all-functions-and-important-updates-315
21.免联考!香港中文大学深圳mba!2024香港中文大学深圳MBM招生简章04.单位组织架构图 注明您在单位组织架构图中所处的具体部门/层级 05.名片 06.个人简历 07.推荐人及推荐信 申请者须在网申系统内填写至少两位推荐人的相关信息,网申系统将自动发邮件至推荐人邮箱,推荐人按邮件要求点击链接上传推荐信PDF格式,中英文皆可 https://www.gaodun.com/xuewei/1572103.html
22.服务器常用网站架构图小型网站架构图 中型网站架构图https://www.jianshu.com/p/d25a5e0f94a6
23.北京科技大学信息化建设与管理办公室知识图谱技术架构图如上所示,其对应中文版如下: (一)数据获取(Data Acquisition) 数据获取是建立知识图谱的第一步。目前,知识图谱数据源按来源渠道的不同可分为两种:一种是业务本身的数据,这部分数据通常包含在行业内部数据库表并以结构化的方式存储,是一种非公开或半公开的数据;另一种是网络上公开、抓取的数据,https://info.ustb.edu.cn/ITxy/jswd/f9c69c2f22a04495931f2d5cca087297.htm