系列文章主要是针对Java商城相关架构演化的介绍,不讲解具体业务、技术等。

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

下面是开发的一些心得体会,权且记录下来,给自己做个记录把。

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

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

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

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

数据库设计:

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

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

 

  3、分布式图片服务器:我看到有些公司图片还是上传到项目根目录的,这个真是噩梦,测试图片就有15个G,你怎么玩???

数据库选择:

最好还是myslq,

   1、轻量

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

   3、功能能满足电商需求

搜索:选择lucene较好,原因是他封装的较好。

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

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

注:这里不推荐使用是因为我主要就是角色控制,其实这些权限框架主要是授权,如果你项目没有授权需要,那不如不用,用了反而增加开发成本。

缓存:

1、数据缓存

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

2、图片、文件等缓存

   访问图片下载、页面下载也是非常耗费带宽的,那么怎么解决?

   图片、文件(css、js、html静态页面)都需要做CDN缓存来解决,类似京东、淘宝都是通过替换文件的方式,比如你第一次访问了,这个文件在你们本机电脑设置的时间是永久保存方式,不过期的,那么要替换css、js怎么玩?换一个文件名呀,看着恶心不?但是访问速度确实非常快的。。。

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

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

分布式图片服务器:这个也是非常重要的环节,目前我们测试系统都有15个G的图片了!!!!线上估计会是以T计算的,肯定是需要独立的图片服务器的。目前推荐使用FastDFS,这个还不错——图片、压缩包之类的文件都可以上传。

集群、分布式:前面的分库分表、服务化、图片服务器都是为集群、负载、分布式做准备的,业务层用dubbo做分布式服务。

负载均衡:使用Nginx来做高可用负载,给予CDN切换方式做高可用,一般公司市值30亿美金的都能满足。在以后的话就用F5吧。。。。。收费的嘛,你懂得。。。

下面整理下整个架构吧:

    展示层/控制层:springMVC

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

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

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

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

    分布式图片服务器:FastDFS

   

    搜索引擎: Lucene 
    

    服务器:Linux

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

    图片服务器:通过分布式文件系统FastDFS

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

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

    

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

 

  还有外行的人被推荐使用apache ofbiz,这个框架就是个大杂烩,大家不过分神话它。

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

有需要java多用户商城系统的可以联系我们:www.hulianrongyun.com

我们架构:ssmm(spring springmvc mybatis maven) redis mysql nginx集群

转载于:https://my.oschina.net/u/3755633/blog/1592303

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

  1. JAVA 多用户商城系统b2b2c-Spring Cloud常见问题与总结(一)

    在使用Spring Cloud的过程中,难免会遇到一些问题.所以对Spring Cloud的常用问题做一些总结.需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台 ...

  2. JAVA 多用户商城系统b2b2c-服务容错保护(Hystrix依赖隔离)

    依赖隔离 "舱壁模式"对于熟悉Docker的读者一定不陌生,Docker通过"舱壁模式"实现进程的隔离,使得容器与容器之间不会互相影响.而Hystrix则使用该 ...

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

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

  4. JAVA 多用户商城系统b2b2c-kafka处理超大消息

    Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好.但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息差不多有10-100M,这种情况下,Kakfa应该如 ...

  5. JAVA 多用户商城系统b2b2c---配置中心和消息总线

    Spring Cloud Bus 电子商务平台源码请加企鹅求求:一零三八七七四六二六. Spring cloud bus通过轻量消息代理连接各个分布的节点.这会用在广播状态的变化(例如配置变化)或者其 ...

  6. JAVA 多用户商城系统b2b2c-Spring Cloud Stream 介绍

    介绍Spring Cloud Stream 电子商务平台源码请加企鹅求求:一零三八七七四六二六. Spring Cloud Stream是构建消息驱动的微服务应用程序的框架.Spring Cloud ...

  7. 搭搭云-超级应用平台 与JNPF Java多用户商城系统源码

    搭搭云 搭搭云是非常灵活的一站式企业管理超级平台,企业在一个云端账户中即可使用包含CRM.OA.进销存.HR.财务.项目管理.ERP在内的全系列SaaS软件:应用软件开发者可以基于搭搭云低代码PaaS ...

  8. 搭搭云-超级应用平台 与JNPF Java多用户商城系统源码 最新版3.4.7源码折扣

    搭搭云 搭搭云是非常灵活的一站式企业管理超级平台,企业在一个云端账户中即可使用包含CRM.OA.进销存.HR.财务.项目管理.ERP在内的全系列SaaS软件:应用软件开发者可以基于搭搭云低代码PaaS ...

  9. 大型Java多用户商城系统设计开发的心得和困难

    2019独角兽企业重金招聘Python工程师标准>>> 看到别的朋友在ITEYE上发表的"开发电子商务网站技术选型"有感而发.地址是 [url]http://ww ...

最新文章

  1. sliva数据库简介--转载
  2. Python中函数为什么可以当做参数使用?
  3. 【Python学习系列二十七】pearson相关系数计算
  4. 如何自动修复XP/VISTA/WIN7系统引导的工具(NTBootAutofix 2.02)
  5. 【项目合作】海隆石油工业集团诚邀巡检识别工程合作伙伴
  6. 对任意长度字符串,删除其中的任意的N(N=0)个字符
  7. LA 4123 (计数 递推) Glenbow Museum
  8. 查看当前环境下内核导出了哪些符号
  9. 禅道备份功能_禅道数据库备份
  10. C++读写txt文件
  11. 陶哲轩实分析 4.1 节习题试解
  12. tkinter学习04
  13. 信息与计算机科学学校排名,2021中国信息与计算科学专业大学排名 最好的高校排行榜...
  14. C语言的整型常量与实型常量
  15. mysql 左连接都是null_sql左连接有疑问,为什么查出来都是null,而不是没有数据?...
  16. 星罗棋布:关于VPS测试脚本集锦内容
  17. 我的世界服务器的启动器在哪个文件夹,原神启动器在哪 启动器位置文件介绍...
  18. 《缠中说禅108课》1:不会赢钱的经济人,只是废人
  19. 公交IC卡刷卡数据分析
  20. 亚洲众包网站悄然崛起:中国成最大“雇主”

热门文章

  1. Windows系统各个版本的ISO镜像下载地址
  2. Boring Old Menu Bar for Mac(菜单栏美化工具)
  3. java反射的作用于原理、初学者
  4. 关于微信小程序Tomcat服务器后端程序搭建
  5. FFMPEG之H.264视频解码
  6. Error occured processing XML 'Cannot find class [springmvc.extention.BeanArgumentResolver]'.
  7. 如何在服务器中搭建网站
  8. 如何在kubernetes中使用共享GPU资源
  9. Sun Java认证考试介绍
  10. DirectShow实现视频的实时显示并抓图,可以设置视频参数