热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SOA架构理解

SOA架构理解理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。1、面向服务的架构SOASOA(ServiceOrien

SOA架构理解

理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。

 

1、 面向服务的架构SOA

SOA(Service Oriented Architecture)即面向服务的架构,是一种架构模型。其中包含多个服务和企业服务总线ESB(Enterprise Services Bus),单个服务只与ESB进行通信或交互,而ESB负责根据用户(customer)的请求提供相应的数据。

SOA架构最主要的有优点是低耦合,即每一个服务都有自己的“边界”,服务之间交互使用接口,由ESB进行管理与调用;高度的可拓展性,SOA架构将功能分为一个个互相独立的服务,这也就提高了代码的重用性和可拓展性,降低了开发难度和维护强度。

面向服务架构的主要技术和标准:

服务提供者:发布自己的服务,并且对服务请求进行响应。

服务注册中心:注册已经发布的web service,对其进行分类,并提供搜索服务。

服务请求者:利用服务中心查找所需要的服务,然后使用该服务。

发布操作:为了使服务可访问,需要发布服务描述以使服务使用者可以发现它。

查找操作:服务请求者定位服务,方法是查询服务注册中心来找到满足其标准的服务。

绑定操作:在检索到服务描述之后,服务使用者继续根据服务描述中的信息来调用服务。

SOAP: 简单对象访问协议 (Simple Object Access  Protocol)

WSDL: Web服务描述语言 WSDL (Web Services Description Language)

UUDI:  统一描述、发现和集成 (Universal Description,Discovery and Integration) 

WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。

ESB(Enterprise Service Bus)企业服务总线:ESB是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。

BPM(Business Process Management)业务流程管理:所谓业务流程管理是指根据业务环境的变化,推进人与人之间、人与系统之间的整合及调整经营方法与解决方案的IT工具。

Portal 门户:门户是一个基于WEB的应用程序,它提供个性化、单点登录、不同来源内容整合及存放信息系统的表示层。

WS-I Basic Profile:由Web服务互用性组织(Web Services Interoperability Organization)提供,是SOA服务测试与互用性所需要的核心构件。服务提供者可以使用Basic Profile测试程序来测试服务在不同平台和技术上的互用性。

J2EE 和 .Net: J2EE和 .NET平台是开发SOA应用程序常用的平台,像J2EE这类平台,不仅为开发者自然而然地参与到SOA中来提供了一个平台,还通过他们内在的特性,将可扩展性,可靠性,可用性以及性能引入了SOA世界。新的规范,例如 JAXB(Java API for XML Binding),用于将XML文档定位到Java类;JAXR(Java API for XML Registry)用来规范对UDDI注册表(registry)的操作;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用来调用远程服务,这使得开发和部署可移植于标准J2EE容器的Web服务变得容易,与此同时,实现了跨平台(如 .NET)的服务互用。

2、 企业服务总线ESB

企业服务总线(Enterprise Services Bus)是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。为了便于理解,我认为可以把ESB看做一条河流横在消费者与商户之间,河上提供大大小小的船只负责根据消费者的命令,从不同的商家拿取货物并整合,然后送到消费者的手中。事实上,ESB不是一种解决方案,它应该是一种调用服务的通信模块。

ESB是服务的请求者和服务的提供者的中间组件,它屏蔽了服务的请求者对服务的提供者的服务实现方式的“窥探”,使得服务变成为了一个黑匣子,服务的请求者不必了解或明白服务的提供者如何接收服务请求者的命令,如何解析命令,如何调取数据,如何集成不同格式的数据,如何返回统一格式的数据等。如果没有总线,服务的请求者不仅需要自己去请求服务,还需要知道服务请求格式以及服务返回数据等问题,这样不但是不利于管理的点到点服务,还降低了用户体验。

3、 SOA与微服务

 

微服务架构可以看做是SOA的进一步发展,微服务的理念是将业务实现单一功能服务,然后通过Http等协议,将服务根据服务的请求者的请求,之间进行通信和数据交互之类的活动,最后呈现给用户。微服务架构强调“业务彻底的组件化和服务化”,就像是一台笔记本电脑的组成一样,笔记本内部的内存,硬盘等零件是可以独立更换或升级而不影响整台电脑的使用一样。除此之外,微服务的“服务组合”的思想也可以影响到使用微服务架构开发的系统,也就是说,微服务的特性使得使用微服务开发的系统中开发语言不统一,单独的数据库,提供给开发者更多的开发***。

而SOA比较注重于服务的重用性,以及为保证交互的质量而支持大部分消息协议、统一的共享数据库强大的ESB通信模块等与微服务架构的不同之处。所以,倘若笼统地描述SOA与微服务之间的区别,可以形容为,微服务是SOA架构去掉了总线。

4、 SOA与云计算

SOA的优势在于服务的重用性、消息的规范化以及服务敏捷的重构能力,而云计算则的特性是云即服务:基础设施即服务(Infrastructure As A Service),平台即服务(Platfrom As A Service),软件即服务(Software As A Service),同时,云计算有着大批量数据计算的优势,从关键技术来看,SOA的重构,松耦合的优势作为系统上层,而可以进行大批量计算和数据处理能力的云计算在底层进行数据整合、计算等工作。同时,SOA会降低商业系统开发和维护的成本,而云计算具有按资源(带宽)收费的经济效益。

 

 

 

参考文献及资料

    [1] GB/T 7714王磊. SOA与云计算的结合[J]. 信息技术, 2013(07):118-120.

    [2] https://blog.csdn.net/lzb348110175/article/details/96738781

    [3] https://www.cnblogs.com/itjeff/p/12074520.html

    [4] https://www.cnblogs.com/jiangzhaowei/p/9168837.html

    [5] https://www.cnblogs.com/itjeff/p/12074520.html


推荐阅读
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
author-avatar
手机用户2502853881
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有