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

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平台规划和建设。

钟丽缇为张伦硕庆生,却被二女儿抢了风头,考拉被比了下去前不久,女星钟丽缇为老公张伦硕庆祝生日,一家四口出镜,少了大女儿。钟丽缇发了很长的微博向张伦硕表达爱意,看得让人羡慕,张伦硕则简单回复,谢谢老婆。其实张伦硕和钟丽缇经常在微博上分享还记得郭涛儿子石头吗?14岁身高180,一看体型就知道是亲生的还记得爸爸去哪儿里的石头吗?也就是演员郭涛的儿子郭子睿,如今14岁石头比郭涛高了。近日,郭涛在网上晒出与儿子石头的同框视频。在画面中,我们看到了许久未露面的石头。郭涛穿着白色短袖和42岁秦岚至今未婚,因为心里装了个他?怪不得看不上侯明昊刘以豪大美女秦岚过生日了,很难看出她已经42岁了。岁月从不肯在美人脸上留下痕迹,照片中秦岚依旧美丽知性优雅。照片中秦岚满满的少女感,笑容好治愈,女神这状态太可了。一定要将美丽与幸福进行到杨洋晒王彦霖伴郎合照,长发尹正抢镜,与张蓝心分手后瘦到认不出昨日,王彦霖与大学同学艾佳妮大婚,除了黄子韬在微博上看好兄弟王彦霖婚礼现场直播流泪后,杨洋更是晒出王彦霖的伴手礼和伴郎照。王彦霖婚礼的伴郎由韩东君王鹤棣尹正等人担任,其中长发尹正真奥运会汪顺颜值高,网友游泳队帅哥多着呢,宁泽涛能排第几?看了这一届奥运会后发现我们的游泳健儿一个个又高又帅,比如刚拿下金牌的汪顺,192的大高个,颜值真是高!中国游泳队还有很多高颜值的帅哥,比如刚拿下混合接力银牌的闫子贝和徐嘉余。闫子贝王思聪朋友圈辟谣吴亦凡事件,捐款金额让人称赞!网友评论有意思近日,王思聪捐款500万驰援河南,并辟谣网传朋友圈点评吴亦凡事件。目前还是要以关注灾情为重,感谢在紧急时刻能够贡献自己的力量!早前,有网友爆料王思聪在朋友圈发文称凢凣这事别问我,我金靖幽默回应恋情,称不配与马龙同上热搜,网友谐星独特幽默近日,金靖被拍到和舒奕橙深夜同回小区,路上金靖掐了一下舒奕橙的腰还摸了摸背部,互动十分亲密,因此两人的恋情呼出水面。本以为金靖会大大方方承认恋情,因为之前在向往的生活中,金靖承认自同居男女,为什么最怕酒肉关系?今天想跟大家聊个憋了挺久的话题2020年虽然已经过去,却留下了一个扎心的词酒肉夫妻。2020年普遍艰难,我们的爱情婚姻也经受了很多外来的考验。还记得年初那段时间,很多情侣夫妻因为长已婚女性私密网站18万家庭主妇,在线杀夫我希望丈夫马上去死,我每天都在期盼着。求求你快点去死吧!世界上那么多好人都死了,你这种人怎么还能活着?这两句话,代表了18万主妇的心声,赫然出现在日本某网站首页。这是日本著名的杀夫下辈子再也不敢生儿子了啊啊啊啊啊啊本文素材来自抖音阿里麻麻图片及视频已获授权感谢kiki接受窈窕妈妈采访Kiki是我见过最狠的二胎妈妈。别人家妈妈养孩子,哄着宠着,捧在手心里。她养孩子,先立规矩。大儿子3岁时,准备孩子3岁,无性婚姻3年分床睡的夫妻还好吗?朋友说,婚姻中她做过最错误的决定,就是跟老公分床睡。生完孩子后,朋友妈妈帮忙带娃,体恤女婿上班辛苦,就建议他们分房睡。没成想,这一分就是10年。朋友妈妈3个月后回了老家,老公的投入
原来世上最美丽的笑容,就是充满爱心的笑容原来世上最美丽的笑容,就是充满爱心的笑容!这是周星驰在唐伯虎点秋香中的一句台词。也可以理解是人间最美的就是充满爱心的笑容,特别是一个乐意帮助别人的出自内心的笑容,这是最美的。在这部错了就是错了,不用找理由刚刚在头条看了一篇文章,关于潘长江问题的热议,文章说,当广大网友质疑潘长江卖假货的问题出现后,亲朋好友都远离他,只有黄晓明站台支持他,这才是真正的朋友,黄晓明是谁,难道他支持就是正还在羡慕港星抗老?看看生图,这才是他们最真实的模样近些年,经常能听到网友感叹香港艺人抗老,好像吃了防腐剂一样冻龄,从而感叹他们生活自律演戏敬业,品学兼优等等,但其实是人就会变老,这是不可逆的,说他们抗老某种程度其实也带了一定滤镜。成名前个个惊艳,走红后却变路人脸,说好的红气养人呢?明明过得好好的,却已经开始被大家怀念的娱乐圈明星,除了小李子之外,又多了一个马思纯。看多了电影里一顿饭吃一大盘炒牛河,再加八九个烧麦拼水晶虾饺的她。以及出席活动时胖到几乎认不出的她杜若溪嫁男神偶像严屹宽,两度流产生女,风光幸福背后有艰辛有生之年,欣喜相逢,点击上方关注一起抒写更多温暖的故事。严屹宽剧照严屹宽是知名影视演员,首先他帅气的长相被誉为建模脸,他是众女神心目中的颜值天花板,曾与钟汉良霍建华乔振宇被称为天涯被刘海坑惨的9位明星有人丑上热搜,有人看上去好像老了10岁相比于现代剧,古装剧的造型要更考验演员的颜值与身材,一层又一层的戏服套在身上,难免会显得臃肿,而不适合的发型也会暴露颜值短板!譬如赵丽颖任嘉伦等当红明星,都试过带有刘海的古装造型,助理手接漱口水,跪地伺候穿鞋,为难打工人,明星哪来的优越感?不知道大家有没有发现,这两年热搜上时不时就会来个词条,心疼XXX(明星)。前两天,邓伦爆出税务丑闻时,心疼倪妮就登上了热搜。起初大家看了也就图一乐,直到有人站出来,一语点醒梦中人。5位靠卖惨博眼球的明星,没有一个值得同情,张庭还不是最过分的如果不走进现实,只在网上逛一圈的话,你感觉最可怜的人大概就是明星。近几年,演技出众的老戏骨没流量,一心做慈善的艺术家没流量,反倒是有些明星频频因为卖惨而出了圈,既博得了眼球,又获取老好人傅彪18年前去世,葛优儿子我来养!冯小刚债我来还2005年8月30日,北京武警总医院。冯小刚徐帆韩虹杨立新丁志诚等人排成一道弧线站在病床边,表情默然。傅彪眼神迷离地看着四周,嘴巴微张,却说不出话来。恶性肿瘤已经压迫到了他的肺部,人世间里两次阻碍周家拍全家福的原因,却反映出自私和差距人世间里面,要说最大的遗憾,相信所有的观众都觉得是周家没有拍上一张全家福。尤其是看到人世间的39集,这绝对是人世间里面最好哭的一集,周爸周妈的离开,这绝对是周家最大的损失,父母在,颧骨饱满皮相完美的陈德容,为啥还不到50岁就如此憔悴都说美人在骨不在皮,好的骨相对抗衰来说很重要,前面我们也聊过好的骨相,就相当于好的承重墙。不过有的人就算是有好的骨相,饱满的颧骨和修长下颌骨,但是还是衰老的比较快,今天我们就来分析