项目总结

 

一、项目简介

       淘淘网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。商家可以在入住淘 淘商城,在该平台上开店出售自己的商品,并且得到淘淘商城提供的可靠的服务。管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。客服可以在后台管理系统中处理用户的询问以及投诉。

 

二、技术架构

 

从上面的架构图我们可以看出来:

a、模块之间耦合度太高,其中一个升级其她都得升级。

b、开发困难,各个团队开发最后都要整合一起。

c、系统的扩展性差。

d、不能灵活的进行分布式部署。

解决方法:

优点:

把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。

缺点:

系统之间交互需要额外的工作量来进行接口的开发。

在传统架构上并发量高一些可以采用tomcat集群解决,但是需要20台服务器做tomcat集群,然而tomcat集群之间只能依靠session共享解决服务器之间的通信,然而随着并发量的增加、集群数量的提升。服务器集群中忙于session共享传达信息,服务能力先增加后降低,一般节点数最多为五个。因此由于sessiojn这方面的问题成为主要问题 .

 

分布式框架:

 

           后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。主要是负责商品的分类,添加、规格参数。CMS系统(这里主要是广告的分类、添加)。  

           前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。

           会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。

           订单系统:提供下单、查询订单、修改订单状态、定时处理订单。

           搜索系统:提供商品的搜索功能。

           单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。

 

系统间的通信

什么是dubbo

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

三、项目架构分析

淘淘商城项目基于SOA 架构,目的是用于将服务层与表现层拆分成两个独立的工程,从而实现灵活的分布式部署,并且降低了代码之间的耦合度。服务层用于处理业务逻辑,对外提供服务的接口。表现层通过调用服务端的接口,用于处理用户的请求并以页面的形式展示数据。

主题架构图: 

四、具体完成过程

架构解决了就该搭建工程了.

1.项目搭建

这里采用maven来管理整个项目。优势两点:1、maven可以以管理整个项目工程,方便热部署项目,项目发布方便。2、maven管理你jar包具有很大的优势,可以自动下载所需的jar包,只需定义好版本即可,其他maven自动下载。

因为这个项目比较大,子工程比较多,所以我们建立一个pom类型(聚合工程)parent来管理里所有jar包的版本,这样其他 子工程都依赖此工程。版本得到了统一,不会出现因版本问题导致的错误。其次建立一个专门的(jar类型)common工具类,可以将系统中使用到的工具类都加入此类,其他类也依赖此类,就可以使用这里面的工具了。此工具类也依赖parent类。

    不使用maven:工程部署时需要手动复制jar包。完成工程构建。非常繁琐。

 

IDEA 工程目录如下: 

 

如上图,一个完整的项目被分成了四个模块。

 

2. ssm框架整合

整合思路

dao层(mybatis)(主要是与数据库打交道)

创建SqlMapConfig.xml (主要是它的插件配置,数据库配置放在dao)

 

spring将mybatis和springMVC整合起来

创建application_context_dao.xml(配置数据源,与数据库的连接),

创建application_context_service.xml(将service的文件包引入工程)。

创建application_context_transation.xml(这里将事务独立出来,主要是事务的配置)

 

service层(spring)(主要是负责调用dao层,实现业务逻辑的编写)

 

controller层(springMVC)(这里主要调用service层,根据jsp页面的内容,将jsp的内容传递到service层,然后讲数据显示到jsp页面)

创建SpringMVC.xml(主要是前端控制器,视图解析器的配置)

web.xml

 

 

框架搭建完成后,利用mybatis的逆向工程生成各个表的mapper.xml和mapper.java文件、pojo文件。

其中,后台管理系统搭建,前台技术使用EasyUI框架。了解easyUI的dategrid的使用方法。

3.系统间通信

使用Dubbo 中间件实现表现层调用服务层

Dubbo监控中心

ZooKeeper注册中心

安装和配置Dubbo 和ZooKeeper

4.商品列表查询

从数据库中将所有商品查询出来。在页面分页用到了mybatis的分页插件pageHelper来实现。

传入参数:Easyui页面默认有page、rows参数传递。

返回值:easyui的格式即datagrid的格式,专门编写一个对应的pojo类放入专门工具类中使用,返回格式即这个pojo。

逻辑:Dao层:Dao层用mybatis的逆向工程

Service调用mapper的查询和分页实现逻辑。

Controller即将参数传递过去,url写好

5.商品类目选择

类目选择首先得将类目展示出来,使用异步树的格式。查询api发现异步树的返回值的格式。主要思路是:根据parentId来查询类目表,默认从0开始,异步树有个特点,就是每次获取到的id,如果有子节点,会发送url再次请求,如果没有子节点则不发送请求,所以可以都遍历到所有节点。(这个是tree的特点,自动请求)

5.1EasyUI的异步tree的使用方法。

5.2图片服务器的搭建。使用ftp+http配合,实现图片服务。ftp服务使用vsftpd实现,http服务使用nginx实现。因为商城的图片非常多,所以我们将这么多的图片保存在图片服务器中,然后将图片在服务器中的具体url写入数据库,供前台调用。前台获取到这个url既可获取到这个图片。这里图片上传到服务器的功能:先生存图片的名称,然后生成图片保存的格式,然后利用ftpUtil将图片上传到服务器,返回一个url链接。

5.3KindEditor富文本编辑器的使用方法。

5.4商品添加功能实现

将商品信息写入数据库,页面传递的内容当点击提交按钮时直接写入数据库,只需补全没有的字段即可。

5.4.1功能分析

5.4.2Dao层

5.4.3Service层

5.4.4发布服务

5.4.5表现层引用服务

5.4.6Controller

6.前台系统搭建之商城首页展示

首页展示与内容管理功能并没有涉及到新的知识,只是在原来的项目中新建了两个子工程,并完成相应的增删改查。

工程目录如下: 

6.1首页动态展示

网站的首页的实现必须是动态的,可以在后台管理维护。

 

6.2创建内容服务系统

 

7. CMS系统实现

7.1内容分类管理

7.1.1展示内容分类

7.1.2新增节点

7.1.3内容分类重命名.删除

 

7.2内容管理

7.2.1内容列表管理

7.2.2新增内容

7.2.3编辑内容

7.2.4删除内容

 

 

8.首页大广告展示流程

9. Redis

9.1、redis的使用方法及redis集群的搭建

9.2、系统中添加缓存逻辑

9.3、缓存的同步方法

 

10.搜索功能实现

要实现搜索功能,需要搭建solr服务,搜索服务工程,搜索系统

10.1 搭建搜索服务工程

 

10.2 未完待续

 

*、项目用到的技术

Spring、SpringMVC、Mybatis

JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV、freemarker

Redis(缓存服务器)

Lucene、Solr(搜索)

httpclient(调用系统服务)

Mysql

MyCat mysql分布式集群解决方案

LVS+Nginx(web服务器)

Quartz(定时任务)

ActiveMQ(消息队列)

Alibaba Dubbo服务接口集群

Fastdfs 分布式文件系统(图片服务器)

 

 

*、项目特色

1、淘淘上传采用当前最流行的ssm(springmvc+spring+mybatis)框架开发,是当前电商网站首选的技术架构。

2、系统后台使用jsp+easyUI作为视图层,操作简便用户体验好,使用KindEditor作为富文本编辑器操作简便界面美观。

3、系统前台使用freemarker做静态化页面来提高系统的性能,以应对大规模的用户量的并发。

4、使用HttpClient以及Restful风格的接口来实现各个系统之间的相互通信。

5、使用Lvs+Nginx服务器来处理图片、静态页面以及系统之间的负载均衡,可以应付大并发的压力。

6、使用Redis集群做缓存服务器,提高系统的响应速度。

7、使用Solr集群提高商品信息的查询服务,提高系统的查询速度以及准确率,极大提高了用户体验。

8、使用FastDFS分布式文件系统作为图片服务器。实现图片的分布式存储。

9、使用Alibaba Dubbo作为SOA服务化治理方案的核心框架。系统之间使用ActiveMQ消息队列实现消息服务。

10、后台数据库采用mysql数据库,使用mycat作为中间件实现主从复制、分库分表以实现大数据量的存储,是当今电商行业主流解决方案。

11、整个项目采用最流行的Maven来管理项目,达到项目的标准化,易于项目的构建。

12、使用svn来管理项目的代码和文档。

13、使用hudson来管理项目开发过程中的持续集成。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值