newstyles项目实战(一)

       这是学习Java以来第一个较为完整的项目,对此,写了一个专栏,专门记录自己创建newstyles项目的每一步,方便自己查阅,也方便也别人进行交流,互相学习。

       首先,newstyles项目是一个类似于电商的项目,与网上的很多电商项目形似,但是无论是否一样,最终完完整整的自己做完了,每一步都较为详细的考虑了,这样学到的才是自己的东西,才能够对自己有很大帮助,每一步都实打实的,才会让自己真正学有所用。

      项目介绍:

        功能描述:

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

此项目呢是基于一个电商项目的改编,相对于传统的项目来说,在以下方面做出了改进:

       系统架构方面:


       个人网站可以使用一个小型的服务器,运行tomcat既可以实现,若是企业级网站的话,例如百度腾讯等,其服务器更倾向于分布式集群,通俗来说也就是其他地方也分布有相同的代码。不同的地方运行着相同的代码。当然在一定的范围内可以通过仅增加高性能的服务器和存储性能好的存储设备的数量来解决,但是随着业务量和用户数量的增加仅靠上述的方案来解决斌不是很好,其需要考虑采用分布式的架构来解决问题,且可以采用较低价格的数据存储设备等,降低了开发的成本。与传统的小型的LAMP构建的小网站相比其分为前台和后台两个大的方面:

传统的小型网站的建立多采用上述结构,其网站的前台数据收集界面和后端的数据库耦合程度较高,假如对其中某一个进行升级的话,其需要对与其相关的部分同时进行更新,假如如果有新的业务进行增加,网站的修改工作量也是很大的。对于我们关心的开发层面,开发的前后两部分工作需要协同进行,如果前端修改,后端也会受到较大的影响,如果后端修改内容,则前端的工作也会受到影响,如果涉及业务量和用户数量的增加,网站的扩建也很不方便,分布式方式支持度较低。

而对于进行设计的简单的架构来说,前台一般涉及到用户的交互,数据的收集以及传递等,对于数据的高并发等要求较高,同时,前台还需要与后台之间进行数据的快速通信,随着分布式架构的使用,将各个模块进行划分,单独分开,分为多个子系统,这也许会有人提出疑问,数据这时候是不容易共享的,是的,但是我们可以通过系统之间的通讯来实现数据等信息的交互,确实,其会产生较多的接口通讯的工作量,但性对于网站的动态增长则更加适合:比如,对于电商项目来说,其不同的功能对服务器的压力是不同的,一般的电商项目顾客浏览的频率此说较多,订单生成的较少(特殊角如除外哈,双十一等),所以体现到后端数据操作上来说,相应的查找较多,此时应该适当的调整分布集群,“照顾“一下检索商品的功能系统。对于开发团队来说,这也是个很好的方案,不同的系统由不同的团队负责,相互之间的影响降低到最小,加快了团队开发的进度。

       项目所使用到的技术:

      主要的框架:Spring,SpringMVC,Mybatis

      主要涉及到的网页技术及插件等:JSP,JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV

     缓存服务器的使用:Redis

      后台数据库:Mysql    ;    web服务器:nginx

      搜索功能:Solr;系统调用服务:HttpClient

    开发工具及开发环境:

      Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。

     Maven 3.3.3(开发工具自带)

     Tomcat 7.0.53(Maven Tomcat Plugin)

     JDK 1.8

     Mysql 5.6

     Nginx 1.8.0

     Redis 3.0.0

     Win10 操作系统

     SVN(版本管理)

     对于多个工程的项目我们采用maven,如果不适用的话,需要我们自己去处理jar包以及项目之间的关系。maven可以管理多个工程,其特点以及优势在于其能够很好的管理项目之间的依赖,以及不同的层级之间的依赖关系,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载,使用Eclipse插件可以很方便的方便在IDE窗口直观的管理项目以及jar包之间的依赖。对此本项目采用maven来管理项目。除此之外我们还可以自己下载所需要的仓库。

      一般的,每个公司都会有一个共同的数据仓库,不同的项目积累留下的,若我们在某个公司,我们的依赖一般的可以依赖于公司的公共的数据仓库。也就是说,我们需要一个统一的版本管理,以及最基本的依赖的管理,如果某些依赖没有,则在使用的时候再去添加。