根据近期对开源ESB产品的研究,已经对Oracle和Tibco的ESB总线产品的实施经验积累,对ESB总线的核心产品架构有了进一步的清晰认识,将ESB的核心架构整理为上图,上图中看到的内容也是做为一款完整的ESB服务总线产品所必须要具备的功能。

首先整个架构体系里面分为三个组件或子系统,即偏开发态的设计器,偏运行态的ESB核心引擎和SOA治理管控平台三个方面的内容。以上三者组合和集成形成一款完整的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设计器,设计器是属于开发和设计态的一个内容,重点则是对http,rest,已经服务+DB,消息等各种内容进行集成。当前类似talend和mule等都提供了很强大的服务设计器能力。即我们常说的服务代理,http和soap服务集成,数据库适配,路由,消息集成和适配,分支和条件判断,异常处理,任务作业,组合服务等都是设计器需要支撑的核心能力。

设计器设计完成后的内容可以导出为部署包,对于部署包则可以部署到ESB服务引擎中。当前的做法主要有两种,一种是在设计器中本身就提供连接到服务器进行远程和自动部署的能力,另外一种做法则是在SOA管控平台里面提供服务部署和管控的能力。

设计器往往是给服务开发和设计人员使用,目的是为了简化服务的开发和封装,提升开发效率,一个开放的架构模式最好的方式就是脱离了设计器仍然可以通过其他手工方式进行服务的开发和封装,而不是被设计器绑定。而对于设计器本身的输出,一种是转化为了普通的java代码,还有一种方式是设计器的输出为xml配置文件。可以看到对于xml配置文件这种方式更加方便和解耦,在设计器产生部署包或测试运行的时候,设计器端首先是读取xml配置文件的内容再动态生成和部署服务。

最后一个内容是SOA管控平台,主要的作用是实现服务的全生命周期管理,包括服务的元数据管理,服务目录库,服务的申请,服务的开通和鉴权,服务运行日志审计和监控,服务运行分析,服务预警,服务SLA等各种功能。即SOA管控平台提升了对ESB引擎本身的管控和治理能力。

管控平台本身也是相对独立的内容,可以看到对于管控平台和ESB引擎本身是彻底解耦的,即如果实施了管控平台,则只需要在ESB引擎上启动管控代理和相关的配置参数,在这种模式下ESB引擎本身运行态的运行信息即可以准实时的采集到管控平台中进行存储和统计分析。

当然,对于管控平台产品的服务权限管控,服务动态路由设置,服务流量控制等内容,也会影响到ESB引擎在运行态的运行。而通常ESB总线的做法则是对于log日志,安全,流量控制等都是ESB总线的inbound和outbound上的可插拔式的拦截器,通过这种组件动态装载和配置启用的模式来彻底实现管控平台和ESB引擎的解耦。

对于ESB总线产品本身也应该是符合SOA架构的,即需要实现组件化和服务化,实现服务组件本身的动态加载和热部署,当前类似servicemix在这点上的做法是值得借鉴的,即基于karaf+osgi模式来实现一个组件化的运行框架和环境,极大的方便后了整个运行态的动态管控能力。

ESB总线架构图(借用)相关推荐

  1. 【STM32】STM32F4系统架构

    00. 目录 文章目录 00. 目录 01. 系统架构 02. 总线架构图 03. 总线详解 05. 参考手册 06. 附录 01. 系统架构 主系统由 32 位多层 AHB 总线矩阵构成,可实现以下 ...

  2. STM32F0单片机快速入门八 聊聊 Coolie DMA

    1.苦力 DMA 世上本没有路,走的人多了,便成了路.世上本没有 DMA,需要搬运的数据多了,便有了 DMA. 大多数同学应该没有在项目中用过这个东西,因为一般情况下也真不需要这个东西.在早期的单片机 ...

  3. 揭秘 RocketMQ 新特性以及在金融场景下的实践

    2019 年末, RocketMQ 正式发布了 4.6.0 版本,增加了" Request-Reply "的同步调用的新特性." Request-Reply " ...

  4. STM32学习之总线与时钟

    前言 上一篇博客复习了C语言,这一篇博客主要是学习STM32F407中的总线与时钟,这一部分对计算机组成原理的知识有一定的要求, 这一部分极其枯燥,但是十分重要,望仔细学习 学习资料来自:STM32F ...

  5. 带你了解PCIE通信原理

    01.PCIE简介 PCI-Express(peripheral component interconnect express),简称PCIE,是一种高速串行计算机扩展总线标准,主要用于扩充计算机系统 ...

  6. 1年sql数据库经验,却说数据模型一文不值?你还没懂数据仓库

    平时在工作中,一般都会遇到拿着 Excel 直接分析,给报表的场景,或者更近一些互联网的分析工作,会用 SQL 取数,再用 Excel 分析. 那说到分析,就必然离不开BI.数据仓库.数据建模等了,s ...

  7. rocketmq新扩容的broker没有tps_揭秘 RocketMQ 新特性以及在金融场景下的实践

    2019 年末, RocketMQ 正式发布了 4.6.0 版本,增加了" Request-Reply "的同步调用的新特性." Request-Reply " ...

  8. STM32F4的基础介绍

    STM32F4的基础介绍 1. 前言 2. STM32F4总线架构 3. STM32F4时钟系统 3.1 时钟树 3.2 时钟初始化 3.3 时钟使能 参考文献 1. 前言 上周了解了Cortex-M ...

  9. 总线概述及常见总线(转)

    一. 总线概念 所谓总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道.总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,可以将计算机系统内的多种设备 ...

最新文章

  1. ASP.NET中用healthMonitor属性用
  2. 数据结构----内存分配问题
  3. G41显卡Linux驱动,Intel最新G41/G43/G45集成显卡驱动下载
  4. ASP.NET把DataTable转成XML文件的函数
  5. sql not in 用法_SQL 语法速成手册
  6. java正则表达式空行_正则表达式删除空行
  7. java 8 排序反转_Java 8 排序小结
  8. python Json的一点收获,自定义序列化方法
  9. Java web后端7JSTL
  10. 关于Eclipse无法显示package Explorer 内容的解决方法
  11. Fiddler | fiddler的https设置/证书失效怎么办
  12. 第一章:恶意软件静态分析基础
  13. 用 construct 2 制作简易弹幕游戏
  14. jsp值choose标签
  15. html2d动画,HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
  16. 安全狗入选信通院“业务安全推进计划”名单
  17. 数据库设计经验谈之一
  18. 神经网络的图谱是什么,图神经网络和神经网络
  19. Windows10 Emacs-SML开发环境搭建
  20. 现代IT项目中的需求管理如何做?

热门文章

  1. performSelector使用教程
  2. 计算机专业毕业论文java毕业设计开题报告基于SpringBoot的阳光线上交友系统
  3. 飞鸽传书、freeeim、ipmsg区别联系
  4. 图示数学之: 克莱因瓶之谜
  5. 电脑重启bootmgr_Windows系统启动不了如何修复?Bootmgr/NTLDR is missing解决方法
  6. Office Word 护眼模式设置
  7. 谭浩强C++习题答案
  8. 虚拟现实,带你走进一个不一样的科学探索世界
  9. 社招前端一面react面试题汇总
  10. JavaFX报错:Class FIFinderSyncExtensionHost is implemented in both