以之前看的一本书淘宝这十年来,一起回顾下电商系统的发展历程,其实也折射了目前很多系统的技术的发展变革。源码中有本书,【淘宝技术这十年】,从单机版到目前淘宝的技术状态。

目录

(一)目的

(二)一个电商系统到底包含什么

(三)系统的历史

(四)分布式时代


(一)目的

  1. 一起了解学习的分布式专题技术可以串起来。
    2.了解电商系统相关的技术知识。
    3.面试,工作可以应用到。

(二)一个电商系统到底包含什么

图有点长,网上找的但是如果要做这个系统老费劲了。体力活。美国,苏宁,京东电商大型网站都是上万人研发。可见系统的庞大。


(三)系统的历史

  • 淘宝第一版--个人网站

LAPM 【linux+apche+php+mysql】

  • 1.java早期的电商网站

多个模块在一个系统中,通过jdbc的访问同一个数据库。

存在的问题,随着流量越来越大,数据库查询速度慢,系统反应慢等等,单机的性能瓶颈。

  • 2.java电商网站,引入集群

加机器的方式解决,集群的方式来解决。

存在的问题,访问的那台机器是不知道的。

  • 3.java电商网站,引入负载

增加负载的方式,分为硬负载f5,软负载nginx。

存在的问题,第一次访问的机器是A机器,第二次因为负载了访问了B机器。

  • 4.java电商网站,负载后,请求的4种解决方案。

(1)hash的方式,通过请求IP的hash值绑定要请求的服务器。

存在的问题,abc每次请求都发A机器,这个就是受单点的问题,如果A机器挂了,abc的请求得不到转向,一直请求A机器,用户一直访问不了,一直报错。

(2)session的复制,通过A和B机器进行相互的session复制

存在的问题,tomcat广播的形式,造成资源的浪费,100万用户在线,等于每个tomcat里面都有100万的用户session的信息,对系统的浪费承诺很大。适用于小型网站。

(3)基于cookie的方式,cookie包含session的数据
解决了上面session复制,资源的浪费,服务端的压力的问题。

存在的问题,数据不安全的问题,用户数据的都在客户端,存在破解的可能。手机一般都使用这种cookie的方式,手机都是单独自己使用的,不存在公共部分。

(3)session集中存储的方式,加入redis或者其他中间件

存在的问题,相比前集中增加了redis中间件,增加了运维和开发的成本。如果用户量非常大,用中间件的方式也是可用性非常高的。

  • 5.java电商网站,数据库原来一个应用一个数据库,需要集群数据库用同一个。

5.java电商网站,数据库分读写,解决高并发读写的问题,master和slave流量的问题。

存在的问题:下单之后到主库,然后立马查询到从库。这个时候主库信息还没同步到从库中,系统可能就报错了。这种问题解决方案只有一个TDDL,sharding-jdbc。

  • 6.java电商网站,读写分离,分库分表。

proxy:应用程序在访问数据库的时候,中间拦了一层,通过拦截可以知道是select 还是insert,update判断是走主库还是从库。proxy需要维护,维护高可用,协议要拦截性能要下降。

应用层:shardingJDBC基于jdbc底层的请求原理,请求的时候改成sql的方式。访问读库还是从库。开发人员需要了解shardingJDBC的业务,增加了开发成本和学习的成本。数据库管理需要。

  • 7.java电商系统,增加搜索引擎和redis集群

search cluster 全量同步,和定时增量同步都是通过读mysql的binlog完成的。解决数据库压力。
redis cluster 通过缓存到redis中,直接从redis中获取,减少数据库的读写。
CDN 通过将静态文件放到指定的服务器,通过CDN下载静态资源。

(四)分布式时代

引文:商品模块和会员模块两个不同的人开发,他们是互相调用的关系,商品模块的人开发完毕了,但是会员模块的老铁说,今天不上了,这是不是很尴尬,商品模块的需要回滚到满足会员模块的,两个人就开始掐架了,我好心写了你让我回滚,会员模块的说其实我也不想,这个产品经理不让上。随着系统越来越大,各个模块变成了系统,每个系统是由不同小组来完成的,为了满足互相之前不受影响,就开始服务化。

  • 说说淘宝的HSF 和 dubbo

提供对Dubbo和HSF两个RPC框架的支持。阿里巴巴第一代RPC框架Dubbo是国内第一款成熟的商用级RPC框架,已于2011年正式对外开源,目前已发展成为国内开源价值最高、用户使用规模最大的开源软件之一。最新一代RPC框架HSF,全称High Speed Framework,也叫"好舒服","很舒服"框架,是阿里内部对这一款高性能服务框架的昵称,是一款面向企业级互联网架构量身定制的分布式服务框架。HSF以高性能网络通信框架为基础,提供了诸如服务发布与注册,服务调用,服务路由,服务鉴权,服务限流,服务降级和服务调用链路跟踪等一系列久经考验的功能特性。

他们之前的互相调用很复杂。至少功能进行了解耦,会员和商品之前的依赖关系,会员上线失败只会局部的影响。但是会产生一个问题互相的调用,占用更多的网络资源。

  • 分库分表的方式继续优化

每个应用一个数据库不在整个使用一个数据库了,每个应用一个库,对于比较复杂的利于订单,产品通过sharding-jdbc来进行分表。用的最多的hash取模的方式,hash比较均匀,避免数据热点的问题。但是hash的方式不容易进行扩展,之后会说如何针对hash进行扩展。

  • 消息中间件

异步和解耦,双11下单的量很大,从Notify>metaq>rocketMq都是一样的。削峰填补。下个单需要查库存,告诉统计系统,还有风控系统。平常时候统计系统是不用的,而是双11的时候使用,总不能平常的时候把统计系统的代码注释吧?到双11在把代码放开,然后在上线。利用rocketMq的来解决。

  • 图片服务
  1. oss tfs的方式。上传一次,公用的都可以拿到。给每个图片识别一个号,第二次上传会读hash,如果这个hash已经存在就不在上传。时间换空间的一个问题。解决数据库的一个问题。
  2. 数据库存储图片名称和路径,图片的物理地址存储到硬盘里面。分布式肯定有问题!冗余AB服务器都存一份,或者搞个图片服务器。不可取。
  3. 流的方式储存到数据库里面。占用硬盘资源,需要转码对数据库的IO。
  • 运营系统

日志系统,风控系统,报表系统,调用链系统。

PS:看到电商是如此复杂是不是有点头疼,越往后业务越来越细分,运维的工作量越来越大。两个程序员可怕【改需求,改别人的代码】。分布式基本就是2个点,应用和数据库。

『互联网架构』软件架构-电商系统架构发展历程-1相关推荐

  1. 架构思维成长系列教程(七)- 大型电商系统架构设计

    背景 大型电商网站,指的是每日用户访问量达到数百万,每日页面访问量达到数千万乃至上亿级别的网站,达到这个规模的电商网站在国内不多. 内容 架构设计分为两部分:应用架构设计和基础架构设计 应用架构设计: ...

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

    在看到图(一)这样的图,我们是否有一种探究系统的冲动?这样一个花花绿绿的界面,背后隐藏着什么样的奥秘!用户输入某个域名的时候,比如www.taobao.com的时候,页面是如何展示的,用户在搜索框搜宝 ...

  3. 基于微服务的电商系统架构

    分层 微服务设计 微服务微内核 基于微服务的电商系统架构 转载于:https://www.cnblogs.com/davidwang456/articles/9221369.html

  4. 互联网时代的B2B电商系统到底意味着什么

    互联网时代,很多企业纷纷想要开展属于自己的业务,可是在当下的电商体系当中,B2B电商系统是发展最快最成熟的一种电商模式,其中使用数 商 云 电商系统是当下比较流行的一种模式,想要知道更多的B2B电商系 ...

  5. 大型分布式电商系统架构是如何从0开始演进

    大型分布式电商系统架构是如何从0开始演进的?本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考.文中一部分为读书笔记,一部 ...

  6. 超大型电商系统架构解密-韩军

    2019独角兽企业重金招聘Python工程师标准>>> 超大型电商系统架构解密-韩军 1号店目前系统的负载能力每分钟可以支持5千单,支持销售1,200万件商品.Hedwig是1号店平 ...

  7. 大型网站架构系列:电商网站架构案例(1)

    大型网站架构系列:电商网站架构案例(1) 大型网站架构是一个系列文档,欢迎大家关注.本次分享主题:电商网站架构案例.从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型.除具备功 ...

  8. 大型分布式电商系统架构是如何从 0 开始演进的?

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

  9. 电商系统架构总结1(EF)

    最近主导了一个电商系统的设计开发过程,包括前期分析设计,框架搭建,功能模块的具体开发(主要负责在线支付部分),成功上线后的部署维护,运维策略等等全过程. 虽然这个系统不是什么超大型的电商系统 数亿计的 ...

最新文章

  1. SLPDB推动比特币现金(BCH)Token生态系统出现质的飞跃
  2. CheckStyle, 强制你遵循编码规范
  3. 网站SEO优化中几个不为人知的小细节分享!
  4. DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)
  5. Web API应用架构设计分析(2)
  6. 基于HTML5的WebGL呈现A星算法的3D可视化
  7. 1055 最长等差数列
  8. ios加密机制是什么?为什么无法破解?
  9. Double Deep Q-Learning Netwok的理解与实现
  10. CCD和CMOS的的相同点和差异
  11. 如何在前端中使用protobuf(vue篇)
  12. 我的CSS笔记(一)
  13. NYOJ.904 search(二分查找,快速排序,结构体运用)
  14. 3个动作精准引流方法,放大操作,每天吸粉200+
  15. ZOJ 3805 树形dp
  16. 华硕怎么安装linux系统教程,华硕Eee PC下安装Puppy Linux系统(图)
  17. LATTICE FPGA 工具介绍之ACTIVE-HDL 建立工程及仿真步步来(2)
  18. Chfs 文件共享工具
  19. python爬取微博评论点赞数_python 爬虫 爬微博 分析 数据
  20. Linux常用命令简介

热门文章

  1. 爱网外链网盘源码V5.0 全新支持图片检测
  2. seo是计算机专业毕业,本科计算机专业的他,在34岁时成为了银行行长
  3. 【网站建设】TCP/IP 协议
  4. 果园机器人作文开头_果园机器人作文200
  5. 绘制地图:图形化显示海地地震危机数据
  6. Android版本Oppo电视,oppo电视助手app下载
  7. 有人在上海买房买车,什么是差距?
  8. 【cuda】Nsight System 下载,安装与使用
  9. CISCO 3750 BUG
  10. 怎样从PHP文件中提取特征码,关于判断文件唯一性,怎么提取特征码