本系统利用SSM框架、Dubbo框架、Maven模块化开发等技术开发的一个网上商城项目,主要包括订单系统模块、购物车系统模块、搜索系统模块、后台管理系统模块等等,实现了一个完整的网上购物系统。
项目工程及其对应介绍如图1表2所示。
图1 项目工程图
表2
项目工程 | 相关介绍 |
---|---|
commons | 存放Cookies、HttpClient等工具类 |
parent | 父项目 |
pojo | 实体类 |
service | 服务接口 |
service-impl | dubbo的生产者 |
manage | 后台项目 |
order | 订单模块 |
passport | SSO单点登录模块 |
redis | 缓存模块 |
search | 搜索模块 |
项目Flow见下图
后台框架:Spring、SpringMVC、MyBatis
前端技术:JSP、jQuery、EasyUI
数据库:Redis、MySQL
服务器:Tomcat、Nginx
服务调度:Dubbo
跨域技术:Jsonp、HttpClient
“面向服务的架构”:他是一种设计方法,其中包含多个服务,服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中。各个服务之间通过网络调用。
SOA架构示意图
将重复功能或模块抽取成组件的形式,对外提供服务,在项目与服务之间使用ESB(企业服务总线)的形式作为通信的桥梁。
重复功能或模块抽取为服务,提高开发效率。可重用性高。可维护性高。
各系统之间业务不同,很难确认功能或模块是重复的。抽取服务的粒度大。系统和服务之间耦合度高。
SOA架构中每个子模块都是一个工程,都可以独立部署,把工程部署到不同服务器就可以轻松实现高并发,所以SOA架构可以说是为解决高并发而生的。
简单来说ESB就是一根管道,用来连接各个服务节点。为了集成不同系统,不同协议的服务,ESB做了消息的转化解释和路由工作,让不同的服务互联互通。
Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC(remote procedure call)框架,可以和Spring框架无缝集成。
节点 | 角色名称 |
---|---|
Provider | 暴露服务的服务提供方 |
Consumer | 调用远程服务的服务消费方 |
Registry | 服务注册与发现的注册中心 |
Monitor | 统计服务的调用次数和调用时间的监控中心 |
Container | 服务运行容器 |
– 虚线都是异步访问,实线都是同步访问
– 蓝色虚线:在启动时完成的功能
– 红色虚线(实线)都是程序运行过程中执行的功能
调用关系说明:
Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 。 Dubbo官方推荐使用Zookeeper作为服务注册中心。
/dubbo/com.foo.BarService/providers
目录下写入自己的 URL 地址/dubbo/com.foo.BarService/providers
目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers
目录下写入自己的 URL 地址/dubbo/com.foo.BarService
目录下的所有提供者和消费者 URL 地址maven 是一个项目管理工具,主要作用是在项目开发阶段对Java项目进行依赖管理和项目构建。其中依赖管理,就是对jar包的管理。通过导入maven坐标,就相当于将仓库中的jar包导入了当前项目中。项目构建是通过maven的一个命令就可以完成项目从清理、编译、测试、报告、打包,部署整个过程。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,使用SQL语言访问数据库,由于其体积小、速度快、成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
Redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。Redis其实就是说把表中经常访问的记录放在了Redis中,然后用户查询时先去查询Redis再去查询MySQL,确实实现了读写分离,也就是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