`
hulianrongyun
  • 浏览: 1383 次
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
网址:www.hulianrongyun.com,本人QQ:4407509,有问题可以联系本人
最近公司要开发商城,让我多方咨询,最后看了很多,要不就是代码、表字段注释不全,要不就是bug多,要么就是文档缺少,最后决定自己开发一套商城。
下面是开发的一些心得体会,权且记录下来,给自己做个记录把。



本人QQ:4407509,有问题可以联系本人
之前一直都是在从事电商相关和互联网金融开发,处理过亿级数据量,所以被目前这家公司看重。
由于Java是开源的,最近几年Hadoop等开源产品越来越成熟,而且是基于Java的,所以最终选择Java最后后台开发语言,现在前端是自己的前端工程师写的JS,后期准备改成前端是PHP,中间是Go语言,后台服务器是JAVA,因为PHP写前端很厉害,不过这个也是后期了。


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

视图层:这个我个人认为哪一个都差不多,jsp、freemarker也好,最终都是生成的html。


数据库设计:
    1、关键的一个是绝对不能有外键强关联,我看到类似用hibernate、SpringData产品的一些公司,全部都是强关联,那你以后想删除一些数据,那真是噩梦的,这个还不用说,查询性能方面影响也是巨大的。
   2、分库分表。这个必须要支持的,做互联网数据量是非常的巨大的,如果开始就不能支持分库分表,那么后期会至少花上千万去做这事,最好一个例子就是当当网,当年很多事单库的,到现在也没有实现分库分表,它们只能使用一些分区表架构,分区表本身就存在很大问题,比如扩展性、数据量过亿都是问题!!!!

数据库选择:最好还是myslq,1、轻量,2、开源(阿里的alisql就是MySQL改个名字),3、功能能满足电商需求

搜索:选择ElasticSearch较好,原因是他封装的较好
权限对于电商来说不应该设计的过于复杂,我认为主要就两张表就够了,一个是角色Role表,一个是资源Resources表,然后用户和角色通过中间表关联下就OK了,角色里面有资源,很简单的逻辑,security、shiro这两款的权限框架都能做出这个需求。

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

静态化:目前使用前端静态化,可以实现全站60%都是静态页面,数据从集群redis缓存中读取。

服务化:目前使用SpringCloud,虽然阿里的dubbo确实做得非常好,但是目前市场来看SpringCloud有取代的趋势,另外SpringCloud提供了更多的服务治理方案。

图片服务器:这个也是非常重要的环节,目前我们测试系统都有15个G的图片了!!!!线上估计会是以T计算的,觉得是需要独立的图片服务器的。

集群、负载、分布式:前面的分库分表、服务化、图片服务器都是为集群、负载、分布式做准备的,集群需要基于CDN做动态切换,服务器用Nginx做复杂,业务层用SpringCloud做分布式服务。

下面整理下整个架构吧:
    展示层/控制层:SpringBoot,在spring中做读写分离
    持久层:mybatis
    数据库:MySQL/Oracle,支持主从复制、读写分离、多机备份、支持分库分表
    缓存机制:redis,CDN图片缓存,也是支持热备份、高并发的
    静态化机制:系统页面做静态化,提高访问速度
    图片服务器:购买专用服务器,用nginx做负载
    
   
    搜索引擎: 分布式ElasticSearch
   
    服务器:Linux
    中间件:tomcat、nginx,还有其他N多的支持集群部署的安装间接软件,就不一一列举了
    图片服务器:通过nginx做的,SFTP方式统一上传
    集群方案:多机tomcat,seesion统一管理,图片统一管理。这些需要一套解决方案。
    服务器要求:linux/windows,4G内存,空间20G以上
    
架构图:


   最后对于JAVA领域商城的开发,其实在PHP、.NET语言中,已经有非常多的成熟同类产品了,比如shopnc、ecshop等等等,但是PHP的逻辑都是写在前台文件中,这个就跟JAVA中的逻辑都是写在了JSP中一样,这样虽然便于开发,但是后期二次开发、维护都不方便。另外.NET语言大家都是知道的,它是不开源的,这个我觉得不敢用的,哪天你遇到致命bug了,没法从底层排查,这也是为什么银行、金融、电商很多行业不用这个语言原因了。
  
  另外对于JAVA开发方面,其实如果有好的架构,JAVA程序员只写逻辑,前端只写前端,数据库DBA只关注DBA,这样的话,开发起来会非常的方便。我们团队目前也是花了很长时间,也借鉴了很多成熟的框架,研发了一套适合商城开发的一套架构。等到以后有机会可以开源出来给大家。

网址:www.hulianrongyun.com,本人QQ:4407509,有问题可以联系本人

分享到:
评论

相关推荐

    java微博毕设系统——美食商城.zip

    总的来说,这个"java微博毕设系统——美食商城"项目涵盖了Web开发的多个核心领域,对于学习和理解Web应用程序的整体架构、前后端交互以及数据库管理有极大的实践价值。无论是初学者还是经验丰富的开发者,都可以从中...

    《Java语言程序设计——基础篇》第一章计算机、程序和Java概述作业答案.zip

    《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...

    基于Java Swing的图书管理系统-版本二(csdn)————程序.pdf

    【基于Java Swing的图书管理系统-版本二】是一个利用Java编程语言和Swing GUI库开发的图书管理应用程序。这个系统提供了一系列功能,旨在帮助用户高效地管理和操作图书信息。以下是该系统的详细知识点: 1. **图书...

    员工人事管理系统——基于java

    《员工人事管理系统——基于Java与MySQL的实现》 在当今数字化时代,企业对高效、便捷的人事管理需求日益增长,员工人事管理系统应运而生。本文将深入探讨一个基于Java编程语言和MySQL数据库构建的员工人事管理系统...

    毕业设计——基于Java的漏洞扫描系统.zip

    【标题】: "毕业设计——基于Java的漏洞扫描系统" 这个毕业设计项目是关于构建一个基于Java的漏洞扫描系统,其目标是实现对网络系统、应用程序或服务器的安全检测,找出潜在的安全漏洞,以便及时修复,保护信息安全...

    java 全端开源 电商系统 springboot uniapp 小程序 前后端分离 高可用(csdn)————程序..pdf

    这个系统设计为高可用性,适合高并发场景,包含了丰富的功能模块,如会员管理、第三方登录、第三方支付、订单处理、分销系统、文章管理、系统设置以及流量分析等。 系统的技术栈主要包括以下几个方面: 1. **...

    基于Java的在线购物系统的设计与实现(源代码+系统)下载.zip

    《基于Java的在线购物系统设计与实现》是一个涵盖了软件工程多个领域的综合性项目,它涉及到的主要知识点包括Java编程、Web开发、数据库设计、MVC架构、前端技术以及软件测试等多个方面。下面将对这些核心内容进行...

    商城购物系统设计与实现(Java毕业设计-SSM项目)

    《商城购物系统设计与实现——基于Java的SSM项目》 在信息技术日新月异的今天,商城购物系统的开发已经成为企业提升效率、拓展业务的重要手段。本项目是使用Java编程语言,结合Spring、SpringMVC和MyBatis(简称SSM...

    酒店管理系统————酒店管理系统

    酒店管理系统是一种基于信息技术的软件应用,它旨在帮助酒店业高效管理日常运营,包括客房预订、入住登记、账单结算、客户关系管理等多个方面。在这个系统中,Java作为主要的编程语言被广泛使用,因为Java具有跨平台...

    java毕业设计——基于JAVA的安全电子商务.zip

    这个Java毕业设计项目全面展示了如何将Java技术应用于电子商务领域,涵盖了从系统架构设计到安全策略实施的诸多方面,对于学习者来说,是一个宝贵的实践机会,有助于深化对Java编程和电子商务系统开发的理解。

    软件工程——医院挂号系统

    首先,需求分析是项目启动的第一步。在这个阶段,我们需要深入了解医院的业务流程,确定挂号系统的核心功能,如在线预约、实时查询医生排班、取消预约、支付挂号费用等。同时,也要考虑系统的扩展性,如支持多科室、...

    Java毕业设计——停车场管理系统(论文+答辩PPT+源代码+数据库).zip

    《Java毕业设计——停车场管理系统》是一项综合性的学习项目,它涵盖了Java编程语言、数据库管理、软件工程等多个领域的知识。此项目旨在让学生通过实践,提升在实际开发中的问题解决能力和技术应用能力。 首先,从...

    Java搜索工具——Lucene实例总结(一)

    创建索引是Lucene工作的第一步。这涉及到添加文档到一个名为“IndexWriter”的对象,该对象负责将文档转化为倒排索引。例如: ```java Directory indexDir = FSDirectory.open(Paths.get("index_path")); ...

    java毕设:办公自动化系统——springboot+vue+element-ui 前后端分离.zip

    以上是关于“java毕设:办公自动化系统——springboot+vue+element-ui 前后端分离”项目的详细介绍,涵盖了技术选型、核心原理、开发实践等多个方面,对于学习Java Web开发的同学来说,这是一个非常有价值的参考案例...

    Java实战项目 - 网上商城交易系统(源码,内有详细配置文件),--- J2EE

    总结,本Java实战项目——网上商城交易系统,提供了从基础到进阶的全方位学习材料。无论是对J2EE技术的掌握,还是对实际项目开发流程的理解,都能从中受益匪浅。通过详细研究源码和配置文件,开发者可以深入洞悉网上...

    图书商城系统设计与实现 Java课程设计

    总之,"图书商城系统设计与实现——Java课程设计"是一个全面的实战项目,涵盖了Web开发的多个重要环节,对学习和理解JavaWeb技术有着极高的价值。通过实际操作,开发者能深入理解Web应用的开发流程,提高自己的技术...

    javaEE课后代码——客户管理系统

    【JavaEE客户管理系统】是一个基于Java企业级应用开发的项目,主要目的是实现对客户数据的有效管理和操作。在JavaEE平台上,此类系统通常采用MVC(Model-View-Controller)架构模式,结合各种开源框架,以提高开发...

    Java Web开发实践教程——从设计到实现(第2版)源代码

    《Java Web开发实践教程——从设计到实现(第2版)》是一本深入浅出的教程,旨在帮助读者掌握Java Web应用的开发技术。源代码是学习编程书籍的重要辅助资源,它提供了书中示例的直观展示,使得理论与实践相结合,...

    MTK方案简介——平台软件架构详解

    【MTK方案简介——平台软件架构详解】 MTK(MediaTek)是一家著名的集成电路设计公司,尤其在手机领域有着显著的影响力。自1997年成立以来,联发科已经成为全球第五大集成电路设计公司,同时也是台湾最大的集成电路...

    在线考试系统 开题报告——七合一

    至于《在线考试系统开题报告.rar》,尽管与第一个同名,但不同的来源可能提供了不同的视角或深入点,比如可能包含了一些实际开发过程中的问题和解决方案,或者更详细的项目规划。 最后,《jsp2009EXAM.rar》暗示了...

Global site tag (gtag.js) - Google Analytics