(转) 学习淘淘商城第一课

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服务是专门用来处理查询的,主要是通过建立索引库来实现的。消息队列则是专门处理各个模块之间的消息的。

时间: 2024-07-31 08:27:42

(转) 学习淘淘商城第一课的相关文章

大数据Spark学习:Scala基础第一课

计划: 阶段1: 精通Spark内核 阶段2: 精通千万级的项目 阶段3: 机器学习 JAVA本身不是伟大的语言,伟大的是JVM,构件分布式平台什么的,依赖的是JVM,不一定要JAVA语言 可认为Scala是JAVA的升级语言,JAVA是支持面向对象的语言,而非纯面向对象的语言.Scala是一切皆对象, 是纯面向对象语言.面向对象结合函数式编程. 不可变变量声明val result = 10+2  不可再次赋值,分布式数据的时候,传输数据.校验数据等不想改变这个数据 可变变量var name =

淘淘商城的第一天

学习视频下载路劲:链接:http://pan.baidu.com/s/1dFF4KiX 密码:q6f0 1 课程计划 一共14天课程 1.第一天:电商行业的背景.淘淘商城的介绍.搭建项目工程.Svn的使用. 2.第二天:框架的整合.后台管理商品列表的实现.分页插件. 3.第三天:后台管理.商品添加.商品类目的选择.图片上传.富文本编辑器的使用. 4.第四天:商品规格的实现. 5.第五天:商城前台系统的搭建.首页商品分类的展示.Jsonp. 6.第六天:cms系统的实现.前台大广告位的展示. 7.

淘淘商城第一天——项目介绍与项目搭建

一.项目目录概述 一共14天课程 1.第一天:电商行业的背景.淘淘商城的介绍.搭建项目工程.Svn的使用. 2.第二天:框架的整合.后台管理商品列表的实现.分页插件. 3.第三天:后台管理.商品添加.商品类目的选择.图片上传.富文本编辑器的使用. 4.第四天:商品规格的实现. 5.第五天:商城前台系统的搭建.首页商品分类的展示.Jsonp. 6.第六天:cms系统的实现.前台大广告位的展示. 7.第七天:cms系统添加缓存.Redis.缓存同步. 8.第八天:搜索功能的实现.使用solr实现搜索

第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第五天】

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第四天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第五天] 开发环境: Eclipse IDE for Enterprise Java DevelopersOS: Wi

(转) 淘淘商城系列——Redis的安装

http://blog.csdn.net/yerenyuan_pku/article/details/72849612 通过上文的学习,我相信大家已经将首页的轮播图展示出来了,接下来我们将进入一个新的领域的学习,希望大家能振作精神,保持乐观向上的心态.本文我会教大家如何在Linux系统上安装Redis. 一般来说,如果我们是做一个互联网项目,通常都要在工程中添加缓存,之所以这样做,是因为在互联网项目中查询功能是非常频繁的,如果每次查询都调用数据库的话,会给数据库造成很大的压力,因此需要在用户和数

(转) 淘淘商城系列——使用FastDFS-Client客户端进行上传图片的测试

http://blog.csdn.net/yerenyuan_pku/article/details/72804018 不久之前,我们实现了商品的类目选择这个功能,但这只是万里长征的第一步,我们还有很多事情需要做,例如怎样实现图片上传这个功能.本文就来教大家如何实现图片上传. 图片上传分析 我们知道,对于传统项目来说,所有的模块都在一个项目中开发,包括所有静态资源文件比如图片等,都存储在这一个tomcat服务器上,如下图所示. 如果访问量小的话,这样做问题倒不大,但是对于互联网项目来说,用户访问

01淘淘商城项目:项目Maven工程搭建

最近在学习淘淘商城项目的搭建,使用maven做管理 后台管理系统工程搭建: 使用maven的好处: 1.依赖管理.jar包.工程之间依赖 2.项目构建:实现项目的一步构建 3.工程聚合.继承.依赖 maven工程分为三种类型: pom工程:用在父级工程,聚合工程中 war包工程:主要用作网站 jar包工程:就是当作jar使用的,可以用来打包 先给出总的项目结构,然后再解释是如何实现这些结构的 解释如下: 1.taotao-parent taotao-parent公司级别的maven工程.主要功能

学习开淘宝网店

上周有厂商到公司测试,拿了一块据说很猛的网络处理加速PCIe板卡,拎在手里沉甸甸的很有分量,最让人意淫的是那4个万兆光口,于是我迫不及待的想要一览光口转发时那种看不见的震撼.       可是,仅凭4个光口怎么测试?起码你要有个"对端"啊!任何人应该都不想扛着三台机器在客户们之间跑来跑去测试其转发性能,当然你也不能指望客户那里就一定有你需要的"对端"设备,比如我们公司就没有这种和万兆光口对接的设备,不过赶巧的是,那天还真有一台设备带有万兆光口,但是只是碰巧了.最佳的

(转)淘淘商城系列——实现图片上传功能

http://blog.csdn.net/yerenyuan_pku/article/details/72808000 上文我们使用FastDFS-Client进行了简单的文件上传操作测试,淘淘商城项目中添加商品时上传图片的功能还没实现,如下图所示.本文将花大量笔墨来教大家如何实现图片上传这个功能. 我们来看下item-add.jsp页面,可以看到上传图片触发的方法是通过叫做picFileUpload的class来处理的,在<a>标签的下方是一个隐藏域,是用来接收图片上传到图片服务器的回显地址