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

推荐阅读
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
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社区 版权所有