开发环境与技术选型

操作系统: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. Sqoop基础学习(1)

    1. Sqoop的导入过程 在开始导入之前,Sqoop会通过JDBC来获得所需要的数据库元数据 1.导入表的列名.数据类型等: 2.接着这些数据库的数据类型(varchar.number等)会把映射成 ...

  2. 常用的图片相关方法,读取,保存,压缩,缩放,旋转,drawable转化

    import android.content.Context; import android.content.res.AssetManager; import android.content.res. ...

  3. python中的getcwd

    Help on built-in function getcwd in module posix: getcwd(...)    getcwd() -> path        Return a ...

  4. 创建XML的用法

    注意:在实际开发中,注意createElement().createAttribute().createTextNode().appendchild()等方法的具体使用. // root根节点的属性数 ...

  5. LR脚本示例之常用函数

    1.变量和参数的设置 //将IP地址和端口放入到参数中lr_save_string("127.0.0.1:1080","ip"); //退出脚本建议使用lr_e ...

  6. 洛谷 P2691 逃离

    题目描述 一个n×n栅格是由n行和n列顶点组成的一个无向图,如图所示.用(i,j)表示处于第i行第j列的顶点.除了边界顶点(即满足i=1,i=n,j=1或j=n的顶点(i,j)),栅格中的所有其他顶点 ...

  7. HDU - 5491 The Next 2015 ACM/ICPC Asia Regional Hefei Online

    从D+1开始,对于一个数x,区间[x,x+lowbit(x))内的数字的二进制位上1的数量整体来说是单调不减的,因此可快速得出1在这个区间的取值范围. 每次判断一下有没有和[s1,s2]有没有交集,一 ...

  8. Android(java)学习笔记136:利用谷歌API对数据库增删改查(推荐使用)

    接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1. 首先项目图: 2. 这里的布局文件activity_main.xml: <LinearLayout xmlns:andro ...

  9. Memcached笔记之分布式算法

    1.根据余数进行分散:离散度高,但是增加或者移除服务器的时候,缓存充足的代价非常大.添加服务器后,余数就会产生巨变,这样就无法获取与保存时相同的服务器,从而音像缓存的命中率. 2.Consistent ...

  10. python_100_静态方法

    class Dog(object): def __init__(self,name): self.name=name @staticmethod#实际上跟类没什么关系了 def eat():#def ...