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

解密电商系统架构发展历程

时间:2019-09-12 09:20:18  来源:  作者:

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

 

解密电商系统架构发展历程,做多了企业内部开发应该了解一下了

 

 

(一)目的

  1. 一起了解学习的分布式专题技术可以串起来。
  2. 2.了解电商系统相关的技术知识。
  3. 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的业务,增加了开发成本和学习的成本。数据库管理需要。

 

解密电商系统架构发展历程,做多了企业内部开发应该了解一下了

 

 

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个点,应用和数据库。

坚持原创的35岁IT老兵!感谢您能够看完这篇文章!感谢关注,评论,转发!



Tags:电商系统架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1、电商系统可能是世界上最复杂的业务系统说个有意思的小事,和一位PM同行聊工作,问我电商做的如何,我说并不是一件易事。对方哈哈一笑,说电商不就那么回事吗,有啥难的,是个PM都能...【详细内容】
2020-06-19  Tags: 电商系统架构  点击:(56)  评论:(0)  加入收藏
以前看的一本书淘宝这十年来,一起回顾下电商系统的发展历程,其实也折射了目前很多系统技术发展的变革。从单机版到目前淘宝的技术状态。 (一)目的 一起了解学习的分布式专题技...【详细内容】
2019-09-12  Tags: 电商系统架构  点击:(160)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条