基于SOA的图书商城系统分析
1.1什么是SOA架构?
SOA( Service Oriented Architecture)是一种面向服务的分布式架构,将每个实现特定功能的工程拆分为服务层和表现层。服务层负责处理业务逻辑,对外提供服务接口。表现层负责处理与前端的交互,具体业务逻辑只需调用服务层发布的接口。
面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
SOA是把服务分成了若干,表现层分成了若干。表现层和服务层没有耦合关系,表现层可以用任意一个服务层,开发的时候,仅仅是增加服务层和Web层2个工程,并不会把服务层和Web层当成一个整个工程,它们是独立的。
1.2 Dubbo
目前较为流行的SOA 架构开发方式是使用Dubbo 技术。在SOA 架构中,每个功能模块都会发布服务或调用服务,那么就需要有一 个服务中心对各个服务进行统一的资源调度与治理,Dubbo 就是这个服务中心的管理工具。 Dubbo 对 Spring 有很好的支持,只需在 Spring 配置文件中进行相关的配置即可使用。 Dubbo 中主要有服务提供者、服务消费者和注册中心三个角色,还有一个监控中心对每次服务调用进行监控与统计。服务提供者向注册中心发布自己提供的服务,服务消费者向注册中心订阅自己所需的服务,服务中心将服务提供者提供的服务及地址列表给服务消费者,即实现了服务调度。在项目中,服务层工程作为服务提供者,需要通过配置向注册中心暴露服务的接口。表现层工程作为服务消费者,需要通过配置从注册中心引用服务接口。注册中心推荐使用 Zookeeper,负责服务的注册与查找。
2.基于SOA架构的图书商城
图书商城系统可以分为后台系统、前台系统、登陆/注册系统、搜索系统,每个子系统运行在各自的服务器上,互相之间通过调用接口实现整个网站的功能。商城SOA架构图如图所示:
2.1后台系统
后台系统的主要使用者为商家,提供图书管理、订单管理等功能,图书管理又可分为图书分类和图书基本管理。后台系统提供对图书、图书分类、订单增、删、改、查的功能。使用 FastDFS 作为图片服务器供图书图片的上传下 载。
2.2前台系统
前台系统的主要使用者为买家,买家在前台系统可以进行登陆注册、览图书、查看购物车、提交订单等,搜索图书等,前台系统相较于后台系统会有更高的访问量与并发量,涉及大量数据库操作时会很耗费时间。因此可以使用非关系型数据库Redis 作为业务层与数据层之间的缓存。Redis 作为非关系型数据库,比传统的关系型数据库效率要高出很多,处理大量数据时性能有明显优势。业务层需要数据时首先访问Redis,如果有数据就直接返回,如果没有再向关系型数据库中查找数据,然后返回给业务层并向Redis 中添加数据缓存。
2.3搜索系统
搜索系统给前台系统提供接口,为用户提供图书查找的服务。搜索功能需要对用户输入的关键词进行复杂的查询,使用传统的关系型数据库查询效率较低,针对这个问题,我们可以使用 Solr(实现快速搜索的搜索引擎系统)技术对数据进行快速索引。
在使用前需要为Solr 配置中文解析器,并设置分词方法与图书信息的搜索域。然后将图书信息导入到Solr 索引库中,用户在搜索框中输入关键词开始搜索,服务端在Solr 索引库中根据事先设置的分词以及搜索域进行查找,有图书信息与之匹配将返回给浏览器显示。
2.4登陆系统
将登陆系统独立出来可以为所有用户提供一个统一的接口。用户信息在数据库中有一个字段来标识用户身份,输入用户名密码后,服务端会在数据库中进行比对,若是卖家,则进入后台系统,若是买家,则进入前台系统。
基于SOA的图书商城系统分析的更多相关文章
- JAVAEE——宜立方商城02:服务中间件dubbo、工程改造为基于soa架构、商品列表实现
1. 学习计划 第二天:商品列表功能实现 1.服务中间件dubbo 2.工程改造为基于soa架构 3.商品列表查询功能实现. 2. 将工程改造为SOA架构 2.1. 分析 由于宜立方商城是基于soa的 ...
- 基于SSH的网上图书商城-JavaWeb项目-有源码
开发工具:Myeclipse/Eclipse + MySQL + Tomcat 项目简介: 技术:Java:JSP:JDBC,struts2,spring,hibernate数据库: mysqlweb ...
- 基于SOA的高并发和高可用分布式系统架构和组件详解
基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案.在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服 ...
- springboot+bootstrap实现图书商城管理(大三下学期课程设计)
在csdn上记一次自己的课程设计过程(已经实习两个月了.感觉这个很容易做.支付可能需要多花点时间.): 在此框架基础之上权限认证管理设置成功:https://blog.csdn.net/weixin_ ...
- 基于SOA分布式架构的dubbo框架基础学习篇
以需求用例为基,抽象接口,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元.接口.功能.集成四层质量管理,自动化集成.测试.交付全程支持. 3个大阶段(需求分析阶段 ...
- 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台
面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...
- 基于 SOA 的组件化业务基础平台
业务基础平台是业务逻辑应用和基础架构平台之间的一个中间层,解决 “应用软件的业务描述和操作系统平台.软件基础架构平台之间的交互与管理问题”.操作系统平台解决了“应用软件系统与硬件之间的交互与管理问题” ...
- 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇
开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构 ...
- Javaweb实现的优优图书商城(含源码)
原文地址:http://www.cnblogs.com/liaoyu/p/uushop.html 源码地址:https://github.com/liaoyu/uushop 贴出一个大学时做的小项目, ...
随机推荐
- DS博客作业8——课程总结
1.当初你是如何做出选择计算机专业的决定的? 本来我在集美大学第一志愿专业是理学院的数据科学与大数据,奈何隔壁县城小伙伴比我高了2分,我就来到了网络,但经过我和她的交流,我意识到我们的课程差不多,同样 ...
- C++类的默认成员函数
成员函数隐含this指针参数: 每成员函数一个隐式的指针形参(构造函数除外): 对象在调用成员函数时,编译器会将对象的地址传递给this指针: 1.构造函数(需用一个公有成员函数对私有的成员变量进行初 ...
- Windows下安装TensorFlow教程
目录 安装Python3.6 配置环境变量 安装TensorFlow 验证安装 报错或选版本 安装Python3.6 建议直接安装anaconda 下载地址:https://www.anaconda. ...
- oracle存储过程错误跟踪
1.首先创建用于保存错误信息的表 1 2 3 4 5 6 7 8 CREATE TABLE TBL_PROC_ERRMSG ( BIZ_CODE VARCHAR2(50), ERR_LINE ...
- 操作MySQL出错提示“BLOB/TEXT column request_data in key specification without a key length”解决办法
错误原因: 查阅资料后才知道,原来Mysql数据库对于BLOB/TEXT这样类型的数据结构只能索引前N个字符.所以这样的数据类型不能作为主键,也不能是UNIQUE的.所以要换成VARCHAR,但是VA ...
- 第七章 SpringCloud之非声明式RestClient:Feign
study-url:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.4.6.RELEASE/multi/multi ...
- 为解决Thymeleaf数字格式化问题而想到的几种方案
背景: spring后端输出double类型数据,前端使用thymeleaf框架,格式化double数据类型,由于需要显示原值(比如原来录入5,而不能显示5.00),因此需要存储数值(存储值为deci ...
- WPF VLC客户端和SDK的简单应用
VLC_SDK编程指南 VLC 是一款自由.开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD.音频 CD.VCD 及各类流媒体协议.它可以支持目前市面上大多数的视频解码,除了Rea ...
- 阶段3 2.Spring_06.Spring的新注解_6 Qualifier注解的另一种用法
复制上面的数据源到下面改改名字 现在就是有两个数据源 创建一个eesy02的数据库 找到sql语句再创建Account表 现在就相当于有连个库一个eesy一个是eesy02这连个库. account里 ...
- java:easyui(jQueryEasyUI,分页)
1.介绍: jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开发者不需要编写复杂的ja ...