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的图书商城系统分析的更多相关文章

  1. JAVAEE——宜立方商城02:服务中间件dubbo、工程改造为基于soa架构、商品列表实现

    1. 学习计划 第二天:商品列表功能实现 1.服务中间件dubbo 2.工程改造为基于soa架构 3.商品列表查询功能实现. 2. 将工程改造为SOA架构 2.1. 分析 由于宜立方商城是基于soa的 ...

  2. 基于SSH的网上图书商城-JavaWeb项目-有源码

    开发工具:Myeclipse/Eclipse + MySQL + Tomcat 项目简介: 技术:Java:JSP:JDBC,struts2,spring,hibernate数据库: mysqlweb ...

  3. 基于SOA的高并发和高可用分布式系统架构和组件详解

    基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案.在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服 ...

  4. springboot+bootstrap实现图书商城管理(大三下学期课程设计)

    在csdn上记一次自己的课程设计过程(已经实习两个月了.感觉这个很容易做.支付可能需要多花点时间.): 在此框架基础之上权限认证管理设置成功:https://blog.csdn.net/weixin_ ...

  5. 基于SOA分布式架构的dubbo框架基础学习篇

    以需求用例为基,抽象接口,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元.接口.功能.集成四层质量管理,自动化集成.测试.交付全程支持. 3个大阶段(需求分析阶段 ...

  6. 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台

    面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...

  7. 基于 SOA 的组件化业务基础平台

    业务基础平台是业务逻辑应用和基础架构平台之间的一个中间层,解决 “应用软件的业务描述和操作系统平台.软件基础架构平台之间的交互与管理问题”.操作系统平台解决了“应用软件系统与硬件之间的交互与管理问题” ...

  8. 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇

    开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构 ...

  9. Javaweb实现的优优图书商城(含源码)

    原文地址:http://www.cnblogs.com/liaoyu/p/uushop.html 源码地址:https://github.com/liaoyu/uushop 贴出一个大学时做的小项目, ...

随机推荐

  1. js关闭当前页面(窗口)的几种方式

    1. 不带任何提示关闭窗口的js代码  代码如下: <a href="javascript:window.opener=null;window.open('','_self');win ...

  2. 后盾网lavarel视频项目---5、淘宝镜像cnpm的原理及如何使用

    后盾网lavarel视频项目---5.淘宝镜像cnpm的原理及如何使用 一.总结 一句话总结: 原理:把npm上面的所有软件copy过来 使用:npm install -g cnpm --regist ...

  3. zeppelin安装使用

    官网:http://zeppelin-project.org/  代码:https://github.com/NFLabs/zeppelin  使用:按照官网的视频操作一遍,应该就懂了http://y ...

  4. vue指令之v-cloak

    vue指令之v-cloak 一起学 vue指令 v-cloak  指令可看作标签属性 某些情况下可能由于机器性能故障或者网络原因,导致传输有问题,那么浏览器无法成功解析数据,此时浏览器输出的内容就是纯 ...

  5. T78748 【lcez模拟赛】机场Ⅰ

    T78748 [lcez模拟赛]机场Ⅰ 其实这就是最小生成树的题辣 注意输入毒瘤 输入的话要避免记录中间这个‘ , ’ 如下操作可以解决 特别注意%d之间的‘ , ’ 边的权值要现算 存点的话存横纵坐 ...

  6. Molecular Dynamics

    First]前处理 Second]运行MD Third]后处理 一.获得结构文件-来自实验数据或者某些化学软件工具 1]第一步: 获取并处理pdb文件 从Protein Data Bank下载小肽的p ...

  7. 【flask】处理表单数据

     表单数据的处理涉及很多内容,除去表单提交不说,从获取数据到保存数据大致会经历以下步骤: 解析请求,获取表单数据. 对数据进行必要的转换,比如将勾选框的植转换为Python的布尔值. 验证数据是否符合 ...

  8. VirtualBox-5.2.8-121009-Win.exe虚拟机桥接

  9. java 接口default的判断规则

    1.前言 jdk1.8中新增加了default关键字,就是在接口中可以增加默认实现. 因为改动接口所有的实现类都要改动,所以增加了default关键字后不需要修改其他类,默认给所有实现类增加了方法. ...

  10. springmvc请求参数获取(自动绑定)的几种方法

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...