分享大型Java多用户商城系统开发历程

近公司要搞商城,让我多方咨询,最后看了不少,要不就是代码、表字段注释不全,要不就是bug多,要么就是文档缺乏,最后决定本身开发一套商城。php

下面是开发的一些心得体会,权且记录下来,给本身作个记录把。前端

 

本人QQ:4407509,有问题能够联系本人java

以前一直都是在从事电商相关和互联网金融开发,处理过亿级数据量,因此被目前这家公司看重。mysql

因为Java是开源的,最近几年Hadoop等开源产品愈来愈成熟,并且是基于Java的,因此最终选择Java最后后台开发语言,如今前端是本身的前端工程师写的JS,后期准备改为前端是PHP,中间是Go语言,后台服务器是JAVA,由于PHP写前端很厉害,不过这个也是后期了。linux

 

 

控制层:这几年springMVC发展的很是火,并且开发效率比较高,struts系列已经彻底没落了,因此现阶段选择SrpingMVC。nginx

 

视图层:网上已经有很是多的测试过JSP、freemarkder、velocity等,结果性能:velocity>freemarker>jsp,开发速度:velocity>freemarker>jsp程序员

 

 

数据库设计:redis

    一、关键的一个是绝对不能有外键强关联我看到相似用hibernate产品的一些公司,所有都是强关联,那你之后想删除一些数据,那真是噩梦的,这个还不用说,查询性能方面影响也是巨大的。spring

   二、分库分表,这个必需要支持的,作互联网数据量是很是的巨大的,若是开始就不能支持分库分表,那么后期会至少花上千万去作这事,最好一个例子就是当当网,当年不少事单库的,到如今也没有实现分库分表,它们只能使用一些分区表架构,分区表自己就存在很大问题,好比扩展性、数据量过亿都是问题!!!!sql

 

数据库选择:最好仍是myslq,一、轻量,二、开源(阿里的alisql就是MySQL改个名字),三、功能能知足电商需求

 

搜索:选择lucene较好,缘由是他封装的较好,权限对于电商来讲不该该设计的过于复杂,我认为主要就两张表就够了,一个是角色Role表,一个是资源Resources表,而后用户和角色经过中间表关联下就OK了,角色里面有资源,很简单的逻辑,security、shiro这两款的权限框架都能作出这个需求。

 

缓存:目前使用Redis,我看到有的公司使用的是memcache,这个10年前,就这样,功能很是的简陋不说,主要一个问题是会有死缓存,就是缓存怎么也清空不了,这个你想一想就知道多悲剧了,商家修改了价格,怎么也改不了,最后只能关闭机器重启。还有的公司使用的仍是hibernate提供的ehcache,这个你们自行了解便可,关键是他作集群有问题,搞电商不多是单机的,刚上线至少是2台服务器。

 

静态化:目前使用velocity的静态化,能够实现全站60%都是静态页面,数据从集群redis缓存中读取。

 

服务化:目前使用dubbo,阿里的东西仍是经受住很大考验的,即时老外的东西再好,也没有这样的场景去考验,因此都仍是理论阶段,这个让国人蛮自豪的!

 

 

图片服务器:这个也是很是重要的环节,目前咱们测试系统都有5个G的图片了!!!!线上估计会是以T计算的,以为是须要独立的图片服务器的。

 

集群、负载、分布式:前面的分库分表、服务化、图片服务器都是为集群、负载、分布式作准备的,集群须要基于CDN作动态切换,服务器用Nginx作复杂,业务层用dubbo作分布式服务。

 

下面整理下整个架构吧:

    展现层/控制层:springMVC,在spring中作读写分离

    持久层:mybatis

    数据库MySQL/Oracle,支持主从复制、读写分离、多机备份、支持分库分表

    缓存机制:redis,CDN图片缓存,也是支持热备份、高并发的

    静态化机制:velocity

    图片服务器:购买占用服务器,用nginx作负载

    

    安全框架 springSecurity 
    搜索引擎: Lucene 
    中文分词:IKAnalyzer 

    服务器:Linux

    中间件:tomcat、nginx,还有其余N多的支持集群部署的安装间接软件,就不一一列举了

    图片服务器:经过nginx作的,SFTP方式统一上传

    集群方案:多机tomcat,seesion统一管理,图片统一管理。这些须要一套解决方案。

    服务器要求:linux/windows,4G内存,空间20G以上

    

   最后对于JAVA领域商城的开发,其实在PHP、.NET语言中,已经有很是多的成熟同类产品了,好比shopnc、ecshop等等等,可是PHP的逻辑都是写在前台文件中,这个就跟JAVA中的逻辑都是写在了JSP中同样,这样虽然便于开发,可是后期二次开发、维护都不方便。另外.NET语言你们都是知道的,它是不开源的,这个我以为不敢用的,哪天你遇到致命bug了,无法从底层排查,这也是为何银行、金融、电商不少行业不用这个语言缘由了。

  

  另外对于JAVA开发方面,其实若是有好的架构,JAVA程序员只写逻辑,前端只写前端,数据库DBA只关注DBA,这样的话,开发起来会很是的方便。咱们团队目前也是花了很长时间,也借鉴了不少成熟的框架,研发了一套适合商城开发的一套架构。等到之后有机会能够开源出来给你们。

 

网址:www.redpigmall.net,本人QQ:4407509,有问题能够联系本人

相关文章
相关标签/搜索