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


推荐阅读
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
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社区 版权所有