软件工程课程设计·SOA架构搭建SSM框架的网上商城系统
软件工程课程设计·SOA架构搭建SSM框架的网上商城系统
项目简介
本系统利用SSM框架、Dubbo框架、Maven模块化开发等技术开发的一个网上商城项目,主要包括订单系统模块、购物车系统模块、搜索系统模块、后台管理系统模块等等,实现了一个完整的网上购物系统。
项目工程
项目工程及其对应介绍如图1表2所示。
图1 项目工程图
表2
项目工程 | 相关介绍 |
---|---|
commons | 存放Cookies、HttpClient等工具类 |
parent | 父项目 |
pojo | 实体类 |
service | 服务接口 |
service-impl | dubbo的生产者 |
manage | 后台项目 |
order | 订单模块 |
passport | SSO单点登录模块 |
redis | 缓存模块 |
search | 搜索模块 |
项目Flow
项目Flow见下图
项目Flow图
系统相关技术介绍
技术选型:
后台框架:Spring、SpringMVC、MyBatis
前端技术:JSP、jQuery、EasyUI
数据库:Redis、MySQL
服务器:Tomcat、Nginx
服务调度:Dubbo
跨域技术:Jsonp、HttpClient
SOA架构(Service Oriented Architecture)
“面向服务的架构”:他是一种设计方法,其中包含多个服务,服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中。各个服务之间通过网络调用。
SOA架构示意图
SOA架构说明
将重复功能或模块抽取成组件的形式,对外提供服务,在项目与服务之间使用ESB(企业服务总线)的形式作为通信的桥梁。
SOA架构优点
重复功能或模块抽取为服务,提高开发效率。可重用性高。可维护性高。
SOA架构缺点
各系统之间业务不同,很难确认功能或模块是重复的。抽取服务的粒度大。系统和服务之间耦合度高。
SOA架构实现高并发
SOA架构中每个子模块都是一个工程,都可以独立部署,把工程部署到不同服务器就可以轻松实现高并发,所以SOA架构可以说是为解决高并发而生的。
ESB(企业服务总线)
简单来说ESB就是一根管道,用来连接各个服务节点。为了集成不同系统,不同协议的服务,ESB做了消息的转化解释和路由工作,让不同的服务互联互通。
Dubbo框架
Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC(remote procedure call)框架,可以和Spring框架无缝集成。
Dubbo架构图(Dubbo官方提供)
节点 | 角色名称 |
---|---|
Provider | 暴露服务的服务提供方 |
Consumer | 调用远程服务的服务消费方 |
Registry | 服务注册与发现的注册中心 |
Monitor | 统计服务的调用次数和调用时间的监控中心 |
Container | 服务运行容器 |
– 虚线都是异步访问,实线都是同步访问
– 蓝色虚线:在启动时完成的功能
– 红色虚线(实线)都是程序运行过程中执行的功能
调用关系说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Zookeeper介绍
Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 。 Dubbo官方推荐使用Zookeeper作为服务注册中心。
Zookeeper树型目录服务图
流程说明:
- 服务提供者(Provider)启动时: 向
/dubbo/com.foo.BarService/providers
目录下写入自己的 URL 地址 - 服务消费者(Consumer)启动时: 订阅
/dubbo/com.foo.BarService/providers
目录下的提供者 URL 地址。并向/dubbo/com.foo.BarService/consumers
目录下写入自己的 URL 地址 - 监控中心(Monitor)启动时: 订阅
/dubbo/com.foo.BarService
目录下的所有提供者和消费者 URL 地址
maven介绍
maven 是一个项目管理工具,主要作用是在项目开发阶段对Java项目进行依赖管理和项目构建。其中依赖管理,就是对jar包的管理。通过导入maven坐标,就相当于将仓库中的jar包导入了当前项目中。项目构建是通过maven的一个命令就可以完成项目从清理、编译、测试、报告、打包,部署整个过程。
MySQL
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,使用SQL语言访问数据库,由于其体积小、速度快、成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
Redis
Redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。Redis其实就是说把表中经常访问的记录放在了Redis中,然后用户查询时先去查询Redis再去查询MySQL,确实实现了读写分离,也就是Redis只做读操作。由于缓存在内存中,所以查询会很快。
Redis示例图
跨域技术
跨域:一个 Servlet 容器(tomcat)中项目调用另一个 servlet 容器(tomcat)中项目,称为跨域。
原因:ajax 在研发时处于安全性考虑不允许跨域请求的.
解决方法1:使用 jsonp。
解决方法2:由项目访问自己的控制器,自己的控制器访问自己的 service,在自己的service 中使用 httpclient 调用另一个项目的控制器方法。
二者区别见下表
项目介绍和效果展示
门户模块
门户模块主要包含网上购物商城系统的主页,其中包含登录注册、商品分类、各模块和商品的快捷入口,在这还展示了商城最新最热的商品推荐,用户可以在主页直接进行浏览购买。具体效果展示如下图2。
图2 门户模块图
购物车模块
购物车模块主要包含网上购物商城系统的购物车页面,用户可以把自己喜欢的物品加入到购物车中进行下一步挑选,在购物车模块用户可以删除商品、修改商品数量、进行结算等操作。具体效果展示如下图3。
图3 购物车模块图
商品模块
商品模块主要包含网上购物商城系统的商品展示页面,用户可以在本页面查看商品的具体参数,比如价格、性能和商品图片,用户如果喜欢也可以加入购物车,分享给好友等等。具体效果展示如下图4。
图4 商品模块图
后台模块
后台模块主要包含网上购物商城系统的后台管理页面,管理员可以在本页面管理用户和商品,可以对其进行增删改查操作。具体效果展示如下图5。
图5 后台模块图
订单模块
订单模块主要包含网上购物商城系统的订单页面,用户提交购买时来到本页面,进行收货人信息的完善和选择支付方式和配送方式等,在完成以上信息后,即可提交购买商品。具体效果展示如下图6。
图6 订单模块图
项目总结
本系统利用SOA架构实现了网上商城系统。SOA架构利用其面向企业商业流程、更好的适应性和扩展性、组件性和互用性、共用资源、高并发、易于维护等优点,在开发类似于网上商城这种高并发的大型项目时,具有得天独厚的优势。除了网上商城之外,一些在线聊天系统、博客网站等等在用户达到一定程度之后也可以使用SOA架构、微服务架构来解决高并发等问题。
源码及其解释文件
免费提供源码
https://download.csdn.net/download/zjlwdqca/13621359
软件工程课程设计·SOA架构搭建SSM框架的网上商城系统相关推荐
- 基于SSM框架的服饰商城系统的设计与实现(文末附源码)
摘要 现如今我们处于大数据时代,我们对网上商城的概念并不感到生疏,随着互联网科技的发展,网络在人们生活中的运用越来越广泛,网上购物已经成为了现代购物的主流趋势.网上购物具有多种选择.性价比高等优势,网 ...
- 毕业设计 课程设计 大作业 基于JAVA WEB的网上购物系统的设计与实现
文章目录 前言 1 运行效果 2 系统设计说明 2.1 整体设计 2.1.1 实现的功能: 2.1.2 系统工作流程: 2.2 总体设计功能图 2.3 数据库设计 3 项目 前言 随着计算机网络技术的 ...
- 选题:基于SSM框架实现汽车配件商城系统
项目编号:BS-SC-033 前言: 随着互联网技术逐渐的深入到生活,网站形式的展示窗口,已经成为大众迫切的需要.论文中的SSM网上商城购物网站专门是基于B/S模式建立起来的,为用户专门研发的一个易操 ...
- java ssm热带水果网上商城系统--
目录 第一章 绪论 5 1.1 研究背景 5 1.2系统研究现状 5 1.3 系统实现的功能 6 1.4系统实现的特点 6 1.5 本文的组织结构 6 第二章开发技术与环境配置 7 2.1 Java语 ...
- SSM柳州博物馆文创产品网上商城系统 计算机毕设源码14620
摘 要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,博物馆文创产品网上商城系统当然也不能排除在外.博物馆文创产品网上商城系统是以实际运 ...
- 软件工程课程设计——技术栈【Go+Vue+PGSQL】的人事管理系统
一.项目架构介绍 项目技术栈:Go+Vue+PGSQL 开发工具:IDEA2021.1 后端开发语言:Go 前端框架:Vue3.0(集成ElementUI组件) 后端框架:Gin.Gorm 数据库:P ...
- Spring框架学习笔记09:基于XML配置方式搭建SSM框架实现用户登录
文章目录 一.采用MVC架构 二.用户登录运行效果 三.基于XML配置方式搭建SSM框架实现用户登录 (一)创建数据库与表 - simonshop (t_user) 1.创建数据库 - simonsh ...
- MVC架构和SSM框架的个人理解
MVC架构和SSM框架的个人理解 前言 一.原生JavaWeb对应MVC架构 二.SSM框架对应MVC架构 第一块内容(MyBatis): 第二块内容(Spring): 第三块内容(SpringMVC ...
- ssm框架 html搭建,搭建SSM框架
根据上篇文章搭建好开发环境后,就可以着手搭建SSM框架的开发架构了 1.打开eclipse 2.新建动态web项目 3.在项目的WebContent目录下的WEB-INF目录下的lib目录下复制所需的 ...
最新文章
- python 特征选择卡方_特征选择
- php多关键词精确查找,搜索引擎,全文搜索_请问有没有搜索引擎能做到Like级别的任意关键词精确查询?,搜索引擎,全文搜索,lucene,elasticsearch,百度 - phpStudy...
- Eclipse Android编程快捷键
- Python的Tkinter点击按钮触发事件
- arthas使用示例:profiler火焰图(CPU)
- hdoj2553(N皇后问题)
- undertow 怎么创建线程_为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow
- 50道编程小题目之【完数】
- java实现c语言的函数_C语言tolower函数介绍、示例和实现
- mysql enterprise backup 使用_mysql enterprise backup入门使用
- POJ 1192 最优连通子集(树形DP)
- 一台电脑如何同开两个或多个飞信?
- c 语言 二进制 十进制,C 语言实例 – 二进制与十进制相互转换 - C 语言基础教程...
- [Swift]LeetCode145. 二叉树的后序遍历 | Binary Tree Postorder Traversal
- Raki的读paper小记:Rational LAMOL: A Rationale-Based Lifelong Learning Framework
- 第5章 软件质量标准概述
- FFmpeg+SDL纯视频播放器
- 戴尔游匣G15 5520成功安装ubuntu2004 intel ax201 驱动(亲测可用)
- halcon深度图,平面拟合后,高度矫正
- 考研最卷的专业,我们替你查到了!