热门标签 | 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


推荐阅读
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • ThinkPad USB 硬盘启动 Ubuntu 系统的详细步骤
    本文介绍如何通过USB硬盘在联想ThinkPad上启动Ubuntu系统,包括BIOS设置和启动优先级调整。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 随着Redis功能的不断增强和稳定性提升,其应用范围日益广泛,成为软件开发人员不可或缺的技能之一。本文将深入探讨Redis集群的部署与优化,包括主从备份机制、哨兵模式以及集群功能,帮助读者全面理解并掌握Redis集群的应用。 ... [详细]
  • 算法题解析:最短无序连续子数组
    本题探讨如何通过单调栈的方法,找到一个数组中最短的需要排序的连续子数组。通过正向和反向遍历,分别使用单调递增栈和单调递减栈来确定边界索引,从而定位出最小的无序子数组。 ... [详细]
  • CentOS 6.5 上安装 MySQL 5.7.23 的详细步骤
    本文详细介绍如何在 CentOS 6.5 系统上成功安装 MySQL 5.7.23,包括卸载旧版本、下载安装包、配置文件修改及启动服务等关键步骤。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 深入理解Lucene搜索机制
    本文旨在帮助读者全面掌握Lucene搜索的编写步骤、核心API及其应用。通过详细解析Lucene的基本查询和查询解析器的使用方法,结合架构图和代码示例,带领读者深入了解Lucene搜索的工作流程。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 理解UML的重要性及其应用
    探讨为什么大多数开发人员难以成为架构师,介绍从现实世界到业务模型的抽象过程,并详细解释UML在软件设计中的关键作用。 ... [详细]
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社区 版权所有