开发环境与技术选型

操作系统:win7

IDE:Eclipse neno

JDK:1.8

数据库:mysql5.6

Dao层:mybatis、数据库连接池(德鲁伊druid)

缓存:redis3.0.0

搜索:solr

Service层:spring

表现层:springmvc、jstl、EasyUI、jsp、freemaker

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

反向代理服务器:nginx1.8.0

定时器:Quartz

Web服务器:tomcat 7.0.53

工程管理:Maven 3.3.9

项目架构设计

传统架构的项目架构分为表现层,业务层,持久层加数据库。如图2.1表现层由mvc框架实现,主要的任务是接受用户操作,调用业务层接口,返回渲染相应视图。业务层负责具体的业务功能实现,持久层负责处理数据库操作,实现业务与数据的解耦。Spring框架用来管理这个项目中的类,而mybatis框架实现数据库与javabean的对接适配。

图2.1

如果用tomcat做服务器,对于500以上的并发量时,单台tomcat就会力不从心。处理1000并发量的数据,就需要配置tomcat集群。但是tomcat集群并不是配置越多的节点处理能力就越好,而是随着节点数量的增加,服务性能先增后降。一般节点数量最多在5个左右。(原因是Session通信的制约)

在处理更高的并发时单纯的增加服务器节点是不行的。这时就要用到分布式集群。所谓分布式就是把项目按照功能拆分。一个功能就是一个项目,再对某个并发量高的功能单独添加服务器集群。这样,基于分布式增加节点,并发量不高的功能就不再占据服务器资源,从而提高了服务器的效率。

但是把项目做分布式之后,各个模块会有一些通用的业务逻辑,它们被独自封装在了各个模块之中无法共用。这就引出了SOA架构。

SOA架构

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

工程搭建

在搭建工程中,我使用maven来管理工程,这就省去了导jar包的烦恼。

工程目录树如下:

Taotao-parent:父工程,打包方式pom,管理jar包的版本号。

|           项目中所有工程都应该继承父工程。

  |--Taotao-common:通用的工具类通用的pojo。打包方式jar

    |--Taotao-manager:服务层工程。聚合工程。Pom工程

    |--taotao-manager-dao:打包方式jar

    |--taotao-manager-pojo:打包方式jar

    |--taotao-manager-interface:打包方式jar

    |--taotao-manager-service:打包方式:war

|--taotao-manager-web:表现层工程。打包方式war

SSM网上商城项目 01的更多相关文章

  1. 【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布

     转自:https://blog.csdn.net/wwww_com/article/details/54405355 前面陆陆续续的完成了网上商城的一些基本功能,虽然还有很多地方有待完善,但是不影响 ...

  2. 【SSH网上商城项目实战21】从Demo中看易宝支付的流程

         转自: https://blog.csdn.net/eson_15/article/details/51447492 这一节我们先写一个简单点的Demo来测试易宝支付的流程,熟悉这个流程后, ...

  3. 新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial

    新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial 作者:韩梦飞沙 Auth ...

  4. 【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示

    转自:https://blog.csdn.net/eson_15/article/details/51405911 网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要 ...

  5. 【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2

    转自:https://blog.csdn.net/eson_15/article/details/51277324 今天开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总 ...

  6. 【SSH网上商城项目实战30】项目总结

      转自:https://blog.csdn.net/eson_15/article/details/51479994 0. 写在前面 项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了 ...

  7. 【SSH网上商城项目实战25】使用java email给用户发送邮件

       转自: https://blog.csdn.net/eson_15/article/details/51475046 当用户购买完商品后,我们应该向用户发送一封邮件,告诉他订单已生成之类的信息, ...

  8. 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于博客定期更新排名)

    转自:https://blog.csdn.net/eson_15/article/details/51387378 上一节我们做完了首页UI界面,但是有个问题:如果我在后台添加了一个商品,那么我必须重 ...

  9. 【SSH网上商城项目实战30】项目总结(附源码下载地址)

    项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了,积少成多,写博客的过程是固化思路的一个过程,对自己很有用,同时也能帮助别人.顺便说个题外话,在学习的过程中肯定会遇到很多异常出现,我们 ...

随机推荐

  1. JFrame Frame 窗口关闭

    JFrame是Frame的子类,即JFrame继承自Frame. JFrame是javax.swing.JFrame的类,Frame是java.awt.Frame的类. 类似的还有JButton.Bu ...

  2. 数据库limit子句

    limit子句:用来限定语句执行结果的偏移量,有一个或者两个参数:第一个参数表示返回结果首行偏移量,第二个参数表示最大返回行数.例如:SELECT * FROM employees ORDER BY ...

  3. SQLServer 2012 Always on配置全过程

    AlwaysOn取数据库镜像和故障转移集群之长.AlwaysOn不再像故障转移集群那样需要共享磁盘,从而主副本和辅助副本可以更容易的部署到不同的地理位置:AlwaysOn还打破了镜像只能1对1的限制, ...

  4. LeetCode House Robber 家庭劫犯(dp)

    题意:有一个整数序列,从中挑出一些数字,使得总和是最大,前提是,相邻的两个数字中只能挑其一.比如1 2 3 就只能挑2或者1和3. 思路:很直观的题,dp思想.降低规模,从小规模开始考虑.如果只有两个 ...

  5. codeforce Gym 100342J Triatrip (bitset)

    傻逼题,但是为什么别人的O(n^3)不会T?只是因为用了bitset优化... 附上一张bitset基本操作的表 #include<bits/stdc++.h> using namespa ...

  6. Android(java)学习笔记126:判断SD卡状态和SD卡容量

    1. 判断SD卡状态和SD卡存储空间大小 当我们在使用SD卡时候,如果我们想往SD卡里读写数据,我们必须在这之前进行一个逻辑判断,那就是判断SD卡状态和SD存储空间大小: 核心代码: String s ...

  7. LibreOffice Writer Comment

    选择文字段后输入:Ctrl+Alt+C可以插入评论,但会出现: unknown author 解决方法:Tools>Options>LibreOffice>User Data. Fi ...

  8. DROP LANGUAGE - 删除一个过程语言

    SYNOPSIS DROP [ PROCEDURAL ] LANGUAGE name [ CASCADE | RESTRICT ] DESCRIPTION 描述 DROP LANGUAGE 将删除曾注 ...

  9. java基础—数组

    一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组的元素可以是任何数据类型,包括基 ...

  10. java,求1-100以内所有偶数的和。

    package study01; public class Even { public static void main(String[] args) { int sum = 0; for (int ...