ESB总线的核心架构
根据近期对开源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模式来实现一个组件化的运行框架和环境,极大的方便后了整个运行态的动态管控能力。
--------------------------------------------------------------------------------
备注:深圳市远行科技股份有限公司是一家专业从事SOA和ESB规划咨询,建设实施的高新技术软件企业,2016年在新三板挂牌上市。曾经成功建设和实施了中国移动集团,中国联通集团,江西移动,山东移动,贵州移动,TCL集团,唐人神,华星光电,中油中泰多个大型ESB项目。
详细情况请参考远行科技SOA宣传子网站
http://soa.vispractice.com:82/chanzhi/
ESB总线的核心架构的更多相关文章
- 几款开源ESB总线的比较
现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...
- 现有一些开源ESB总线的比較
现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,如今已经是百花争鸣的景象了.如今我就对现有的各种开源ESB总线根据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. 一. ...
- 几款开源ESB总线的比较(转)
现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...
- [转帖]intel发布会之前,漫谈CPU核心架构:CCX、Ring Bus、Mesh
intel发布会之前,漫谈CPU核心架构:CCX.Ring Bus.Mesh https://baijiahao.baidu.com/s?id=1607585351741429318&wfr= ...
- 浅谈 jQuery 核心架构设计
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
- 谈一谈jQuery核心架构设计(转)
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
- 大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- netty源码解解析(4.0)-1 核心架构
netty是java开源社区的一个优秀的网络框架.使用netty,我们可以迅速地开发出稳定,高性能,安全的,扩展性良好的服务器应用程序.netty封装简化了在服务器开发领域的一些有挑战性的问题:jdk ...
- Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
转自:http://blog.csdn.net/iamdll/article/details/20998035 分类: 分布式 2014-03-11 10:31 156人阅读 评论(0) 收藏 举报 ...
随机推荐
- typroa 和markdown基操
目录 标题 一级标题 二级标题 字体 图片 来插入图片,如在同意文件夹上,可直接加图片名 数学公式 编辑表格 标题 一级标题 二级标题 三级标题 无序标题 *加空格,无序标题 也可以使用ctrl = ...
- Emacs用JDEE编写Android程序
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/sheismylife/article/details/24842669 前文介绍了怎样用Maven构 ...
- js表格上下移动添加删除
html部分 <div onclick='fn()'>加</div> <table width="250" border="1" ...
- EasyUI 网格 一主多从 从表使用自定义树状展开
<table id="Table1" class="easyui-datagrid" title="标题" style="w ...
- jq 操作CSS
方式有两种,一种是操作元素className间接控制样式,一种是设置css属性值直接控制样式. jQuery 属性操作方法.jQuery CSS 操作函数 1.addClass() $(selecto ...
- docker学习笔记(总纲)
阿里容器Docker简介 什么是Docker 为什么要用Docker 基本认识 Docker EE/Docker CE简介与版本规划 镜像 容器 仓库 数据卷 阿里容器服务的基本概念与其它名词解释 C ...
- 如何用django框架完整的写一个项目
实现目标及功能,增删改,并且实现搜索,分页,日期插件,删除提示,以及批量导入等功能 软件版本: python3.5 django1.11 一 用pycharm创建一个项目,名字自定义 二 编辑url ...
- js获取屏幕相关值
<html><script>function a(){document.write("屏幕分辨率为:"+screen.width+"*" ...
- python MySQLdb用法,python中cursor操作数据库(转)
数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_N ...
- 22-2 模板语言的进阶和fontawesome字体的使用
一 fontfawesome字体的使用 http://fontawesome.dashgame.com/ 官网 1 下载 2 放到你的项目下面 3 html导入这个目录 实例: class最前面的f ...