java多用户商城系统架构之第一篇——总的介绍

简介: java多用户商城系统架构之第一篇——总的介绍
+关注继续查看

最近公司要开发商城,让我多方咨询,最后看了很多,要不就是代码、表字段注释不全,要不就是bug多,要么就是文档缺少,最后决定自己开发一套商城。
下面是开发的一些心得体会,权且记录下来,给自己做个记录把。

之前一直都是在从事电商相关和互联网金融开发,处理过亿级数据量,所以被目前这家公司看重。
由于Java是开源的,最近几年Hadoop等开源产品越来越成熟,而且是基于Java的,所以最终选择Java最后后台开发语言,现在前端是自己的前端工程师写的JS,后期准备改成前端是PHP,中间是Go语言,后台服务器是JAVA,因为PHP写前端很厉害,不过这个也是后期了。

控制层:这几年SpringBoot发展的非常火,而且开发效率比较高,SpringMVC系列已经完全没落了,所以现阶段选择SpringBoot。

视图层:这个我个人认为哪一个都差不多,jsp、freemarker也好,最终都是生成的html。

数据库设计:
    1、关键的一个是绝对不能有外键强关联,我看到类似用hibernate、SpringData产品的一些公司,全部都是强关联,那你以后想删除一些数据,那真是噩梦的,这个还不用说,查询性能方面影响也是巨大的。
   2、分库分表。这个必须要支持的,做互联网数据量是非常的巨大的,如果开始就不能支持分库分表,那么后期会至少花上千万去做这事,最好一个例子就是当当网,当年很多事单库的,到现在也没有实现分库分表,它们只能使用一些分区表架构,分区表本身就存在很大问题,比如扩展性、数据量过亿都是问题!!!!
3、处理秒杀,作为互联网项目,秒杀那也是必须要能支持才可以的。

数据库选择:最好还是myslq,1、轻量,2、开源(阿里的alisql就是MySQL改个名字),3、功能能满足电商需求

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

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

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

服务化:目前使用SpringCloud,虽然阿里的dubbo确实做得非常好,但是目前市场来看SpringCloud有取代的趋势,另外SpringCloud提供了更多的服务治理方案。

图片服务器:这个也是非常重要的环节,目前我们测试系统都有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以上
    

   最后对于JAVA领域商城的开发,其实在PHP、.NET语言中,已经有非常多的成熟同类产品了,比如shopnc、ecshop等等等,但是PHP的逻辑都是写在前台文件中,这个就跟JAVA中的逻辑都是写在了JSP中一样,这样虽然便于开发,但是后期二次开发、维护都不方便。另外.NET语言大家都是知道的,它是不开源的,这个我觉得不敢用的,哪天你遇到致命bug了,没法从底层排查,这也是为什么银行、金融、电商很多行业不用这个语言原因了。
  
  另外对于JAVA开发方面,其实如果有好的架构,JAVA程序员只写逻辑,前端只写前端,数据库DBA只关注DBA,这样的话,开发起来会非常的方便。我们团队目前也是花了很长时间,也借鉴了很多成熟的框架,研发了一套适合商城开发的一套架构。等到以后有机会可以开源出来给大家。

相关文章
|
7天前
|
小程序 前端开发 Java
GitHub私活利器【开源版】前后端分离的Java 商城系统(已上线)
Smart Shop 是一款基于 Spring Cloud +MybatisPlus+XXL-JOB+redis+Vue 的前后端分离、分布式、微服务架构的 Java 商城系统
|
1月前
|
XML JSON 缓存
Java实现根据商品ID请求西域商城商品详情数据方法
Java实现根据商品ID请求西域商城商品详情数据方法
28 0
|
2月前
|
SQL 前端开发 JavaScript
基于java+springboot的商城网站、电子商城管理系统
该系统是基于java+springboot+vue开发的在线商城网站。是给师弟开发的课程作业。学习过程中,遇到问题可以咨询作者。
46 0
|
3月前
|
XML 前端开发 Java
【Java Web编程 十二】深入理解Tomcat系统架构及工作原理(下)
【Java Web编程 十二】深入理解Tomcat系统架构及工作原理(下)
52 0
|
3月前
|
XML 监控 前端开发
【Java Web编程 十二】深入理解Tomcat系统架构及工作原理(上)
【Java Web编程 十二】深入理解Tomcat系统架构及工作原理(上)
49 0
|
4月前
|
SQL 供应链 安全
Java实例实验项目大全源码企业通讯打印系统计划酒店图书学生管理进销存商城门户网站五子棋
Java实例实验项目大全源码企业通讯打印系统计划酒店图书学生管理进销存商城门户网站五子棋
105 0
|
存储 安全 Java
基于Java+Spring+vue+element实现唯美鲜花商城购物系统
随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,鲜花销售管理系统当然也不能排除在外。鲜花销售管理系统是以实际运用为开发背景,运用软件工程开发方法,采用SSM技术构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统总体结构设计、系统数据结构设计、系统功能设计和系统安全设计等;详细设计主要包括模块实现的关键代码,系统数据库访问和主要功能模块的具体实现等。最后对系统进行功能测试,并对测试结果进行分析总结,及时改进系统中存在的不足,为以后的系统维护提供了方便,也
IDEA+Java+SSM+Mysql+JSP实现Web宠物商城系统(下)
IDEA+Java+SSM+Mysql+JSP实现Web宠物商城系统
101 0
|
Java 关系型数据库 MySQL
IDEA+Java+SSM+Mysql+JSP实现Web宠物商城系统(上)
IDEA+Java+SSM+Mysql+JSP实现Web宠物商城系统
87 0
IDEA+Java+SSM+Mysql+JSP实现Web宠物商城系统(上)
|
前端开发 Java 应用服务中间件
Java课设:JavaWeb实现网上图书商城系统
本项目主要实现了基于JavaWeb开发而成的一套以图书为主打商品的网上书店商城系统。系统功能完整,页面简洁大方,适合做毕业设计或课程设计使用。
462 0
Java课设:JavaWeb实现网上图书商城系统
相关产品
云迁移中心
推荐文章
更多