热门标签 | 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的“心脏”。

推荐阅读
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • SSAS入门指南:基础知识与核心概念解析
    ### SSAS入门指南:基础知识与核心概念解析Analysis Services 是一种专为决策支持和商业智能(BI)解决方案设计的数据引擎。该引擎能够为报告和客户端应用提供高效的分析数据,并支持在多维数据模型中构建高性能的分析应用。通过其强大的数据处理能力和灵活的数据建模功能,Analysis Services 成为了现代 BI 系统的重要组成部分。 ... [详细]
  • 在拉斯维加斯举行的Interop 2011大会上,Bitcurrent的Alistair Croll发表了一场主题为“如何以云计算的视角进行思考”的演讲。该演讲深入探讨了传统IT思维与云计算思维之间的差异,并提出了在云计算环境下应具备的新思维方式。Croll强调了灵活性、可扩展性和成本效益等关键要素,以及如何通过这些要素来优化企业IT架构和运营。 ... [详细]
  • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节
    揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节 ... [详细]
  • 解读中台架构:微服务与分布式技术的区别及应用
    中心化与去中心化是长期讨论的话题。中心化架构的优势在于部署和维护相对简单,尤其在服务负载较为稳定的情况下,能够提供高效稳定的性能。然而,随着业务规模的扩大和技术需求的多样化,中心化架构的局限性逐渐显现,如扩展性和故障恢复能力较差。相比之下,微服务和分布式技术通过解耦系统组件,提高了系统的灵活性和可扩展性,更适合处理复杂多变的业务场景。本文将深入探讨中台架构中微服务与分布式技术的区别及其应用场景,帮助读者更好地理解和选择适合自身业务的技术方案。 ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
  • Java解析YAML文件并转换为JSON格式(支持JSON与XML的结构化查询)
    本文探讨了如何利用Java解析YAML文件并将其转换为JSON格式,同时支持JSON和XML的结构化查询。YAML、JSON和XML这三种数据格式通过其名称作为文件扩展名,便于区分和使用。文章详细介绍了这些格式的层次结构和数据表示方法,并重点讨论了在数据传输过程中,XML的特性和优势。此外,还提供了具体的代码示例和实现步骤,帮助开发者高效地进行数据格式转换和查询操作。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • 免费赠送《Python Selenium WebDriver 3.0 自动化测试框架实战指南》电子书资源
    免费赠送《Python Selenium WebDriver 3.0 自动化测试框架实战指南》电子书资源 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
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社区 版权所有