在看到图(一)这样的图,我们是否有一种探究系统的冲动?这样一个花花绿绿的界面,背后隐藏着什么样的奥秘!用户输入某个域名的时候,比如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:各个子系统,在本区域内采用主备模式。底层数据都挂了,则在底层系统跨地区访问数据。所以需要一个跨区域的数据访问代理,同时降级提供业务。

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

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

电商系统架构——系统鸟瞰图相关推荐

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

    <缓存架构+高可用服务架构+微服务架构>深入讲解了亿级流量电商详情页系统的完整大型架构.同时最重要的是,在完全真实的大型电商详情页系统架构下,全流程实战了整套微服务架构,包含了基于领域驱动 ...

  2. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

  3. Java生鲜电商平台-促销系统的架构设计与源码解析

    Java生鲜电商平台-促销系统的架构设计与源码解析 说明:本文重点讲解现在流行的促销方案以及源码解析,让大家对促销,纳新有一个深入的了解与学习过程. 促销系统是电商系统另外一个比较大,也是比较复杂的系 ...

  4. 大型电商架构亿级流量电商详情页系统--实战 服务降级

    86_电商网站的商品详情页缓存服务业务背景以及框架结构说明 我们这个课程,基于hystrix,如何来构建高可用的分布式系统的架构,项目实战 模拟真实业务的这么一个小型的项目,来全程贯穿,用这个项目中的 ...

  5. 大型电商架构亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构(七)

    文章目录 八十九.高并发场景下恐怖的缓存雪崩现象以及导致系统全盘崩溃的后果 九十.缓存雪崩的基于事前+事中+事后三个层次的完美解决方案 九十一.基于hystrix完成对redis访问的资源隔离以避免缓 ...

  6. 最新亿级流量电商详情页系统的大型高并发与高可用缓存架构实战第一版附全套资料

    课程介绍(非升级版) 对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握red ...

  7. 电商详情页系统实战(2) -小型电商网站商品详情页的页面静态化架构及缺陷

    商品详情页的系统架构 => 缓存架构 => 高并发 => 高可用 电商网站里,大概可以说分成两种 小型电商 简单的一种架构方案,页面静态化的方案 大型电商 复杂的一套架构,大电商,国 ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里 ...

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

    对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memcache ...

  10. Java生鲜电商平台-App系统架构开发与设计

    Java生鲜电商平台-App系统架构开发与设计 说明:阅读此文,你可以学习到以下的技术分享 1.Java生鲜电商平台-App架构设计经验谈:接口的设计 2.Java生鲜电商平台-App架构设计经验谈: ...

最新文章

  1. 华为TE30点对点呼叫TE40提示不允许使用ip地址呼叫如何解决?
  2. .net上传,一个选择直接上传(ashx)和byteArray上传
  3. 【C语言进阶深度学习记录】三十六 程序与进程的区别(程序的内存布局)
  4. leafLet入门教程兼leafLet API中文文档参考
  5. JavaScript高阶函数快速入门
  6. 2017.3.6~2017.3.7 Harry And Magic Box 思考记录(特别不容易)
  7. python面向对象难学_学不下去了!?详解Python面向对象核心概念,简历没跑了
  8. MySQL字符串转日期
  9. 【优化算法】多目标粒子群优化算法(MOPSO)【含Matlab源码 033期】
  10. Obsidan之数学公式的输入
  11. 计算机电源再利用usb充电器,变废为宝,笔记本旧电源改造的8口USB充电器
  12. 如何写出真正触动人心的广告文案(二)
  13. 【转】什么是公网安备
  14. 蓝松AE模板SDK使用介绍.
  15. 官宣!美国通讯芯片巨头博通610亿美元收购云计算巨头威睿 | 美通社头条
  16. 产品思维训练 | 面试题探讨:提高旅游产品评论数量的解决方案
  17. 爬取Google Play中app的用户评论(2)
  18. 水仙花数是指一个三位数,它的每个位上的数字的 3次幂之和等于它本身,请编程找出所有水仙花数。(例如:153 = 1^3 + 5^3 + 3^3 )
  19. *.ftl文件中文乱码的问题
  20. 计算机中使用的色彩模式是,计算机的色彩模式.docx

热门文章

  1. struts2升级到2.5版本需要注意的几点
  2. 联迪商用中标民生银行小微金融部智能POS采购项目
  3. 2020年ESA中国区10m地表覆盖数据下载
  4. 酷炫flash xml动态相册
  5. 关于英语学习过程的量化和英语PKM的设想
  6. 3422. 【NOIP2013模拟】水叮当的舞步 (Standard IO)
  7. 计算机复试未来规划,2020计算机复试笔试备考策略
  8. Apache POI官方文档
  9. lombok 1.18.10
  10. 【python--教程】二进制运算符