最近公司要搞商城,让我多方咨询,最后看了很多,要不就是代码、表字段注释不全,要不就是bug多,要么就是文档缺少,最后决定自己开发一套商城。
下面是开发的一些心得体会,权且记录下来,给自己做个记录把。
本人QQ:11166250,有问题可以咨询
之前一直都是在从事电商相关和互联网金融开发,处理过亿级数据量,所以被目前这家公司看重。
由于Java是开源的,最近几年Hadoop等开源产品越来越成熟,而且是基于Java的,所以最终选择Java最后后台开发语言,现在前端是自己的前端工程师写的JS,后期准备改成前端是PHP,中间是Go语言,后台服务器是Java,因为PHP写前端很厉害,不过这个也是后期了。
控制层:这几年springMVC发展的非常火,而且开发效率比较高,struts系列已经完全没落了,所以现阶段选择SrpingMVC。
视图层:网上已经有非常多的测试过JSP、freemarkder、velocity等,结果性能:velocity>freemarker>jsp,开发速度:velocity>freemarker>jsp
数据库设计:
1、关键的一个是绝对不能有外键强关联,我看到类似用hibernate产品的一些公司,全部都是强关联,那你以后想删除一些数据,那真是噩梦的,这个还不用说,查询性能方面影响也是巨大的。
2、分库分表,这个必须要支持的,做互联网数据量是非常的巨大的,如果开始就不能支持分库分表,那么后期会至少花上千万去做这事,最好一个例子就是当当网,当年很多事单库的,到现在也没有实现分库分表,它们只能使用一些分区表架构,分区表本身就存在很大问题,比如扩展性、数据量过亿都是问题!!!!
数据库选择:
最好还是MySQL,
1、轻量,
2、开源(阿里的alisql就是MySQL改个名字)
3、功能能满足电商需求
搜索:选择lucene较好,原因是他封装的较好,权限对于电商来说不应该设计的过于复杂,我认为主要就两张表就够了,一个是角色Role表,一个是资源Resources表,然后用户和角色通过中间表关联下就OK了,角色里面有资源,很简单的逻辑,security、shiro这两款的权限框架都能做出这个需求。
缓存:目前使用Redis,我看到有的公司使用的是memcache,这个10年前,就这屌样,功能非常的简陋不说,主要一个问题是会有死缓存,就是缓存怎么也清空不了,这个你想想就知道多悲剧了,商家修改了价格,怎么也改不了,最后只能关闭机器重启。还有的公司使用的还是hibernate提供的ehcache,这个大家自行了解即可,关键是他做集群有问题,搞电商不可能是单机的,刚上线至少是2台服务器。
还有一个最让人恶心的是,有些公司用mybatis+redis模式,但是实际上还是用的ehcache!!!!
静态化:一般模版语言都可以实现静态化,可以实现全站60%都是静态页面,数据从集群redis缓存中读取。
服务化:目前使用dubbo,虽然阿里开源的产品代码质量被人诟病,但是阿里的东西经受住高并发、大流量的考验,即时老外的东西再好,也没有这样的场景去考验,虽然权衡后选择dubbo。
图片服务器:这个也是非常重要的环节,目前我们测试系统都有15个G的图片了!!!!线上估计会是以T计算的,肯定是需要独立的图片服务器的。
集群、负载、分布式:前面的分库分表、服务化、图片服务器都是为集群、负载、分布式做准备的,集群需要基于CDN做动态切换,服务器用Nginx做负载,业务层用dubbo做分布式服务。
下面整理下整个架构吧:
展示层/控制层:springMVC,在spring中做读写分离
持久层:本团队开发的mybatis增强版本(程序员几乎不需要写SQL、配置等)
数据库:MySQL/Oracle,支持主从复制、读写分离、多机备份、支持分库分表
缓存机制:redis,CDN图片缓存,也是支持热备份、高并发
静态化机制:velocity/freemarker等模版语言
图片服务器:购买专用服务器,用nginx做负载
安全框架 springSecurity/shiro
搜索引擎: Lucene
服务器:Linux
中间件:tomcat、nginx,还有其他N多的支持集群部署的安装间接软件,就不一一列举了
图片服务器:通过nginx做的,SFTP方式统一上传
集群方案:多机tomcat,seesion统一管理,图片统一管理。这些需要一套解决方案。
服务器要求:linux/windows,8G内存,空间200G以上
最后对于Java领域商城的开发,其实在PHP、.NET语言中,已经有非常多的成熟同类产品了,比如shopnc、ecshop等等等,但是PHP的逻辑都是写在前台文件中,这个就跟Java中的逻辑都是写在了JSP中一样,这样虽然便于开发,但是后期二次开发、维护都不方便。另外.NET语言大家都是知道的,它是不开源的,这个我觉得不敢用的,哪天你遇到致命bug了,没法从底层排查,这也是为什么银行、金融、电商很多行业不用这个语言原因了。
另外对于JAVA开发方面,其实如果有好的架构,JAVA程序员只写逻辑,前端只写前端,数据库DBA只关注DBA,这样的话,开发起来会非常的方便。我们团队目前也是花了很长时间,也借鉴了很多成熟的框架,研发了一套适合商城开发的一套架构。等到以后有机会可以开源出来给大家。
【惠多o2o团购商城订餐外卖优惠券2017版】 演示网址如下:
惠多商城+优惠券: http://mall.shuidazhe.com/
团购+优惠券: http://o2o.shuidazhe.com/
外卖+优惠券: http://vps.shuidazhe.com/
电商集成版: http://ds.shuidazhe.com/
详细介绍,请点击:https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-79470062.31.pmAJvY&id=41114645122
本人QQ:11166250,有问题可以咨询
相关推荐
总的来说,《大型网站系统与Java中间件实践》是一本涵盖广泛、深度适中的技术参考书,适合Java开发人员、架构师以及对大型网站系统感兴趣的读者。通过阅读本书,读者不仅能掌握Java中间件的使用,还能对大型网站架构...
综上所述,基于Java的人事管理系统是现代企业管理的必要工具,它的设计和实现涉及到了计算机科学的多个领域,包括软件工程、数据库管理和网络通信等。通过不断的技术迭代和创新,人事管理系统将继续为企业带来更高的...
Java的发展历程中,从早期的Oak语言,经过Java 1.2、1.3、1.4,直到Java 5.0(也称为Java SE 5.0),再到现在的Java 11等版本,不断演进和完善。Java分为三个主要平台:Java SE(标准版),适用于桌面应用和服务器端...
这些书籍涵盖了Java的基础语法、面向对象编程概念、异常处理、集合框架、多线程、网络编程、I/O流、数据库连接(JDBC)、Swing图形用户界面开发、Java EE企业级开发等相关知识。通过深入学习这些内容,开发者能够...
1. Java技术基础:文件中多次提到Java,强调了Java在超市管理系统设计中的重要性。Java是一种广泛应用于企业级应用开发的编程语言,尤其是在服务器端,其跨平台特性使得Java编写的程序可以在支持Java虚拟机的任何...
- 大型企业级应用和服务端开发也大量使用Java。 - Android操作系统几乎所有的应用都是基于Java开发的。 #### 六、未来发展趋势 - **持续改进**: - Java不断推出新版本,引入新的特性和改进现有功能。 - 如模块...
随着 Java 技术的不断进步,JSP 也在不断地发展和完善之中,为开发者提供了更多新的工具和特性,使得 Web 应用的开发变得更加高效和便捷。对于想要从事 Web 开发的人员来说,学习和掌握 JSP 是一个非常有价值的选择...
Java能做的事情非常多,它可以做桌面应用的开发、企业互联网应用开发、移动应用开发、服务器系统开发、大数据开发、游戏开发等等。 Java技术体系 Java技术体系是指Java为了满足不同的应用场景提供了不同的技术...
这个系统的开发主要基于JAVA语言,展示了JAVA在构建大型应用系统中的强大能力。 一、JAVA语言基础 JAVA是一种面向对象的、跨平台的编程语言,以其“一次编写,到处运行”的特性而闻名。它的语法严谨,具有丰富的...
这些特性使得Java成为了构建大型分布式系统的理想选择。 9. **重要应用领域**: - Web开发:通过Java EE(现称为Jakarta EE)提供了一系列标准和技术,支持创建复杂的企业级Web应用程序。 - Android应用开发:...
【标题】:“美团技术干货-后台篇_java_美团_后台_”揭示了这是一份关于美团后台技术的深度分享文档,主要聚焦于Java语言在美团后台系统中的应用和实践。 【描述】:“美团技术干货,主要是后台的一些架构设计,...
编程语言的丰富多样,如C、Java、Python等,为软件开发提供了强大工具;而Web服务的兴起,如HTTP、HTTPS协议,推动了互联网应用的繁荣。 总之,计算机系统的发展历程是一部技术创新的历史,从硬件性能的提升、存储...
2. **Java EE (Java Platform, Enterprise Edition)**:企业版,专为大型企业级应用设计,包括Web服务、事务处理、安全控制等功能,支持多层架构的应用开发,能够满足复杂的企业需求。 3. **Java ME (Java Platform ...
* 易维护性:Java语言具有灵活的编程模型,易于开发和维护大型项目。 然而,Java语言也存在一些局限性,如运行时性能的瓶颈、内存管理的复杂性和语言本身的限制等。 二、静态工厂方法 静态工厂方法是一种创建对象...
手机游戏的发展历程反映了科技的进步,从早期的简单游戏如贪吃蛇到现在的高清大型游戏,手机游戏市场呈现出爆炸式增长。手机的多功能化使人们对其依赖度增强,尤其是在快节奏的现代生活中,移动游戏成为填充碎片时间...
同时,**Java SE** 也经历了多次版本更新,提供了更多的特性和改进,如模块化系统(Project Jigsaw)等。 ### 总结 通过对比Java 2 平台的三个版本——J2ME、J2SE 和 J2EE,我们可以清楚地看到每个版本的目标市场...
Java的发展历程中,多个重要事件标志着语言及开发环境的演变,包括JDK的推出、企业版J2EE的发布、J2SE和J2ME版本的出现,以及Java SE 5.0的重大更新。 Java不仅仅是一种编程语言,它还构成了一个软件开发、运行以及...
这个系统可能涵盖了课程管理、学生管理、教师管理、在线学习、考试评估等多个功能模块,旨在为用户提供一个全方位的在线学习环境。源码分析是深入理解系统架构、设计模式和技术选型的重要途径,对于开发者来说,这是...