热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

企业服务总线ESB之概述

为了解决业务复杂度和业务变化导致的软件危机,软件方法沿着结构化、面向对象、构件技术和面向服务一路变革,软件开发的正确性、可重用性逐步得到提高。尤其是符合SOA架构风格后,软件的业务敏捷能

为了解决业务复杂度和业务变化导致的软件危机,软件方法沿着结构化、面向对象、构件技术和面向服务一路变革,软件开发的正确性、可重用性逐步得到提高。尤其是符合SOA架构风格后,软件的业务敏捷能力得到了大幅提升,软件技术也越来越接近业务本质。


SOA是一种架构风格。它的核心思想是通过服务(业务单元)的提取和灵活组合,充分整合企业的资源,适应业务的快速变化,以提高企业竞争力。

SOA架构是面向服务的技术体系,任何技术体系都有它的优势和局限性,他们的出现都是为了解决特定的应用和业务问题,所以SOA技术也不是包治百病的灵丹妙药。为了说明SOA能解决什么问题,需要解释一下什么是“服务”。软件的发展历程自始至终贯穿着“复用性”这样一根主线,提高软件的复用性意味着更少的投资带来更大的回报,从“面向过程”到“面向对象”再到“面向服务”都是为了软件的“复用性”。在这个发展过程中,随着软件不断地复杂,系统工程逐渐占据了主导地位,从简单的桌面应用发展到动辄数百上千个应用组成的复杂应用生态,为降低系统复杂度就要求复用的粒度不断的变大。

“服务”是一种可以相对独立运行的,对外提供稳定接口协议的封闭系统。相对于对象来说,服务是大颗粒度的,不可修改的(对象可以通过派生的方式来重构,而服务则只能被引用)。服务就像我们使用的冰箱、电视,本身就可以独立的运作;而对象或组件则像是汽车中的方向盘和档把,只有装在汽车上才有用,拆下来就毫无用处。联系服务之间的协议是报文,联系组件之间协议就是接口(API),它们之间的耦合度较之服务之间要高很多,同时效率也要高很多。SOA就是通过对服务进行组合,从而实现更高粒度的“系统”。SOA并不关心“服务”或者说“原子服务”本身如何实现,你可以用组件和对象来构造你的原子服务,也可以用面向过程的方法来实现,甚至你可以用汇编和硬件来实现服务。所以SOA并不能取代传统的开发手段,正相反传统的开发手段为SOA提供了丰富的资源。

在传统的开发方式中,存量系统是巨大负担,当采用J2EE的时候,会为大量的C/C++的存量代码感到头疼。但SOA却认为存量系统是财富,因为SOA并不关心服务是怎么实现的,相反地存量系统是经过长期稳定运行的可信赖的系统。

SOA不能做什么?从上面对服务的描述看,似乎可以把服务认为是一个巨大的组件或对象,但遗憾的是SOA体系有一个无法用组件的方式解决的问题,那就是交易一致性的问题。就好像我要做一道菜,先将鱼收拾干净放好佐料,然后用微波炉清蒸却发现没有电,这个时候我不可能把鱼还原等待有电了再重新这个过程一样。服务组合过程中的失败是无法rollback的,所以SOA只能采用补救手段“冲正”来解决这个问题,通俗讲就是反交易。当然,这也带来了麻烦,为了保证交易一致性,所有的冲正都可能需要人工的干预。所以,当你享受SOA带来的便捷的时候。你同样要忍受他带来的麻烦,好在便捷带来的好处远大于麻烦所增加的成本。

目前SOA的相关技术的发展已经形成信息化技术发展的一股浪潮,基于SOA的应用集成,成为当前企业IT基础架构发展的趋势。 基于这个前提,一种面向SOA基于数据、应用整合和信息共享的的集成中间件——ESB(Enterprise Service Bus,企业服务总线)慢慢的浮出水面。ESB具有集成特性和面向服务特性为一体的基础架构,以一种可以高度分布式部署的部署模型,“统一消息”的数据模型,高度可扩展、包含开放端点的体系,实现一个对各种企业服务“来者不拒”的智能化的集成和管理的中介,实现被集成的各个企业应用之间的信息共享。在Gartner的报告中,ESB被誉为SOA的“心脏”。

推荐阅读
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • 该平台旨在为大型企业提供一个高效、灵活且可扩展的分布式微服务架构解决方案。它采用模块化、微服务化和热部署的设计理念,结合当前最先进且无商业限制的主流开源技术,如Spring Cloud、Spring Boot2、MyBatis、OAuth2和Element UI,实现前后端分离的系统管理平台。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
author-avatar
mobiledu2502922985
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有