http://blog.csdn.net/u012453843/article/details/62238059

当今中国,互联网技术迅速崛起,国家也在一直倡导互联网+的概念,所以在可以预见的未来,互联网工程师肯定会越来越吃香,工资水平也越来越高。想在互联网行业能有一席之地,就要掌握相关技术。

首先,我们一起来了解一下电商行业技术特点:

1.技术新

2.技术范围广

3.分布式

4.高并发、集群、负载均衡、高并发

5.海量数据

6.业务复杂

7.系统安全

正是由于以上特点才让我们的互联网工程师这么吃香。

我们要学习的淘淘网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。客服可以在后台管理系统中处理用户的询问及投诉。

提到电商,我们就一起了解下,当前的电商模式有哪些:

B2B: 商家到商家。代表公司有阿里巴巴、慧聪网、铭万网。

B2C: 商家到客户。代表公司是京东。

C2C: 用户到用户。代表公司是淘宝。

B2B2C:商家到商家到用户。代表公司是天猫。

O2O: 线上到线下。代表公司有百度外卖、美团、饿了么。

下面说下B2C电商系统架构,B2C电商系统功能列表如下图所示。

传统项目的架构图如下所示,这种架构在并发量小的情况下是没有什么问题的,但是当并发量大的时候,这种架构瞬间就会崩溃。

先来说下当并发达到1000时的场景,我们知道,对于一个tomcat来讲,理论上能处理500的并发量,但实际它能应付的并发量有个三四百就不错了,那么当有1000人同时访问系统时,怎么解决问题呢?答案是加tomcat数量(搭建tomcat集群)并使用nginx反向代理来做负载均衡处理,如下图所示,一个tomcat处理400并发,3个tomcat便可以处理1000的并发。需要注意的是sessioin共享的问题,原理是tomcat之间每隔一段时间便会广播自己的session信息,别的tomcat看到自己有些信息跟人家不一致就向人家同步,同理该tomcat也会跟别的tomcat进行同步数据,从而达到数据一致的目的。

那么当并发量达到10000时怎么办呢?理论上说,可以部署25个tomcat来解决并发问题,但是实际上这时tomcat的集群处理并发的能力便很低了,原因是什么呢?上面我们说了,不同的tomcat之间要保持数据同步,配置了session复制,会定时广播session,而且每个tomcat都既是广播者又是接收者,当tomcat较多时,网络带宽都被用来进行广播了,留给集群来处理并发的带宽就很少了,效率很低下,由此可以看到,我们不能通过增加tomcat数量来解决高并发的问题。

上面既然说了通过增加tomcat数量来解决高并发不可行,那么应该怎么解决呢?要解决这个问题,需要按照功能点把系统拆分,拆分成独立的功能。单独为某一个节点添加服务器。需要系统之间配合才能完成整个业务逻辑,这就叫做分布式。其中很核心的一点就是,这种架构把所有的session都放到单点登录系统中了,这样就解决了单纯增加tomcat数量而引起的session广播风暴的问题,我们把一个完整的系统拆分成多个模块这样做的原因是,高并发处理可能仅仅涉及一小块,比如下图的前台系统,其它模块的并发量就小很多了,复制整个tomcat的做法显然浪费了很多资源,我们把项目模块化,这样我们便可以集中处理高并发的模块(采用集群来处理,由于这时已经没有广播风暴的问题了,因此理论上讲,可以处理非常高的并发量),那些并发量低的模块可能一个tomcat便可以搞定,哪个模块并发量高了便可以配置集群来解决。项目的运行需要各个模块协调合作。

概念:

分布式架构:多个子系统相互协作才能完成业务流程。系统之间需要通信。

集群: 同一个工程部署到多台服务器上。

分布式架构的优点:

1.把模块拆分,使用接口通信,降低模块之间的耦合度。

2.把项目拆分成若干个子项目,不同的团队负责不同的子项目。

3.增加功能时只需要再增加一个子项目,调用其它系统的接口就可以。

4.可以灵活的进行分布式部署。

有优点就有缺点,缺点如下:

1.系统之间交互需要使用远程通信,接口开发增加工作量。

2.各个模块有一些通用的业务逻辑无法共用。

为了解决上面分布式架构的缺点,我们引入了soa架构,SOA:Service Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。SOA架构如下图所示,我们把接口和业务逻辑做成一个个的服务。比如订单系统需要查询商品服务,前台系统也需要查询商品服务,由于我们把商品服务独立出来了,做到了代码复用,它们调用即可。表现层只是用来展示数据而已。

我们淘淘商城的技术架构如下图所示,可以看到表现层与服务层之间加了一个服务中间件Dubbo,这样做的目的是加快表现层与服务层之间的交互速度,服务层与数据库之间加redis,可以大大提高重复性查询的效率,持久层是一个MySQL集群,由MyCat数据库中间件来管理,MyCat相当于这么多mysql数据库的一个抽象,我们操作数据库直接面向的将是MyCat而不是具体的某个mysql,是由MyCat来替我们完成相关操作的。Solr服务是专门用来处理查询的,主要是通过建立索引库来实现的。消息队列则是专门处理各个模块之间的消息的。

转载于:https://www.cnblogs.com/telwanggs/p/6962548.html

(转) 学习淘淘商城第一课相关推荐

  1. 深度学习-吴恩达第一课第二周课程作业

    这周作业是,给出一张图片,判断这张图是不是猫. 这是一个二分类问题,结果是非0即1的,使用逻辑回归(Logic Regression),可以说,了解这个回归方法,有些python基础,会使用jupyt ...

  2. 深度学习(DeepLearning)第一课

    深度学习标志着软件工程.大数据及人工智能领域内的重大突破.伪装成Master的AlphaGO连胜人类围棋冠军.人脸识别代替密码支付.多语言间的机器翻译.计算机理解人类的情感,都和深度学习密切相关.本系 ...

  3. 神经网络与深度学习 吴恩达 第一课第四周 习题

  4. 新手第一课-什么是深度学习

    新手第一课-什么是深度学习 文章目录 新手第一课-什么是深度学习 一.深度学习的发展历程 1.1 Turing Testing (图灵测试) 1.2 医学上的发现 1.3 Deep Learning的 ...

  5. Games106学习记录第一课

    本文地址:https://blog.csdn.net/t163361/article/details/130139998 最近准备申请新星创作者,需要2000个粉丝关注,觉得文章有用的,请点一下左侧边 ...

  6. (转)学习淘淘商城第二十二课(KindEditor富文本编辑器的使用)

    http://blog.csdn.net/u012453843/article/details/70184155 上节课我们一起学习了怎样解决KindEditor富文本编辑器上传图片的浏览器兼容性问题 ...

  7. 学习淘淘商城第二课(搭建Maven工程)

    上节课我们一起学习了淘淘商城的架构,这节课我们一起学习如何搭建Maven工程,关于Maven的好处,网上有很多,这里就不啰嗦了. Maven常见的打包方式有:jar.war.pom pom工程一般都是 ...

  8. 学习淘淘商城第二十三课(添加商品的实现)

    上节课我们一起学习了富文本编辑器的使用,这节课我们一起学习下商品添加的实现. 在item-add.jsp当中,当点击提交按钮后,会触发submitForm方法,如下图所示. 在提交表单前需要校验输入的 ...

  9. 学习淘淘商城第二十四课(前台系统工程搭建)

    上节课我们一起学习了添加商品的实现,这节课我们学习搭建前台系统工程. 我们先来看一下淘淘商城的首页,如下图所示. 我们再来看看淘淘商城的系统架构图,我们目前只是完成了后台管理系统和商品服务,还有很多没 ...

最新文章

  1. 使用Powershell如何导出Exchange对象中的多值属性值
  2. html里面的crossorigin属性,HTML5 标签里的 crossorigin 属性到底有什么用? | Chrisyue's Blog...
  3. mysql创建部分索引
  4. Java类的加载过程详解 面试高频!!!值得收藏!!!
  5. Socket-Client通信
  6. 什么是计算机领域的实时系统
  7. 乌班图系统的MySQL_乌班图系统mysql主从备份
  8. idhttp返回乱码_HTTP客户端POST方式中文编码(乱码)解决方案(转)
  9. cation,validation,qualification有何区别
  10. ELK下Kibana性能调优
  11. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_16-页面静态化-模板管理-模板制作...
  12. 20200615每日一句
  13. 飞思卡尔c语言,飞思卡尔MCU的C语言编程框架
  14. 208亿GMV的抖音年货节里,商家和品牌如何“抢新”?
  15. 软件可靠性计划过程组成与LRU简介
  16. 程序猿生存指南-57 故友来京
  17. HiveQL整理总结
  18. IBM再次出手,蓝色巨人收购蓝色巨狼
  19. DataNucleus JDO基础入门
  20. 使用WSAIoctl获取socket扩展函数(如AcceptEx)的指针

热门文章

  1. Spark源码分析之Checkpoint机制
  2. (22)Xilinx FPGA开发软件chipscope(FPGA不积跬步101)
  3. (06)FPGA资源评估
  4. (1)FPGA面试技能提升篇(SystemC)
  5. c语言词典课程设计报告,C语言课程设计英语词典排版系统
  6. 命令查看mysql端口映射_【转载】烂泥:如何利用telnet命令检测端口映射是否成功...
  7. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之设备树模型
  8. 初探nginx架构(100%)
  9. 三星uboot1.1.6源码分析——start.s(4)——从NAND复制源码到RAM(3)
  10. 嵌入式Linux系统编程学习之二十二内存映射