网址:www.hulianrongyun.com,本人QQ:4407509,有问题能够联系本人 最近公司要开发商城,让我多方咨询,最后看了不少,要不就是代码、表字段注释不全,要不就是bug多,要么就是文档缺乏,最后决定本身开发一套商城。 下面是开发的一些心得体会,权且记录下来,给本身作个记录把。html
本人QQ:4407509,有问题能够联系本人 以前一直都是在从事电商相关和互联网金融开发,处理过亿级数据量,因此被目前这家公司看重。 因为Java是开源的,最近几年Hadoop等开源产品愈来愈成熟,并且是基于Java的,因此最终选择Java最后后台开发语言,如今前端是本身的前端工程师写的JS,后期准备改为前端是PHP,中间是Go语言,后台服务器是JAVA,由于PHP写前端很厉害,不过这个也是后期了。前端
控制层:这几年SpringBoot发展的很是火,并且开发效率比较高,SpringMVC系列已经彻底没落了,因此现阶段选择SpringBoot。linux
视图层:这个我我的认为哪个都差很少,jsp、freemarker也好,最终都是生成的html。nginx
数据库设计: 一、关键的一个是绝对不能有外键强关联,我看到相似用hibernate、SpringData产品的一些公司,所有都是强关联,那你之后想删除一些数据,那真是噩梦的,这个还不用说,查询性能方面影响也是巨大的。 二、分库分表。这个必需要支持的,作互联网数据量是很是的巨大的,若是开始就不能支持分库分表,那么后期会至少花上千万去作这事,最好一个例子就是当当网,当年不少事单库的,到如今也没有实现分库分表,它们只能使用一些分区表架构,分区表自己就存在很大问题,好比扩展性、数据量过亿都是问题!!!!程序员
数据库选择:最好仍是myslq,一、轻量,二、开源(阿里的alisql就是MySQL改个名字),三、功能能知足电商需求redis
搜索:选择ElasticSearch较好,缘由是他封装的较好 权限对于电商来讲不该该设计的过于复杂,我认为主要就两张表就够了,一个是角色Role表,一个是资源Resources表,而后用户和角色经过中间表关联下就OK了,角色里面有资源,很简单的逻辑,security、shiro这两款的权限框架都能作出这个需求。spring
缓存:目前使用Redis,我看到有的公司使用的是memcache,这个10年前,就这样,功能很是的简陋不说,主要一个问题是会有死缓存,就是缓存怎么也清空不了,这个你想一想就知道多悲剧了,商家修改了价格,怎么也改不了,最后只能关闭机器重启。还有的公司使用的仍是hibernate提供的ehcache,这个你们自行了解便可,关键是他作集群有问题,搞电商不多是单机的,刚上线至少是2台服务器。sql
静态化:目前使用前端静态化,能够实现全站60%都是静态页面,数据从集群redis缓存中读取。数据库
服务化:目前使用SpringCloud,虽然阿里的dubbo确实作得很是好,可是目前市场来看SpringCloud有取代的趋势,另外SpringCloud提供了更多的服务治理方案。windows
图片服务器:这个也是很是重要的环节,目前咱们测试系统都有15个G的图片了!!!!线上估计会是以T计算的,以为是须要独立的图片服务器的。
集群、负载、分布式:前面的分库分表、服务化、图片服务器都是为集群、负载、分布式作准备的,集群须要基于CDN作动态切换,服务器用Nginx作复杂,业务层用SpringCloud作分布式服务。
下面整理下整个架构吧: 展现层/控制层:SpringBoot,在spring中作读写分离 持久层:mybatis 数据库:MySQL/Oracle,支持主从复制、读写分离、多机备份、支持分库分表 缓存机制:redis,CDN图片缓存,也是支持热备份、高并发的 静态化机制:系统页面作静态化,提升访问速度 图片服务器:购买专用服务器,用nginx作负载 搜索引擎: 分布式ElasticSearch 服务器:Linux 中间件:tomcat、nginx,还有其余N多的支持集群部署的安装间接软件,就不一一列举了 图片服务器:经过nginx作的,SFTP方式统一上传 集群方案:多机tomcat,seesion统一管理,图片统一管理。这些须要一套解决方案。 服务器要求:linux/windows,4G内存,空间20G以上 架构图:
网址:www.hulianrongyun.com,本人QQ:4407509,有问题能够联系本人