栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

SSM分布式项目之淘淘商城-第一天(IDEA)

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM分布式项目之淘淘商城-第一天(IDEA)

文章大纲
一、第一天课程计划
二、电商行业介绍
三、淘淘商城系统功能
四、系统架构
五、技术选型和开发环境
六、工程搭建
七、代码实现
八、参考文章

淘淘商城课程大纲

课程大纲
一共14天课程
(1)第一天:电商介绍–互联网术语-SOA-分布式-集群介绍-环境配置-框架搭建
(2)第二天:Dubbo介绍_dubbo框架整合_商品列表查询实现_分页_逆向工程
(3)第三天:Git&.Nginx,类目选择,新增商品
(4)第四天:门户网站介绍&商城首页搭建&内容系统创建&CMS实现
(5)第五天:首页轮播图显示实现,Redis环境搭建,Redis实现缓存
(6)第六天:solr索引库搭建&solr搜索功能实现&图片显示问题解决
(7)第七天:solr集群搭建_全局异常处理
(8)第八天:activeMQ介绍_搭建_解决同步索引库问题
(9)第九天:FreeMark入门_静态化页面标签介绍_静态化页面实现
(10)第十天:Nginx代理详解…单点登录系统工程搭建_接口文档讲解
(11)第十一天:SSO系统的搭建&单点登录系统实现_用户名回显_cookie跨域问题
(12)第十二天:购物车订单系统的实现。
(13)第十三天:订单提交的功能实现&项目的部署&服务器的域名规划。
(14)项目总结。

1.第一天课程计划
1、电商行业的背景。
2、电商行业的技术特点
3、商城的介绍
	a)	常用的名词介绍  
	b)	系统功能介绍
4、淘淘商城的系统架构
	a)	传统架构
	b)	分布式架构
	c)	基于服务的架构
	d)	淘淘商城的架构
5、技术的选型
6、工程搭建-后台工程
	a)	使用maven搭建工程
	b)	使用maven的tomcat插件启动工程
7、SVN的使用
2. 电商行业介绍 2.1 电商行业技术特点
技术新 
技术范围广 
分布式
高并发、集群、负载均衡、高可用
海量数据
业务复杂
系统安全

分布式:一件事情,拆开来做
集群:同样的事情,大家一起做

1024b=1kb 1024kb=1mb 1024mb=1gb 1024gb=1tb 1024tb=1pb 。

2.2 淘淘商城介绍

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

其他的一些名词解释:
(IT)传统行业:OA,CRM,ERP,医药采购管理系统,银行系统,财务软件
(IT)互联网行业:电商(淘宝、京东、淘淘),搜索(百度、谷歌),社交(人 人网,天涯论坛),新浪微博,门户网站(新浪,搜狐),12306.cn

电商模式:
B2B:商家到商家。(阿里巴巴,慧聪网、铭万网).
B2C:商家到用户。(以前的京东)。
C2C:用户到用户。(淘宝)。
B2B2C:商家到商家到用户。(天猫、现在的京东)。
O2O:线上到线下。百度外卖、美团、饿了么。(online to offline)。

互联网金融
P2P:Person 2 Person,个人对个人的信贷,互联网的个人对个人的信贷平台

3. 淘淘商城系统功能 3.1 系统功能图

3.2 系统功能介绍

后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
搜索系统:提供商品的搜索功能。
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。

4.系统架构 4.1 传统架构


500并发存在的问题:
1、功能耦合度高
2、系统维护成本高
3、如果并发量大,无法解决高并发的问题

1000并发存在的问题:
1、系统无法有效进行水平扩展(集群不能针对功能模块)
2、用户存在重复登录的问题

针对第二点:需要session共享,是以session广播的形式,比较消耗资源,宽带。

如果要达到10000并发
需要20台服务器做tomcat集群。当tomcat集群中节点数量增加,服务能力先增加后下降。
所以集群中节点数量不能太多,一般也就5个左右。

4.2 分布式架构(10000并发)

需要按照功能点把系统拆分,拆分成独立的功能工程,可以单独为某一个节点添加服务器,需要系统之间配合才能完成整个业务逻辑这就叫做分布式。

集群:相当于同一个工程代码拷贝多份部署到多台服务器,每台服务器单独独立部署运行。
分布式架构:
把系统按照模块拆分成多个子系统;多个子系统相互协作才能完成业务流程系统之间需要进行通信。
优点:
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
4、可以灵活的进行分布式部署。

缺点:
1、系统之间交互需要使用远程通信,需要开发接口,增加工作量。
2、各个模块有一些通用的业务逻辑无法公用。

4.3 基于SOA的架构

SOA:Service Oriented Architecture面向服务的架构。也就是把工程都拆分成服务层工程、表现层工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。工程都可以独立部署。

4.4 淘淘商城系统架构

5. 技术选型和开发环境 5.1 技术选型
	Spring、SpringMVC、Mybatis
	JSP、JSTL、jQuery、EasyUI、KindEditor(富文本编辑器)
	Redis(缓存服务器,单点登录,购物车)
	Solr(搜索)
	dubbo(分布式服务框架)
	HttpClient(HTTP 协议访问客户端)
	ActiveMQ(消息队列)
	Quartz(定时任务)
	FastDFS(图片服务器)
	FreeMarker(网页静态化)
	Nginx(反向代理服务器)
	MyCat(数据库中间件)
5.2 开发工具版本和环境
	IntelliJ IDEA 2018.3.5
	Maven 3.3.9
	Tomcat 7.0.72(Maven Tomcat Plugin)
	JDK 1.7
	Mysql 5.7
	Dubbo 2.5.3
	Nginx 1.8.0
	Redis 3.0.0
	ActiveMQ 5.13.0
	Win10 操作系统
	SVN(版本管理)
6. 工程搭建 6.1 使用maven的好处

使用maven管理工程。
Jar包的管理
工程之间的依赖管理
自动打包
统一的版本的控制。

6.2 后台管理系统工程搭建分析

Maven的常见打包方式:jar、war、pom
Pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理。聚合工程。

	taotao-parent:父工程,打包方式pom,管理jar包的版本号。
	    |           项目中所有工程都应该继承父工程。
		|--taotao-common:通用的工具类通用的pojo,util。打包方式jar
		|--taotao-manager:服务层工程。聚合工程。Pom工程
			|--taotao-manager-dao:打包方式jar
			|--taotao-manager-pojo:打包方式jar
			|--taotao-manager-interface:打包方式jar
			|--taotao-manager-service:打包方式:war  (为了发布服务的方便)
		|--taotao-manager-web:表现层工程。打包方式war
7.代码实现 7.1 配置IDEA的Maven地址

7.2 创建taotao-parent

taotao-parent项目是整个商场的父项目,用于定义各个maven依赖的版本和配置tomcat插件及jdk版本,不编写任何实际代码

创建工程:
File —》NEW --》Project

创建完项目结构如下:

修改pom.xml文件代码如下:


	4.0.0
	com.taotao
	taotao-parent
	1.0-SNAPSHOT
	pom
	
	
		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
		3.4.2-fix
		0.9.1
		1.3.1
		2.7.2
		4.10.3
		2.5.3
		3.4.7
		0.1
		5.13.0
		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}
		
			
			
				org.apache.maven.plugins
				maven-resources-plugin
				2.7
				
					UTF-8
				
			
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				3.2
				
					1.7
					1.7
					UTF-8
				
			
		
		
			
				
				
					org.apache.tomcat.maven
					tomcat7-maven-plugin
					2.2
				

				
				
					org.apache.maven.plugins
					maven-surefire-plugin
					2.12.4
				
			
		
	

将项目发布到maven本地仓库

7.3 创建taotao-common

taotao-common项目继承taotao-parent,用于编写项目通用的工具类、通用的pojo
打包方式jar。项目创建方式与taotao-parent一样,
注意一点,不要加到parent骨架里面

之后修改pom.xml文件内容如下:


    4.0.0
    
        com.taotao
        taotao-parent
        1.0-SNAPSHOT
    
    com.taotao
    taotao-common
    0.0.1-SNAPSHOT
    
    
        
        
            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
        
    


进行Install

7.3 创建taotao-manager

聚合工程。打包方式pom。
同样 右击创建Module
剩下的步骤同taotao-common一样,也要注意不要添加到parent骨架

修改pom.xml文件


	4.0.0
	
		com.taotao
		taotao-parent
		1.0-SNAPSHOT
	
	com.taotao
	taotao-manager
	1.0-SNAPSHOT
	pom
	
		
			com.taotao
			taotao-common
			0.0.1-SNAPSHOT
		
	

7.4 创建taotao-manager-pojo

右击taotao-manager创建module
是一个maven模块,打包方式为jar。

修改pom.xml文件


	4.0.0
	
		com.taotao
		taotao-manager
		1.0-SNAPSHOT
	
	taotao-manager-pojo

7.5 创建taotao-manager-dao

是Maven模块,打包方式jar。

选择taotao-manager 右击鼠标–》NEW —》 Module
创建方式同pojo

修改pom.xml文件


	4.0.0
	
		com.taotao
		taotao-manager
		1.0-SNAPSHOT
	
	taotao-manager-dao
	
	

			com.taotao
			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
		
	

7.6 创建taotao-manager-interface

Maven模块,打包方式jar包
选择taotao-manager 右击鼠标–》NEW —》Module
创建方式同pojo

修改pom.xml文件


	4.0.0
	
		com.taotao
		taotao-manager
		1.0-SNAPSHOT
	
	taotao-manager-interface
	
		
			com.taotao
			taotao-manager-pojo
			1.0-SNAPSHOT
		
	

7.7 创建taotao-manager-service

打包方式war包。
选择taotao-manager 右击鼠标–》NEW —》 Module
这里我选择模板,因为需要有web.xml文件

自动生成webApp

修改pom.xml文件




    
        taotao-manager
        com.taotao
        1.0-SNAPSHOT
    
    4.0.0

    taotao-manager-service
    war

    taotao-manager-service Maven Webapp
    
    http://www.example.com

    
        UTF-8
        1.7
        1.7
    

    
        
            junit
            junit
            4.11
            test
        

        
        
            com.taotao
            taotao-manager-dao
            1.0-SNAPSHOT
        
        
        
            com.taotao
            taotao-manager-interface
            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
        

    

    
        taotao-manager-service
        
            
                
                    maven-clean-plugin
                    3.1.0
                
                
                
                    maven-resources-plugin
                    3.0.2
                
                
                    maven-compiler-plugin
                    3.8.0
                
                
                    maven-surefire-plugin
                    2.22.1
                
                
                    maven-war-plugin
                    3.2.2
                
                
                    maven-install-plugin
                    2.5.2
                
                
                    maven-deploy-plugin
                    2.8.2
                
            
        
    


7.8 创建taotao-manager-web

表现层,打包方式war。(注意继承taotao-parent)

右击taotao-parent --》NEW -->Module
这里因为也要有web.xml文件,所以选择模板,跟service一样

不要添加进parent骨架
然后一直next就可以啦

修改pom.xml文件


	4.0.0
	
		com.taotao
		taotao-parent
		1.0-SNAPSHOT
	
	com.taotao
	taotao-manager-web
	1.0-SNAPSHOT
	war
	
		
		
			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
		
		
		
			jstl
			jstl
		
		
			javax.servlet
			servlet-api
			provided
		
		
			javax.servlet
			jsp-api
			provided
		
		
		
			commons-fileupload
			commons-fileupload
		
	
	
	
		
			
				org.apache.tomcat.maven
				tomcat7-maven-plugin
				
					8081
					/
				
			
		
	

最后一定要提前install,每个项目在配置完pom.xml之后最好都install一下,防止意外…

7.9 启动工程与测试

启动taotao-manager-web工程
首先如果想要看到页面,就要创建index.jsp(自带的不能用),然后启动工程,占用8081端口
右击webapp–jsp

测试
PS :由于他们自带模板配置一些监听器,就会报错,需要清理一下web,xml文件,以及没必要的文件,只留一个web.xml就可以了,web.xml文件留一个头就好,内容全部要,后面自己配置…
这样就不报错了

测试启动taotao-manager工程
需要在taotao-manager 的pom工程中,配置tomcat插件。启动的端口号,和工程名称。
在taotao-manager的pom文件中添加如下配置:


	
		
			
				org.apache.tomcat.maven
				tomcat7-maven-plugin
				
					8080
					/
				
			
		
	

同测试web步骤一样

成功

表示启动 成功

8. SVN的使用 8.1 服务端创建仓库




设置仓库权限


8.2 IDEA添加SVN配置与第一次提交


温馨提示:图片中需要配置客户端的svn所在安装包的svn.exe文件,如果找不到该文件,说明是在安装客户端的时候,选择了默认安装,因此可以重装,之后选择以下的内容进行安装即可(将红X去掉)


右键工程,将工程上传到svn:

选择上传到trunk目录中:

再次右键工程,提交到svn目录:

填写信息,选择提交;

8.3 项目上传与更新

8.参考文章

https://www.cnblogs.com/WUXIAOCHANG/p/10786345.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/910870.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号