电商系统架构——系统鸟瞰图

在看到图(一)这样的图,我们是否有一种探究系统的冲动?这样一个花花绿绿的界面,背后隐藏着什么样的奥秘!用户输入某个域名的时候,比如www.taobao.com的时候,页面是如何展示的,用户在搜索框搜宝贝的时候,系统又是如何处理的,用户在参加秒杀活动的时候,系统又是如何处理的。经过两年多的互联网从业经验,以及自己的思考,在这里我就抛砖引玉对电商系统架构进行探究,探究系统是如何设计的,以及设计这个系统的各种权衡。

图(一)

隐藏在花花绿绿的界面之后,是一个庞大复杂的系统,图(二)是这个系统的鸟瞰图。我只描绘了一些枝干子系统,省略掉其他辅助子系统。

在这个复杂的系统中,各个子系统是如何工作的?

1:User 是如何访问到类似www.taobao.com 的页面呢?User 在浏览器输入www.taobao.com 的域名,浏览器通过DNS服务器解析该域名指向的IP地址。IP地址可能不只一个,有可能是多个。那该选择哪一个,一般由DNS基于一定的策略返回。

2:假如浏览器选择了一个IP地址,那么通过该IP地址访问到了页面服务器,即WebServer。从可靠性、性能来讲,WebServer 不只部署一台机器,而是多台。这样部署既要负载均衡,又要在某个子节点崩溃后,能够正常服务。我们的做法可以采用额外的负载均衡器方法,也可以通过LVS来实现。

3:WebServer 加载页面详情的时候,通过详情系统来加载。详细系统通过聚合多个子系统的信息:商品子系统、图片子系统(CDN)、活动子系统。

4:用户登录账号的时候,是通过用户账号子系统,该子系统要支持统一账号模式:通过邮箱登录、QQ账号登录、微信账号登录。

5:用户在搜索框输入宝贝名称的时候,搜索请求是通过搜索子系统来完成的。搜索子系统定时从备DB增量建索引,这种方式容忍搜索有一定的延迟。

其实也可以采用一些实时搜索系统,比如solr,或者采用大系统聚合小系统的方式,新增数据通过消息队列的方式进入搜索系统的内存中,或者实时系统中,然后在用户搜索的时候采用聚合的方式返回结果。

6:用户购买商品的时候,先将物品加入购物车,这需要购物车系统,购物系统要访问库存系统,判断当前是否有货,如果有货才允许用户添加到购物车,并计算总价钱。添加购物车的时候,是否允许用户减库存,取决于用户体验和恶意用户之间的矛盾:如果不允许减库存,则有时用户要下单的时候,会出现没货。如果允许减库存,则存在恶意用户占着库存,影响其他用户购买。

7:库存系统记录了商品的价格、库存等轻量信息,为了性能的考虑,个人觉得库存子系统是采用内存的方式,其数据来源商品系统(或者直接访问数据库)。

8:订单系统:在活动期间,订单系统会遇到峰值,所以订单系统宜采用异步方式。

9:商品系统:吐商品信息的系统。

10:DB采用主备方式,现在常见的模式:写主、查备。这种模式有主备数据一致性问题。备数据的实时性取决于同步,比较简单的方式,采用数据库本身的备份功能;或者在商品系统中通过异步写。那写主查备是基于什么考虑的呢?只要是读写分离,提高性能。

11:跨区域容灾,采用异步的方式,这种影响性能比较小,但是数据一致性不敢保障。这里只能具体业务采取不同的策略,对一致性要求高的子系统,则采用异地同时双写。

12:子系统基于SOA的方式进行交付,现在一般采用某个RPC框架。个人觉得开源的ICE是不错的选择。

13:各个子系统,在本区域内采用主备模式。底层数据都挂了,则在底层系统跨地区访问数据。所以需要一个跨区域的数据访问代理,同时降级提供业务。

或者将访问切向另外的一个区域,这里要考虑另外一个区域的负载情况。

这里,概略地介绍了电商系统的架构原理,接着后继将对各个子系统的设计进行探讨!

时间: 2024-10-06 15:41:02

电商系统架构——系统鸟瞰图的相关文章

《亿级流量电商详情页系统实战:缓存架构+高可用服务架构+微服务架构》

视频教程:http://www.roncoo.com/course/view/af7d501667fe4a19a60e9467e6d2b3d9 升级说明: 该课程原本是123节课时,已于2017年7月份全部更新完毕.在原有123节课时的基础上,再免费新增70到80节左右的内容(注:课程大纲可能会做进一步优化,具体以最终更新为准),课程名将变更为<亿级流量电商详情页系统实战(第二版):缓存架构+高可用服务架构+微服务架构>简称第二版.本次免费新增内容将会从9月中旬开始更新,一直到10月底更新完毕

亿级流量电商详情页系统的大型高并发与高可用缓存架构实战

对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memcached等缓存技术的基础使用,最多了解一些集群相关的知识,大部分人都可以对缓存技术掌握到这个程度.然而,仅仅对缓存相关的技术掌握到这种程度,无论是对于开发复杂的高并发系统,或者是在往Java高级工程师.Java资深工程师.Java架构师这些高阶的职位发展的过程中,都是完全不够用的.技术成长出现瓶颈,在自己

亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构第二版视频教程

14套java精品高级架构课,缓存架构,深入Jvm虚拟机,全文检索Elasticsearch,Dubbo分布式Restful 服务,并发原理编程,SpringBoot,SpringCloud,RocketMQ中间件,Mysql分布式集群,服务架构,运 维架构视频教程 14套精品课程介绍: 1.14套精 品是最新整理的课程,都是当下最火的技术,最火的课程,也是全网课程的精品: 2.14套资 源包含:全套完整高清视频.完整源码.配套文档: 3.知识也 是需要投资的,有投入才会有产出(保证投入产出比是

Java开源生鲜电商平台-RBAC系统权限的设计与架构(源码可下载)

Java开源生鲜电商平台-RBAC系统权限的设计与架构(源码可下载) 说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想来讨论关于权限系统的实现. 1.1.       技术策略 l         身份认证 在B/S的系统中,为识别用户身份,通常使用的技术策略为将用户的身份记录在Session中,也就是当用户登录时即获取用户的身份信息,并将其记录

电商抢购秒杀系统的设计_1_应用场景分析

电商抢购秒杀系统的设计_1_应用场景分析 概述 所谓知已知彼,百战不殆,在开始详细介绍实战中的抢购秒杀系统时,我们了解一些抢购秒杀系统系统面临的尴尬与难点.另外需要说明一点,下面的内容都是在工作中慢慢总结得来,我们团队也是慢慢摸着石头过河,甚至最初的的架构设计并非是抢购秒杀系统. 评估系统处理能力 理论基础:LNMP的并发考虑与资源分配 虽然有基础去评估我们应用系统的处理能力,但是电商购买的业务流程挺复杂,从登录,商品详情,购物车,填写收货地址,选择支付方式,创建订单,完成支付,以及隐含的定时服

电商 秒杀系统 设计思路和实现方法

电商 秒杀系统 设计思路和实现方法 2017年05月26日 00:06:35 阅读数:3662 1 秒杀业务分析 正常电子商务流程 (1)查询商品:(2)创建订单:(3)扣减库存:(4)更新订单:(5)付款:(6)卖家发货 秒杀业务的特性 (1)低廉价格:(2)大幅推广:(3)瞬时售空:(4)一般是定时上架:(5)时间短.瞬时并发量高: 2 秒杀技术挑战 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有: 对现有网站业务造

亿级流量电商详情页系统实战(第二版)

来源:B站  亿级流量电商详情页系统实战(第二版) 电商网站详情页架构: P3:架构1:页面静态化架构:  小电商,静态页面少 Velocity/FreeMarker/Thymeleaf模板 模板+数据 =>最终的页面 如果模板或数据有变更,则需要重新渲染生成页面html->推送nginx P4:大型网站详情页架构 P5: 支撑高可用.高可靠.备份恢复Redis重要性 商品详情页的缓存架构: redis架构: 1)高并发.高可用:海量数据,备份,随时可以恢复,缓存架构如果支撑这些, 首先,Re

类似大笨象商城电商分销平台系统开发哪家好

大笨象商城区块链分销商城系统开发,马经理150微6542电5918-169扣5424扣982**大笨象商城电商分销平台系统开发,大笨象商城购物返利分佣系统开发,大笨象商城分销返利APP系统开发,大笨象商城购物分佣分销模式系统开发, --------------------------类似系统软件开发,非平台,玩家勿扰--------------------- 1个享豆起可以买,0.1元一个,最多可以买20000个享豆,再多就要去交易市场收单享链了,反正每天增值10% 和淘优乐链豆一样 一.购买享

构建高并发高可用的电商平台架构实践

从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 转载请声明出处:http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构.大数据.搜索.开源技术 QQ:306591368 技术Blog:http://blog.csdn.net/yangbutao 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包

大型网站架构系列:电商网站架构案例(3)

本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结. 6.5数据库集群(读写分离,分库分表) 大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计.一般有两种方式读写分离和分库分表. 读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式. 本案例在业务拆分的基础上,结合分库分表和读写分离.如下图: (1)       业务拆分后:每个子系统需要单独的库: