范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

ESB企业服务总线功能,需求和核心架构分析

  作者:人月神话,新浪博客同名
  简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践
  对于ESB企业服务总线方面,我准备近期整理几篇文章进行分享。当前虽然在微服务架构下大家讨论更多的是微服务和API网关,但是对于传统业务系统,包括传统企业在进行IT架构转型过程中,为了兼容遗留IT系统,往往仍然需要采用ESB服务总线进行集成和适配。ESB企业服务总线核心功能概述
  ESB是企业服务总线(Enterprise Service Bus)的缩写,是中间件技术与Web Service等技术结合的产物,也是SOA系统中的核心基础设施。ESB就是一个服务的中介,形成服务使用者->ESB服务Proxy->服务提供者的生物链,中介的作用在不同应用中各有不同:
  解耦中介 :客户对实际服务提供者的身份、物理位置、传输协议和接口定义都是不知道也不关心的,交互集成代码提取到了业务逻辑之外,由ESB平台进行中央的宣告式定义。ESB平台实现协议转换 (WebService,Http,JMS...),消息转换 (转换、充实、过滤),消息路由 (同步/异步、发布/订阅、基于内容路由、分支与聚合...)。
  服务中介 :ESB平台作为中介提供服务交互中的基础服务。ESB平台实现SLA (可靠性保证,负载均衡,流量控制,缓存,事务控制,加密传输),服务管理监控 (异常处理,服务调用及消息数据记录,系统及服务的状态监控,ESB配置管理),统一安全管理 (这个有点理想主义)。
  服务编排 :多个服务进行编排形成新的服务。ESB支持一个直观的形式定义新组合服务的流程(工作流、BPEL 或 代码级编排)。
  从上面可以看到ESB的基本功能仍然是数据传输,消息协议转化,路由三大核心功能。有这三大核心功能也可以看到在进行异构系统的整合时候往往根据需要ESB提供这些功能。没有ESB时候也可以实现SOA,比如借助SCA和BPEL来实现SOA,当时却很难实现消息协议转化和动态路由。
  ESB在发展过程中有从原有的消息中间件转化为ESB产品的,这类消息中间件和数据总线产品在原有的EAI企业应用集成中应用比较多。而SOA根据强调了基于服务的集成,以Web Service服务为基本的管理单元。一个服务的定位是关于如何把业务逻辑表现成为一组相互独立的,自描述的且能互操作的实体。
  对于SOA关注的是服务全生命周期,通过服务实现业务价值。而ESB关注的是服务中介和服务的集成,是SOA的基础设施。SOA有两个核心组件,一个是ESB,一个是BPEL,而ESB是基础设施,BPEL是业务流程驱动下服务的集成和整合。离开了SOA,ESB将失去它所连接的服务,而仅仅是一个总线,同时也将变得毫无价值。
  Bobby做了一个比喻:路是没有任何价值的,除非你利用它把一个东西从一个地方移到另外一个地方。而离开SOA,ESB就像一个没人使用的道路。
  做SOA的事情不要先上来建立一个大而全的ESB,相反是关注你的业务问题,找到用SOA的方法来解决业务上的需求,在解决这个问题的过程当中,你会看到一系列的业务服务。这些业务服务是会产生业务价值的。它可以灵活地组装,动态地解决你变化的业务需求。这是它的价值,只有这样才能使你的业务敏捷起来,随需应变起来。而在服务的组装过程中,你再去考虑利用ESB来把他们连接起来。
  ESB 需要某种形式的服务路由目录(service routing directory)来路由服务请求。然而,SOA 可能还有单独的业务服务目录(business service directory),其最基本的形式可能是设计时服务目录,用于在组织的整个开发活动中实现服务的重用。Web 服务远景在业务服务目录和服务路由目录的角色中都放置了一个 UDDI 目录,因而使得可以动态发现和调用服务。这样的目录可以视为 ESB 的一部分;然而,在这样的解决方案变得普遍之前,业务服务目录可能与 ESB 是分离的。
  标准的 ESB 功能
  上面的许多功能既可以使用专有技术实现,也可以通过利用开放标准实现。然而,使用不同的技术来实现 ESB 可能会使它们的性能、可伸缩性和可靠性这些特性显著不同,同时 ESB 功能和所支持的开放标准也会有所不同。由于这些原因,再加上最近制订和正在兴起的一些相关标准,当今实现 ESB 的许多关键决策都涉及到成熟的专有技术和不成熟的开放标准之间的权衡。
  支持 SOA 的最低功能的 ESB 实现
  如果在前面确定的功能中只有一部分和大多数 SOA 场景相关,我们可能会问:实现 ESB 所需的一组最低功能由什么构成?为此,考虑最被普遍认同的 ESB 定义的原理: ESB 是一种逻辑体系结构组件,它提供与 SOA 的原则保持一致的集成基础架构。 SOA 原则需要使用与实现无关的的接口、强调位置透明性和可互操作性的通信协议、相对粗粒度和封装可重用功能的服务定义。 ESB 可以作为分布式的异构基础架构进行实现。 ESB 提供了管理服务基础架构的方法和在分布式异构环境中进行操作的功能。
  因此最低配置的 ESB 功能至少应该包括如下:
  请注意这些最低功能并不需要使用特别的技术,比如 EAI 中间件、Web 服务、J2EE 或 XML。这些技术的使用非常接近也非常符合需求,但是不必强制要求使用它们。相反,最低功能几乎只需简单地使用 SOAP/HTTP 和 WSDL 就可以实现(当然不是所有的情况都这样):URL 寻址和现有的 HTTP 和 DNS 基础架构提供了一个具有路由服务总线Bus。SOAP/HTTP 支持请求-响应(Request-Response)通信规范。HTTP 传输协议被广泛地使用。SOAP 和 WSDL 是开放、与实现无关的服务通信和连接模型。
  然而,这些 SOAP/HTTP 和 WSDL 的基本应用只是点到点(point-to-point)的集成,并不能实现一些 ESB 需要的关键功能:
  目前还没有用于控制服务寻址和命名的管理功能。服务名称通过每个适配器单独进行控制的,服务路由控制则分散在由服务客户端调用的地址、HTTP 基础架构和分配给适配器的服务名称之间。
  虽然这种方法依赖于实现细节,但是它往往并不能使服务实现的替代变得简单;服务请求者代码(也可能是开发工具生成的)通常通过特定地址 的特定协议直接绑定到具体的服务提供者实现。如果想要用另一个服务实现来替代原来的服务实现,就需要修改应用程序代码并重新部署这些代码。
  当然,在许多甚至是大多数情形中往往需要其他的功能,并且这种需要变得越来越常见。特别地,不管是现在还是以后,下面的需求类型可能会导致更复杂高级的技术的使用: 服务质量和服务级别功能。 高级 SOA 概念,例如服务编排、目录、转换等等。 按需操作环境需求,比如管理与自治功能以及基础架构智能功能。 跨越具有不同所有权的多个网络、多个协议以及多个域的真正意义上的异步操作。
  当前API网关和OpenAPI平台和传统ESB对比
  简单来说API网关就是将所有的微服务提供的API接口服务能力全部汇聚进来,统一接入进行管理,也正是通过统一拦截,就可以通过网关实现对API接口的安全,日志,限流熔断等共性需求。如果再简单说下,通过网关实现了几个关键能力。内部的微服务对外部访问来说位置透明,外部应用只需和网关交互统一拦截接口服务,实现安全,日志,限流熔断等需求
  从这里,我们就可以看到API网关和传统架构里面的ESB总线是类似的,这些关键能力本身也是ESB服务总线的能力,但是ESB服务总线由于要考虑遗留系统的接入,因此增加了:大量适配器实现对遗留系统的遗留接口适配,多协议转换能力进行数据的复制映射,路由等能力
  对于两者,我原来做过一个简单的对比,大家可以参考。
  ESB总线的功能需求分析
  关于ESB总线的功能需求,在这里仅仅对核心功能需求进行整理如下:
  服务目录和元数据管理
  ESB总线平台管控应该提供完整的服务目录库,可以通过多个维度对服务目录进行浏览和查询,同时ESB服务总线需要通过数据存储对服务元数据、配置、策略进行统一管理,对于每次服务调用均需要产生服务实例日志信息。对于服务元数据本身包括了服务的编码,名称,类型,版本等基础信息,同时也包括了服务消息输入和消息输出的详细格式信息。
  服务注册和服务接入
  通过服务接入功能,将服务提供方系统开发的服务接入到服务总线上并发布出来,供其它业务系统调用,服务接入也即服务注册和服务封装功能,需要提供简单易用的服务接入操作功能界面,支持手工接入,也支持批量一键接入。
  动态路由和静态路由
  系统需要提供服务动态路或静态路由功能,对于静态路由主要是可以配置和定义静态路由表,服务消费基于路由表进行路由。对于动态路由即可以灵活的配置基于服务消费时候的消息输入参数进行动态的服务路由。
  消息传输
  需提供消息传输的基本功能:服务使用方先调用注册发布在服务共享平台上的服务并以消息形式传入服务调用请求,平台将接收到的调用请求转发给服务提供方,服务提供方完成操作后先将服务响应消息传递给平台,再由平台将服务响应转发给服务使用方,整个过程都是通过消息进行传输。
  异步分发和消息发布订阅
  在实际业务场景中,经常出现"一对多"的情况,ESB平台需要支持异步分发功能,只需在平台中配置异步分发服务,即可实现异步分发功能。同时也支持1对多的消息发布订阅功能。
  协议和消息转换
  对于已经上线稳定运行的重要功能,这些功能使用的数据交换协议可能有很多种,需解决不同的协议的对接,服务共享平台必须支持协议转换功能,服务共享平台需支持在大部分标准协议间进行转换,包括JMS、HTTP(S)、TCP、FTP、POP3/SMTP等。
  为了统一控制及更好地进行日志管理,服务共享平台需要为每一次交易产生的日志编号,需要在消息流中插入一个唯一编号,此时需要用到消息转换功能。因此服务共享平台需要提供消息转换能力,支持在消息传输过程中对消息进行操纵及转换,包括消息元素新增、替换及删除。
  遗留系统适配器
  各业务系统开发的服务需要接入并发布到服务共享平台上,采用的技术可能是Webservice、HTTP、HTTPS、FTP等,服务共享平台必须提供各种标准适配器,能够将按业界开放标准开发的服务注册到平台上。所以平台必须提供各种标准适配器,可以将按照标准协议开发的服务适配接入到平台上,其中包括了数据库,FTP,MQ,JMS,大数据,平面文件,商用ERP套件等各种适配器。
  服务请求过滤及流量控制
  服务共享平台需要支持按预定义的规则对服务调用请求进行过滤,对于未允许使用服务的调用请求可以过滤,从而保证服务数据安全;平台还需要支持对服务进行流量控制,支持对服务分配流程配额,对于超出流量配额的调用进行限制,从而避免某些大流量调用影响整个平台。
  开发工具及语言支持
  服务共享平台必须支持cxf、axis、python soapbox、xfire、.net等服务开发框架、工具及语言,只需根据预先定义的服务契约进行开发,即可顺利接入平台。
  服务监控和运行统计
  服务共享平台必须支持服务监控,可以方便地监控到服务状态,通过详细的输入输出日志,可以快速定位到运行异常服务原因。服务运行统计包括了服务运行次数,运行时长,运行并发量,运行异常错误等多维度的服务运行统计数据信息。ESB总线核心架构分析
  基于对开源ESB产品的研究,以及对Oracle和Tibco的ESB总线产品的实施经验积累,对ESB总线的核心产品架构有了进一步的清晰认识,将ESB的核心架构整理为上图,上图中看到的内容也是作为一款完整的ESB服务总线产品所必须要具备的功能。
  首先整个架构体系里面分为三个组件或子系统,即偏开发态的设计器,偏运行态的ESB核心引擎和SOA治理管控平台三个方面的内容。以上三者组合和集成形成一款完整的ESB服务总线产品。对于三者之间的关系可以简单的描述为:
  ESB总线引擎和服务运行环境
  首先对于ESB总线引擎是一个完全相对独立的内容,即常说的ESB的Server端,一个完整的ESB引擎一般都会集成消息中间件的能力。类似ServiceMix的ESB可以看到核心是基于OSGI运行框架下的ActiveMQ+CXF组件来实现基础核心功能。没有设计器和管控平台,引擎也可以独立部署和运行,即可以自己写代码或写配置文件,将开发好的服务包部署到ESB引擎环境里面。
  一个ESB引擎本身也需要部署在application server里面,即引擎可以部署在类似weblogic,jboss或tomcat等各种中间件容器中。而对于很多开源的ESB可以看到引擎本身已经集成了更加轻量的Jetty作为服务运行容器。对于单独的引擎应该是不需要DB数据库的,即ESB服务运行的log日志审计可以存储在服务端的log日志文件中,只有当安装了管控平台后,我们可以在server上部署代理,准实时的将运行日志信息采集和存储或db数据库。
  ESB设计器和服务开发环境
  其次是ESB设计器,设计器是属于开发和设计态的一个内容,重点则是对http,rest,已经服务+DB,消息等各种内容进行集成。当前类似talend和mule等都提供了很强大的服务设计器能力。即我们常说的服务代理,http和soap服务集成,数据库适配,路由,消息集成和适配,分支和条件判断,异常处理,任务作业,组合服务等都是设计器需要支撑的核心能力。
  设计器设计完成后的内容可以导出为部署包,对于部署包则可以部署到ESB服务引擎中。当前的做法主要有两种,一种是在设计器中本身就提供连接到服务器进行远程和自动部署的能力,另外一种做法则是在SOA管控平台里面提供服务部署和管控的能力。
  设计器往往是给服务开发和设计人员使用,目的是为了简化服务的开发和封装,提升开发效率,一个开放的架构模式最好的方式就是脱离了设计器仍然可以通过其他手工方式进行服务的开发和封装,而不是被设计器绑定。而对于设计器本身的输出,一种是转化为了普通的java代码,还有一种方式是设计器的输出为xml配置文件。可以看到对于xml配置文件这种方式更加方便和解耦,在设计器产生部署包或测试运行的时候,设计器端首先是读取xml配置文件的内容再动态生成和部署服务。
  SOA管理治理-覆盖SOA全生命周期
  最后一个内容是SOA管控平台,主要的作用是实现服务的全生命周期管理,包括服务的元数据管理,服务目录库,服务的申请,服务的开通和鉴权,服务运行日志审计和监控,服务运行分析,服务预警,服务SLA等各种功能。即SOA管控平台提升了对ESB引擎本身的管控和治理能力。
  管控平台本身也是相对独立的内容,可以看到对于管控平台和ESB引擎本身是彻底解耦的,即如果实施了管控平台,则只需要在ESB引擎上启动管控代理和相关的配置参数,在这种模式下ESB引擎本身运行态的运行信息即可以准实时的采集到管控平台中进行存储和统计分析。
  当然,对于管控平台产品的服务权限管控,服务动态路由设置,服务流量控制等内容,也会影响到ESB引擎在运行态的运行。而通常ESB总线的做法则是对于log日志,安全,流量控制等都是ESB总线的inbound和outbound上的可插拔式的拦截器,通过这种组件动态装载和配置启用的模式来彻底实现管控平台和ESB引擎的解耦。
  对于ESB总线产品本身也应该是符合SOA架构的,即需要实现组件化和服务化,实现服务组件本身的动态加载和热部署,当前类似servicemix在这点上的做法是值得借鉴的,即基于karaf+osgi模式来实现一个组件化的运行框架和环境,极大的方便后了整个运行态的动态管控能力。
  欢迎关注@人月聊IT 分享SOA,微服务,DevOps平台规划和建设。

38岁日本女演员公开魔鬼式自律,引人惊叹第一条就做不到你的早晨是怎么过的?赖床到9点然后无精打采地起床上班不仅困还工作效率极低?早晨是一天之中效率最高的时刻那怎么安排早上的时间才能既充实自己又获得满满元气呢?日本女演员高山都的早起记录74岁婆婆可乐上瘾,40年狂喝37。5吨当补品这么喝没事?如果问年轻人,最喜欢的饮料是什么?可能有95的人都会回答可乐。作为肥宅快乐水,无论是夏天冬天打火锅吃烧烤,只要配上它,一口下去味蕾爆炸,哪只是快乐水,简直是生命的汽油!不止年轻人,花500万养锦鲤,厕所贴满黄金,日本单亲奶爸豪宅曝光去年有日本媒体计算过,如果一个日本人要活到90岁,至少需要攒够2000万日元(约126w人民币)的退休金。对于这个统计结果,日本路人纷纷表示害,这有啥,不活那么久不就行了嘛?存款不情商高的人都是这样聊天的,你呢微信聊天,基本上是我们每天的必修课,但是怎么聊天才能显得你情商很高呢?一起来学习一下微信社交礼仪规范吧。多打一个字不会死好我同意了好哒,好的我开心地同意了嗯我知道了嗯嗯我愉快的知道细看后发现真人秀桃花坞的社交场面看似尴尬,实则很现实新综艺五十公里桃花坞于5月23日上线,这档节目主要邀请了15位不同年龄不同性格的嘉宾,在桃花坞进行21天的群居生活。从初次见面到后续相处合作进行一次真实的社交记录。15位嘉宾分别是八月,再见九月,你好!淡去了春暖花开的明媚,褪去了夏日炎炎的热烈,温凉静美的秋终于来了。八月,再见!九月,你好!告别八月,也请你跟内心的浮躁说再见,告诉自己,每一个美好日子就是今天。好好拥有今天,也好好中餐厅第三季开播之后矛盾不断,秦海璐被质疑情商低?中餐厅第三季已经以本周五晚迎来了首播,这一季的常驻嘉宾分别是前店员黄晓明王俊凯,新加入成员秦海璐杨紫,以及主厨林述巍五人组成,按理说这样强大的阵容应该很有看点才对,但节目刚开始似乎赵丽颖王一博主演的有翡官宣定档,12月16日惊喜来袭它来了它来了,它带着好消息走来了!赵丽颖王一博主演的有翡官宣定档,明早(12月16日)9点上线!侠骨丹心,江湖道义为己任一朝风月,从此天涯信骨存。有翡明日9点,全员集结,江湖等你!当坑爹的娃(嗯哼)遇上坑娃的爹(吴尊),火花不断哦看过爸爸去哪儿第五季的朋友都知道,嗯哼真的是用实力演绎了什么叫做坑爹,杜江都被嗯哼坑的无可奈何。而吴尊则是一个坑娃的爹,neinei就经常被坑,就像节目所说的人在旁边坐,坑从天上来哈士奇那位同志,你一定是隔壁萨摩耶家混进来的哈士奇中出了个白色的小伙伴,宝宝们纷纷怀疑是隔壁萨摩耶家的。白色哈士奇表示自己的的确确是纯纯的哈士奇,是妈妈肚子里的墨汁不够用啦,我才变成这样的。宝宝表示很无辜,不关我的事。哈哈其应采儿,一个能让大哥一秒变温柔的女人,小小春表示委屈陈小春,我们的山鸡哥,不知道有多少男生曾经崇拜过他,好像只要提到兄弟,山鸡哥就是兄弟与义气的代名词。在我们的印象里,陈小春一直都是严肃的酷酷的,是硬气的男子汉,即使对待小小春,他也
扫黑风暴混沌店里老板娘的作用无可替代最近热播扫黑风暴这部电视剧已经快接近尾声,其中的细节可以说很感人,所以很多观众在观剧的时候,都带着放大镜仔细观看,而对于剧中人物得特点,甚至精确到每一个部位,都不会轻易放过,之前大给新男友的8个礼物创意男人是出了名的难买礼物。你不能只给他们买一些巧克力和一束漂亮的花来让他们开心。他们对这样的东西并没有真正的印象。所以女孩不得不花很多时间思考如何才能给男朋友买到合适的礼物。现在你必提携吴秀波,嫁5婚名导张黎,江湖儿女刘蓓为何败给了宋佳?在影视圈中,有一些组合是非常令人记忆深刻的,可以看看周星驰和吴孟达的组合,给无数人带来了经典,更是引得观众捧腹大笑。还有春晚上的赵本山高秀敏范伟更是被称之为黄金铁三角,他们的组合,39岁宋佳洗白成功了?曾因黑历史被骂,现在终于扬眉吐气兄弟姐妹们大家好呀!美好的周一,要跟着有料君一起看八卦!话说最近的电视剧大家有关注吗?有料君最近被一部叫做白色月光的电视剧给洗脑了,这是部讲述女性婚姻生活的悬疑剧,由宋佳,喻恩泰,小舍得,佛系妈宋佳PK鸡血妈蒋欣,冷嘲热讽中揭露原生家庭的不幸这边陪你一起长大还没有更完,那边同样家庭教育题材的小舍得上线。小舍得第一集,就把所有的主要人物集合在一起,在饭桌上开启一次小高潮。张国立饰演的南建龙,张罗自己的亲生女儿带着女婿和外39岁宋佳终于放开穿,镂空上衣美得气质高级。每个喜欢追剧的人都能够熟知电视剧里的人,但是却不知他们在现实生活中的名字。宋佳就是这样一位默默无闻的人,出演过很多的电视剧和电影,但是很少能够被人们记住她的名字。尽管如此,他一直在被抖音里白色月光的片段吸引,确切说是被宋佳吸引宋佳非常适合演那种剧情有激烈冲突的角色,她适合热烈适合激情适合挫败,她不适合一帆风顺,不适合安逸和稳定。这是一部很短的电视剧,仅仅十二集,但内容却并不少,它是讲一个男人和三个女人的穷山恶水出刁民经济越落后的地区,人性往往越阴暗每天耕耘最有趣最实用的心理学怎么看待民生淳朴?远离城市的喧嚣之后,没有过多的利益牵扯,远离城市的偏远地区,真的有着更加纯净的人性光辉吗?并不是穷山恶水出刁民这句话一点也不假,不管是陈晓娜扎新剧官宣!这次他们能否成功逆袭?3月3日,由陈晓古力娜扎领衔主演的电视剧无与伦比的美丽在官方微博宣布杀青回首是一路汗水,抬头是更清晰的远方。我们用光影勾勒梦想,用汗水追逐远方,我们的努力就是无与伦比。杀青快乐,期竟因超点人数太多致系统崩溃,网友温客行的命,是我们买回来的3月23日,热播电视剧山河令迎来超前点播大结局。还没到播出时间,剧迷们就已经迫不及待了。结果,由于冲向平台点播观看的人次太多,播放平台一下子缓不过来,系统崩溃了。小编表示一脸震惊啊马思纯疑似曝光新恋情,网友着急你可擦亮眼睛吧最近,白敬亭和马思纯的你是我的城池营垒正在热播,邢克垒米佧两人的甜蜜CP让人嗑得停不下来。但在今天,马思纯和她的现实男友登上热搜,有媒体拍到马思纯和盘尼西林乐队的主唱小乐张哲轩十指