软件工程课程设计·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 服务运行容器

– 虚线都是异步访问,实线都是同步访问
– 蓝色虚线:在启动时完成的功能
– 红色虚线(实线)都是程序运行过程中执行的功能

调用关系说明:

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zjlwdqca/article/details/110949919