最近公司要搞商城,让我多方咨询,最后看了很多,要不就是代码、表字段注释不全,要不就是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、分库分表,这个必须要支持的,做互联网数据量是非常的巨大的,如果开始就不能支持分库分表,那么后期会至少花上千万去做这事,最好一个例子就是当当网,当年很多事单库的,到现在也没有实现分库分表,它们只能使用一些分区表架构,分区表本身就存在很大问题,比如扩展性、数据量过亿都是问题!!!!

数据库选择:

最好还是myslq,

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,这样的话,开发起来会非常的方便。我们团队目前也是花了很长时间,也借鉴了很多成熟的框架,研发了一套适合商城开发的一套架构。等到以后有机会可以开源出来给大家。
想要源码的,可以评论留言,我会发过去。

java多用户商城b2b2c源码相关推荐

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

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

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

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

  3. JAVA b2b2c多用户商城系统源码-服务发现服务端EurekaServer微服务

    一.大致介绍 1.众所周知,在现在互联网开发中,访问地址的IP和端口号是动态的,一个服务停掉再重新启用后IP和端口就可能发生了改变,所以用硬编码是肯定不行了.于是我们尝试使用新的技术来解决这一难题.需 ...

  4. JooLun B2B2C多用户商城系统源码—多终端,无加密,不限域名,专业二开

    Uniapp是目前商城开发前端技术中的热门,Uniapp的大火让开发者和企业都很兴奋,对于uniapp开发的商城源码,优点非常明显,就是开发成本低,uniapp商城源码编写一套源代码就能打包成小程序. ...

  5. 多用户商城系统源码_业务逻辑功能思维导图_OctShop

    现在大部分人网购一般都会去如:淘宝,天猫,京东等大型电商平台,像这样的平台就是一个"多用户商城系统",即根据商品分类平台可以入驻各个行业的商家,商家可以开设自己的店铺,并通过商城平 ...

  6. 计算机毕业设计Java智能家电商城(系统+源码+mysql数据库+lw文档)

    计算机毕业设计Java智能家电商城(系统+源码+mysql数据库+lw文档) 计算机毕业设计Java智能家电商城(系统+源码+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  7. 计算机毕业设计Java会员商城管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java会员商城管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java会员商城管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  8. 计算机毕业设计Java电子商城系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java电子商城系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java电子商城系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  9. JAVA springboot ssm b2b2c多用户商城系统源码-SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

最新文章

  1. matlab用lism求零输入响应,信号与系统matlab课后作业_北京交通大学讲解.docx
  2. FJUT寒假第一周作业浮点数查寻题解
  3. givemesomecredit数据_你是如何走上数据分析之路的?
  4. 文档和词项之间的相关度计算汇总
  5. 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包
  6. Exalogic硬件架构
  7. php下载链接生成,php脚本生成google play url的下载链接,下载apk并自动反编译后
  8. 95-36-110-ChannelHandler-ChannelDuplexHandler
  9. ssh汉字乱码怎么办_LINUX SSH显示中文乱码,怎么解决?
  10. oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
  11. 【FIRST USE】第一次用git把代码上传到github
  12. 【心得】Web设计师应参考的技术
  13. linux防火墙查看状态firewall、iptable
  14. 《数学之美》读书笔记
  15. python基础知识补充
  16. context 简介
  17. linux下阅读MHT文件
  18. Qt设置背景图片方法
  19. 针对刀具磨损的日志读取的曲线分析(一维高斯滤波及波形拟合)
  20. 学习各位前辈开个blog

热门文章

  1. springcloud 熔断不生效_深入理解SpringCloud与微服务构建
  2. SVM与感知机的异同点
  3. Beyond Compare 出现“这个许可证密钥已被撤销”的解决办法(不会删除记录)
  4. nginx修改默认端口
  5. 深度残差收缩网络:(二)整体思路
  6. bootstrap菜单展开收起_基于bootstrap的后台左侧导航菜单和点击二级菜单刷新二级页面时候菜单展开显示当前菜单...
  7. 安装加密中间件 crypto - 命令篇
  8. 移动端1px像素实现技巧 - 讲解篇
  9. python发送邮件并返回提示_python-邮件提醒功能
  10. php 权限规范,项目人员权限验证