`
sucos
  • 浏览: 4531 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

最近公司要搞商城,让我多方咨询,最后看了很多,要不就是代码、表字段注释不全,要不就是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,有问题可以咨询

 



 

 

成功案例

 

HuLianShop系统包括:B2B2C商城PC+微信端+APP(Android/iOS)、云购商城、CMS、CRM、HR、ERP、OA、P2P等一系列产品

http://www.paijifen.cn/mall/index

http://www.loho88.com

https://www.tuhu.cn/

http://www.51haocai.cn/

http://www.3158.com/

http://www.colipu.com

以上代码请联系QQ索取

分享到:
评论

相关推荐

    大型网站系统与Java中间件实践(手动制作的目录)

    总的来说,《大型网站系统与Java中间件实践》是一本涵盖广泛、深度适中的技术参考书,适合Java开发人员、架构师以及对大型网站系统感兴趣的读者。通过阅读本书,读者不仅能掌握Java中间件的使用,还能对大型网站架构...

    精品专题资料(2021-2022年收藏)基于Java的人事管理系统文献综述.doc

    综上所述,基于Java的人事管理系统是现代企业管理的必要工具,它的设计和实现涉及到了计算机科学的多个领域,包括软件工程、数据库管理和网络通信等。通过不断的技术迭代和创新,人事管理系统将继续为企业带来更高的...

    java基础 Java开发入门到精通PPT课件 共353页.ppt

    Java的发展历程中,从早期的Oak语言,经过Java 1.2、1.3、1.4,直到Java 5.0(也称为Java SE 5.0),再到现在的Java 11等版本,不断演进和完善。Java分为三个主要平台:Java SE(标准版),适用于桌面应用和服务器端...

    Java运行环境和开发工具.ppt

    这些书籍涵盖了Java的基础语法、面向对象编程概念、异常处理、集合框架、多线程、网络编程、I/O流、数据库连接(JDBC)、Swing图形用户界面开发、Java EE企业级开发等相关知识。通过深入学习这些内容,开发者能够...

    基于Java的超市管理系统的设计与实现.pdf

    1. Java技术基础:文件中多次提到Java,强调了Java在超市管理系统设计中的重要性。Java是一种广泛应用于企业级应用开发的编程语言,尤其是在服务器端,其跨平台特性使得Java编写的程序可以在支持Java虚拟机的任何...

    Java语言基础入门教程 Java开发编程基础课程 第1、2、3章 Java简介 共15页.pptx

    - 大型企业级应用和服务端开发也大量使用Java。 - Android操作系统几乎所有的应用都是基于Java开发的。 #### 六、未来发展趋势 - **持续改进**: - Java不断推出新版本,引入新的特性和改进现有功能。 - 如模块...

    JAVA毕业设计外文翻译 中文+英文(JSP技术发展史)

    随着 Java 技术的不断进步,JSP 也在不断地发展和完善之中,为开发者提供了更多新的工具和特性,使得 Web 应用的开发变得更加高效和便捷。对于想要从事 Web 开发的人员来说,学习和掌握 JSP 是一个非常有价值的选择...

    Java基础.pdf

    Java能做的事情非常多,它可以做桌面应用的开发、企业互联网应用开发、移动应用开发、服务器系统开发、大数据开发、游戏开发等等。 Java技术体系 Java技术体系是指Java为了满足不同的应用场景提供了不同的技术...

    JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告).zip

    这个系统的开发主要基于JAVA语言,展示了JAVA在构建大型应用系统中的强大能力。 一、JAVA语言基础 JAVA是一种面向对象的、跨平台的编程语言,以其“一次编写,到处运行”的特性而闻名。它的语法严谨,具有丰富的...

    Java的起源到发展

    这些特性使得Java成为了构建大型分布式系统的理想选择。 9. **重要应用领域**: - Web开发:通过Java EE(现称为Jakarta EE)提供了一系列标准和技术,支持创建复杂的企业级Web应用程序。 - Android应用开发:...

    美团技术干货-后台篇_java_美团_后台_

    【标题】:“美团技术干货-后台篇_java_美团_后台_”揭示了这是一份关于美团后台技术的深度分享文档,主要聚焦于Java语言在美团后台系统中的应用和实践。 【描述】:“美团技术干货,主要是后台的一些架构设计,...

    计算机系统发展历程.pptx

    编程语言的丰富多样,如C、Java、Python等,为软件开发提供了强大工具;而Web服务的兴起,如HTTP、HTTPS协议,推动了互联网应用的繁荣。 总之,计算机系统的发展历程是一部技术创新的历史,从硬件性能的提升、存储...

    java介绍及平台介绍

    2. **Java EE (Java Platform, Enterprise Edition)**:企业版,专为大型企业级应用设计,包括Web服务、事务处理、安全控制等功能,支持多层架构的应用开发,能够满足复杂的企业需求。 3. **Java ME (Java Platform ...

    Effective Java读书笔记.pdf

    * 易维护性:Java语言具有灵活的编程模型,易于开发和维护大型项目。 然而,Java语言也存在一些局限性,如运行时性能的瓶颈、内存管理的复杂性和语言本身的限制等。 二、静态工厂方法 静态工厂方法是一种创建对象...

    基于java的手机游戏系统的设计与实现-开题报告书-毕业论文.doc

    手机游戏的发展历程反映了科技的进步,从早期的简单游戏如贪吃蛇到现在的高清大型游戏,手机游戏市场呈现出爆炸式增长。手机的多功能化使人们对其依赖度增强,尤其是在快节奏的现代生活中,移动游戏成为填充碎片时间...

    什么是J2EE、Java SE、Java EE、Java ME

    同时,**Java SE** 也经历了多次版本更新,提供了更多的特性和改进,如模块化系统(Project Jigsaw)等。 ### 总结 通过对比Java 2 平台的三个版本——J2ME、J2SE 和 J2EE,我们可以清楚地看到每个版本的目标市场...

    Java 基础教程

    Java的发展历程中,多个重要事件标志着语言及开发环境的演变,包括JDK的推出、企业版J2EE的发布、J2SE和J2ME版本的出现,以及Java SE 5.0的重大更新。 Java不仅仅是一种编程语言,它还构成了一个软件开发、运行以及...

    JAVA在线教育系统源码.zip

    这个系统可能涵盖了课程管理、学生管理、教师管理、在线学习、考试评估等多个功能模块,旨在为用户提供一个全方位的在线学习环境。源码分析是深入理解系统架构、设计模式和技术选型的重要途径,对于开发者来说,这是...

Global site tag (gtag.js) - Google Analytics