本人之前一直都是在从事电商相关和互联网金融开发,处理过亿级数据量,所以被目前这家公司注重

由于Java是开源的,最近几年Hadoop等开源产品越来越成熟,而且是基于Java的,所以最终挑选Java末了后台开发语言,现在前端是自己的前端工程师写的JS,后期预备改成成前端是PHP,中间是Go语言,后台服务器是Java,因为PHP写前端很厉害,不过这个也是后期了

控制层:这几年springMVC发展的非常火,而且开发效率比较高,struts系列已经完全败落了,所以现阶段挑选SrpingMVC

视图层:网上已经有非常大都的测试过JSP、freemarkder、velocity等,结果性能:velocity>freemarker>jsp,开发速度:velocity>freemarker>jsp

数据库设计:

1、要害的一个是绝对不能有外键强关联,我看到近似用hibernate产品的一些公司,全体都是强关联,那你以后惦念删除一些数据,那真是恶梦的,这个还不用说,查询性能方面影响也是宏大的

2、分库划分表,这个必须如果支撑的,做互联网数据量是非常的宏大的,如果开端就不能支撑分库划分表,那么后期会面至少花消上千万去做这事,最好一个例子就是当当网,当年良多事单库的,到现在也没有实现分库分表,它们只能运用一些分区表架构,分区表本身就存在很大题目,比如扩展性、数据量过亿都是题目!

数据库选择:

最好还是mysql:

1、轻量

2、开源(阿里的alisql就是MySQL改成个名字)

3、功用能满足电商需求

搜索:挑选lucene较好,缘由是他封装的较好

权限:对于电商来说不应当设计的过于复杂,我以为首要就两张表就够了,一个是角色Role表,一个是资源Resources表,然后用户和角色通过中间表关联下就OK了,角色里面有资源,很简单的逻辑

SpringSecurity和Apache Shiro都是基于RBAC的,但是两者的R是不一样的,Security是Role,Shiro是Resource,所以Security不能细粒度的控制权限,这里就不引荐大家运用了,提议有些公司运用这个做权限的换成Shiro或者自定义一套,也是非常简略的其实互联网项目并不需要太多的权限校验,因为每个项目模块都是独立的,这个就减去一块权限校验,剩下来才是真正的角色权限逻辑

缓存:目前应用Redis,我看到有的公司应用的是memcache,这个10年前,就这屌样,功效非常的简陋不说,首要一个题目是会面有死去活来缓存,就是缓存怎么也清空不了,这个你想想就晓得大都悲剧了,商家修改了价钱,怎么也改不了,末了只能关闭机器重启还有的公司利用的还是hibernate提供的ehcache,这个大家自行了解即可,要害是他做集群有问题,弄电商不可能是单机的,刚上线至少是2台服务器

静态化:一般模版语言都可以实现静态化,可以实现全站60%都是静态页面,数据从集群Redis缓存中读取。

服务化:目前运用dubbo,虽然阿里开源的产品代码质量被人诟病,但是阿里的东西经受住高并发、大流量的考验,即时老外的东西再好,也没有这样的场景去考验,虽然衡量后取舍dubbo

图片服务器:这个也是非常主要的环节,目前我们测试体系都有15个G的图片了!!!!线上估量见面是以T盘算的,肯定是需要独立的图片服务器的

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

下面整理下全部架构吧:

展示层/控制层:springMVC,在spring中做读写分离

持久层:本团队开发的mybatis加强版本(程序员几乎不需要写SQL、配置等)

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

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

静态化机制:velocity/freemarker等模版语言

图片服务器:购置专用服务器,用nginx做负载

安全框架 Apache Shiro
搜索引擎: Lucene

服务器:Linux

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

图片服务器:通过nginx做的,SFTP方法统一上传

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

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

末了对于JAVA领域商城的开发,其实在PHP、.NET语言中,已经有非常大都的成熟同类产品了,比如shopnc、ecshop、神仙宝商城等等等,但是PHP的逻辑都是写在前台文件中,这个就跟JAVA中的逻辑都是写在了JSP中一样,这样虽然便于开发,但是安全性、扩展性方面都不行,后期二次开发、维护也不便利另外.NET语言大家都是晓得的,它是不开源的,这个我认为不敢用的,哪天你碰到致命bug了,没法从底层排查,这也是为什么银行、金融、电商许多行业不用这个语言缘由了

还有外行的人被推举运用apache ofbiz,这个框架就是个大杂烩,大家不过火神话它

另外对于JAVA开发方面,其实如果有好的架构,JAVA程序员只写逻辑,前端只写前端,数据库DBA只关注DBA,这样的话,开发起来见面非常的便利我们团队目前也是花消了很长时间,也借鉴了许多成熟的框架,研发了一套适合商城开发的一套架构。

立即

咨询

400电话

电话咨询

400-1875-778

微信咨询

李经理

微信扫一扫加好友

下载源码

返回顶部