Java多⽤户商城系统B2B2C源码
最近公司要搞商城,让我多⽅咨询,最后看了很多,要不就是代码、表字段注释不全,要不就是bug多,要么就是⽂档缺少,最后决定⾃⼰开发⼀套商城。
下⾯是开发的⼀些⼼得体会,权且记录下来,给⾃⼰做个记录把。
之前⼀直都是在从事电商相关和互联⽹⾦融开发,处理过亿级数据量,所以被⽬前这家公司看重。
由于是开源的,最近⼏年等开源产品越来越成熟,⽽且是基于的,所以最终选择最后后台开发语⾔,现在前端是⾃⼰的前端⼯程师写的JS,后期准备改成前端是,中间是语⾔,后台服务器是,因为写前端很厉害,不过这个也是后期了。
控制层:这⼏年springMVC发展的⾮常⽕,⽽且开发效率⽐较⾼,struts系列已经完全没落了,所以现阶段选择SrpingMVC。
视图层:⽹上已经有⾮常多的过JSP、freemarkder、velocity等,结果性能:velocity>freemarker>jsp,开发速度:
velocity>freemarker>jsp
设计:
1、关键的⼀个是绝对不能有外键强关联,我看到类似⽤产品的⼀些公司,全部都是强关联,那你以后想删除⼀些数据,那真是噩梦的,这个还不⽤说,查询性能⽅⾯影响也是巨⼤的。
2、分库分表,这个必须要⽀持的,做互联⽹数据量是⾮常的巨⼤的,如果开始就不能⽀持分库分表,那么后期会⾄少花上千万去做这事,最好⼀个例⼦就是当当⽹,当年很多事单库的,到现在也没有实现分库分表,它们只能使⽤⼀些分区表,分区表本⾝就存在很⼤问题,⽐如扩展性、数据量过亿都是问题
选择:
最好还是myslq,
1、轻量,
2、开源(阿⾥的alisql就是改个名字)
3、功能能满⾜电商需求
搜索:选择lucene较好,原因是他封装的较好。
权限:对于电商来说不应该设计的过于复杂,我认为主要就两张表就够了,⼀个是⾓⾊Role表,⼀个是资源Resources表,然后⽤户和⾓⾊通过中间表关联下就OK了,⾓⾊⾥⾯有资源,很简单的逻辑。
SpringSecurity和Apache Shiro都是基于RBAC的,但是两者的R是不⼀样的,Security是Role,Shiro是Resource,所以Security不能细粒度的控制权限,这⾥就不推荐⼤家使⽤了,建议有些公司使⽤这个做权限的换成Shiro或者⾃定义⼀套,也是⾮常简单的。其实互联⽹项⽬并不需要太多的权限校验,因为每个项⽬模块都是独⽴的,这个就减去⼀块权限校验,剩下来才是真正的⾓⾊权限逻辑。
缓存:⽬前使⽤,我看到有的公司使⽤的是memcache,这个10年前,就这屌样,功能⾮常的简陋不说,主要⼀个问题是会有死缓存,就是缓存怎么也清空不了,这个你想想就知道多悲剧了,商家修改了价格,怎么也改不了,最后只能关闭机器重启。还有的公司使⽤的还是提供的ehcache,这个⼤家⾃⾏了解即可,关键是他做集有问题,搞电商不可能是单机的,刚上线⾄少是2台服务器。
静态化:⼀般模版语⾔都可以实现静态化,可以实现全站60%都是静态页⾯,数据从集缓存中读取。
服务化:⽬前使⽤dubbo,虽然阿⾥开源的产品代码质量被⼈诟病,但是阿⾥的东西经受住⾼并发、⼤流量的考验,即时⽼外的东西再好,也没有这样的场景去考验,虽然权衡后选择dubbo。
图⽚服务器:这个也是⾮常重要的环节,⽬前我们系统都有15个G的图⽚了线上估计会是以T计算的,肯定是需要独⽴的图⽚服务器的。
集、负载、分布式:前⾯的分库分表、服务化、图⽚服务器都是为集、负载、分布式做准备的,集需要基于CDN做动态切换,服务器⽤Nginx做负载,业务层⽤dubbo做分布式服务。
下⾯整理下整个吧:
展⽰层/控制层:springMVC,在中做读写分离
持久层:本团队开发的mybatis增强版本(程序员⼏乎不需要写SQL、配置等)
:/,⽀持主从复制、读写分离、多机备份、⽀持分库分表
缓存机制:redis,CDN图⽚缓存,也是⽀持热备份、⾼并发
静态化机制:velocity/freemarker等模版语⾔
图⽚服务器:购买专⽤服务器,⽤nginx做负载
安全框架 Apache Shiro
搜索引擎: Lucene
服务器:
中间件:tomcat、nginx,还有其他N多的⽀持集部署的安装间接软件,就不⼀⼀列举了
十大开源商城系统
图⽚服务器:通过nginx做的,SFTP⽅式统⼀上传
集⽅案:多机tomcat,seesion统⼀管理,图⽚统⼀管理。这些需要⼀套解决⽅案。
服务器要求:linux/windows,8G内存,空间200G以上
最后对于JAVA领域商城的开发,其实在、.NET语⾔中,已经有⾮常多的成熟同类产品了,⽐如shopnc、ecshop等等等,但是的逻辑都是写在前台⽂件中,这个就跟JAVA中的逻辑都是写在了JSP中⼀样,这样虽然便于开发,但是安全性、扩展性⽅⾯都不⾏,后期⼆次开发、维护也不⽅便。另外.NET语⾔⼤家都是知道的,它是不开源的,这个我觉得不敢⽤的,哪天你遇到致命bug了,没法从底层排查,这也是为什么银⾏、⾦融、电商很多⾏业不⽤这个语⾔原因了。
还有外⾏的⼈被推荐使⽤apache ofbiz,这个框架就是个⼤杂烩,⼤家不过分神话它。
另外对于JAVA开发⽅⾯,其实如果有好的,JAVA程序员只写逻辑,前端只写前端,DBA只关注DBA,这样的话,开发起来会⾮常的⽅便。我们团队⽬前也是花了很长时间,也借鉴了很多成熟的框架,研发了⼀套适合商城开发的⼀套。等到以后有机会可以开源出来给⼤家。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。