前言:
本文是一篇实战视频的笔记和总结。
1.电商的基本介绍
电商是什么?电子商务,就是网上交易所。比如淘宝,京东,阿里巴巴,1号店等等
1.1.电商行业的特点
- 技术新:和传统项目(比如XXX管理系统)相比,用到的技术比较新
- 技术范围广:不限于框架的整合,比如我们自己创建一个小项目的话,SSM或者SSH就可以解决我们的开发问题,但是由于电商涉及的数据量,访问量是巨大的,要整合其他很多技术
- 分布式
- 高并发(同时访问量大),集群,负载均衡,高并用
- 海量数据(涉及到的数据非常多,用大数据技术处理)
- 业务复杂
- 系统安全
电商的模式
- B2B:商家到商家。阿里巴巴
- B2C:商家到用户。京东
- C2C:用户到用户。淘宝
- B2B2C:商家到商家到用户。天猫
- O2O:线上到线下。百度外卖,美团,饿了么
2.架构
2.1功能列表
2.2系统架构
传统架构:
1000并发:
当我们的访问达到10000的时候就需要20台服务器做tomcat集群。当tomcat集群中节点数量增加,服务能力先增加然后下降;这是因为资源都消耗在Tomcat之间的广播交流中。所以集群中节点数量不能太多,一般也就5个左右!!
解决方案:
分布式架构:多个子系统相互协作才能完成的业务流程。系统之间需要通信(webservice)
集群:同一个工程部署到多台服务器中。
分布式架构的优点和缺点:
优点:
1.把模块拆分,利用接口通信,降低了模块之间的耦合度
2.把项目拆分若干个子项目,方便团队协作
3.可以灵活的进行分布式部署
缺点:
1.系统职期间交互需要使用远程通信,增加接口开发量
2.一些通用的业务逻辑无法公用
2.3解决通用的业务逻辑无法公用的方案
系统的架构如下:
服务层和表现层之间用中间件Dubbo,加快交互的速度。服务处和数据层之间用redis缓存技术。持久层是Mysql的集群,由MyCat来建立一个逻辑上的数据库。Solr服务处理检索任务。消息队列则是处理每个模块的消息
3.系统的基本搭建
本项目的用的ide是idea,所以配置是按照是idea来的。项目配置利用的是Maven来管理,没有学习的朋友可以先去学习下Maven的基本应用
传送门:
https://www.imooc.com/learn/443
下面开始项目的搭建
开发ide:idea;
Maven:3.3.9
1.目录
简单介绍一下目录结构:
common-parent:为所有项目的父项目,主要用来管理所有项目使用的jar包及其版本。 (所有的项目都应该继承父工程)
common-utils:为公共的工具类项目,继承父项目,它会被打成jar包供其它项目使用。
taotao-manager:为我们自己的项目,继承与我们的父项目,聚合工程。
taotao-manager-pojo为我们自己项目的一个子模块,依赖与taotao-manager,打成jar包
taotao-manager-dao为我们自己项目的一个子模块,依赖与taotao-manager-pojo,打成jar包
taotao-manager-service为我们自己项目的一个子模块,依赖与taotao-manager-dao,打成war包
taotao-manager-web为我们自己项目的一个子模块,依赖与taotao-manager-service,打成war包
2.创建父工程(common-parent)
1.创建新项目
-
来到创建目录,选择Empty project,next
image.png -
来到New Project页面,填写project name,选择Project location,点Finish
image.png
等待IDEA加载完成,进行下一步
-
选择File–>New–>Module,进入New Module页面:
image.png -
在New Module页面,按如下步骤操作:
image.png -
填写组织名称和项目名称,以及版本号
image.png -
配置本地maven目录及maven仓库配置文件
createParent8 -
创建父工程最后一步,给Module取名,及选择工作目录,选择完成
createParent9
等待生成pom文件,注意修改打包方式为pom,修改pom文件如下:
4.0.0
com.lan
common-parent
1.0-SNAPSHOT
pom
common-parent
http://maven.apache.org
1.8
1.8
UTF-8
4.12
4.2.4.RELEASE
3.2.8
1.2.2
1.2.15
5.1.32
1.6.4
2.4.2
1.0.9
4.3.5
1.2
2.5
2.0
2.5
3.3.2
1.3.2
3.3
4.1.4
0.9.1
1.3.1
2.7.2
4.10.3
2.5.3
3.4.7
0.1
5.11.2
2.3.23
2.2.2
joda-time
joda-time
${joda-time.version}
org.apache.commons
commons-lang3
${commons-lang3.version}
org.apache.commons
commons-io
${commons-io.version}
commons-net
commons-net
${commons-net.version}
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
org.apache.httpcomponents
httpclient
${httpclient.version}
org.quartz-scheduler
quartz
${quartz.version}
junit
junit
${junit.version}
test
org.slf4j
slf4j-log4j12
${slf4j.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
${mybatis.spring.version}
com.github.miemiedev
mybatis-paginator
${mybatis.paginator.version}
com.github.pagehelper
pagehelper
${pagehelper.version}
mysql
mysql-connector-java
${mysql.version}
com.alibaba
druid
${druid.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-jms
${spring.version}
org.springframework
spring-context-support
${spring.version}
jstl
jstl
${jstl.version}
javax.servlet
servlet-api
${servlet-api.version}
provided
javax.servlet
jsp-api
${jsp-api.version}
provided
commons-fileupload
commons-fileupload
${commons-fileupload.version}
redis.clients
jedis
${jedis.version}
org.apache.solr
solr-solrj
${solrj.version}
com.alibaba
dubbo
${dubbo.version}
org.apache.zookeeper
zookeeper
${zookeeper.version}
com.github.sgroschupf
zkclient
${zkclient.version}
org.apache.activemq
activemq-all
${activemq.version}
org.freemarker
freemarker
${freemarker.version}
${project.artifactId}
maven-clean-plugin
3.0.0
maven-resources-plugin
3.0.2
UTF-8
maven-compiler-plugin
3.7.0
1.8
1.8
UTF-8
maven-surefire-plugin
2.20.1
maven-jar-plugin
3.0.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
3.创建公共工具类
继承父项目
然后添加ArtifactId
修改pom
common-parent
com.lan
1.0-SNAPSHOT
../common-parent/pom.xml
4.0.0
common-utils
jar
common-utils
http://maven.apache.org
UTF-8
joda-time
joda-time
org.apache.commons
commons-lang3
org.apache.commons
commons-io
commons-net
commons-net
com.fasterxml.jackson.core
jackson-databind
org.apache.httpcomponents
httpclient
org.quartz-scheduler
quartz
junit
junit
org.slf4j
slf4j-log4j12
maven-clean-plugin
3.0.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.7.0
maven-surefire-plugin
2.20.1
maven-war-plugin
3.2.0
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
4.创建业务编辑包
创建开发项目taotao-manager,其创建步骤同上,同样是继承common-parent,同样修改其pom文件,详细如下:
common-parent
com.lan
1.0-SNAPSHOT
../common-parent/pom.xml
4.0.0
taotao-manager
pom
taotao-manager
http://maven.apache.org
../taotao-manager-pojo
../taotao-manager-dao
../taotao-manager-interface
../taotao-manager-service
../taotao-manager-web
UTF-8
com.lan
common-utils
1.0-SNAPSHOT
maven-clean-plugin
3.0.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.7.0
maven-surefire-plugin
2.20.1
maven-war-plugin
3.2.0
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
org.apache.tomcat.maven
tomcat7-maven-plugin
8080
/
5.开发子模块
创建taotao-manager-pojo,dao,interface,service,web等子模块,详细如下:
与创建common-utils时不同,是将其子模块添加到taotao-manager目录下的:
创建taotao-manager下其它子模块:
另外的模块创建方式和上面所述的创建方式相同,只有web模块需要选择
pojo的pom配置(依赖manager)
taotao-manager
com.lan
1.0-SNAPSHOT
../taotao-manager/pom.xml
4.0.0
taotao-manager-pojo
jar
taotao-manager-pojo
http://maven.apache.org
UTF-8
maven-clean-plugin
3.0.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.7.0
maven-surefire-plugin
2.20.1
maven-jar-plugin
3.0.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
dao依赖manager
taotao-manager
com.lan
1.0-SNAPSHOT
../taotao-manager/pom.xml
4.0.0
taotao-manager-dao
jar
taotao-manager-dao
http://maven.apache.org
UTF-8
com.lan
taotao-manager-pojo
1.0-SNAPSHOT
org.mybatis
mybatis
org.mybatis
mybatis-spring
com.github.miemiedev
mybatis-paginator
com.github.pagehelper
pagehelper
mysql
mysql-connector-java
com.alibaba
druid
maven-clean-plugin
3.0.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.7.0
maven-surefire-plugin
2.20.1
maven-jar-plugin
3.0.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
interface依赖manager
taotao-manager
com.lan
1.0-SNAPSHOT
../taotao-manager/pom.xml
4.0.0
taotao-manager-interface
com.lan
taotao-manager-pojo
1.0-SNAPSHOT
service
taotao-manager
com.lan
1.0-SNAPSHOT
../taotao-manager/pom.xml
4.0.0
taotao-manager-service
war
taotao-manager-service
http://maven.apache.org
UTF-8
com.lan
taotao-manager-dao
1.0-SNAPSHOT
org.springframework
spring-context
org.springframework
spring-beans
org.springframework
spring-webmvc
org.springframework
spring-jdbc
org.springframework
spring-aspects
org.springframework
spring-jms
org.springframework
spring-context-support
maven-clean-plugin
3.0.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.7.0
maven-surefire-plugin
2.20.1
maven-jar-plugin
3.0.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
web(依赖manager):
taotao-manager
com.lan
1.0-SNAPSHOT
../taotao-manager/pom.xml
4.0.0
war
taotao-manager-web
taotao-manager-web
jstl
jstl
javax.servlet
servlet-api
provided
javax.servlet
jsp-api
provided
6.运行项目
要注意的是记得在taotao-manager的pom文件中配置了tomcat的插件
org.apache.tomcat.maven
tomcat7-maven-plugin
8080
/
将common-parent和common-utils添加到本地仓库中不然会报错
配置maven
然后再service层加个Index.jsp试一试
运行:
大功告成!
本文的配置参考:
https://blog.csdn.net/williamhappy/article/details/54376855
https://blog.csdn.net/for_my_life/article/details/78939078
项目地址:
https://github.com/AslanYJ/shopping