- 一、概述
- 1.1 ESB介绍
- 1.2 研发背景
- 1.3 产品定位
- 二、平台架构
- 三、平台特点
- 3.1 中国式复杂报表的自定义报表平台
- 3.2 可视化多层次工作流技术
- 3.3 用户信息传输方式的综合集成
- 3.4 数据缓存层技术
- 四、平台支持的通讯类型
- 4.1 支持传输类型
- 4.2 支持的数据库类型
- 4.3 支持的文件类型
- 4.4 支持的脚本类型
- 五、平台技术参数
- 5.1 服务端配置要求
- 5.2 客户端配置要求
- 5.3 操作主机配置要求
- 5.4 客户端性能指标
- 六、ESB配置管理
- 6.1 配置前言
- 6.2 MQ配置管理
- 6.2.1 WebSphere Eclips安装
- 6.2.2 MQ资源管理器安装配置
- 6.2.3 WebSphere MQ资源管理器连接MQ服务器配置
- 6.2.4 配置消息队列
- 6.3 ESB服务端配置
- 6.3.1 Web登录方式
- 6.3.2 应用域配置
- 6.3.3 机构配置
- 6.4 ESB任务配置
- 6.4.1 Class文件生成
- 6.4.2 格式和概念
- 6.4.3 任务组配置
- 6.4.4 文件任务配置
- 6.4.5 数据库任务配置
- 6.4.6 数据库到文件任务配置
- 6.4.7 文件到数据库任务配置
- 6.4.8 本地脚本任务配置
- 6.5 任务部署
- 七、ESB客户端管理
- 7.1 客户端部署
- 7.2 客户端操作
- 7.2.1 操作界面说明
- 7.2.2 菜单区
- 7.2.3 任务窗口区
- 7.2.4 执行日志输出窗口
- 八、日常维护
- 附录一
- 附录二
最后更新:2021年12月08日
文档由研发中心 @谢志胜 提供。
一、概述
1.1 ESB介绍
企业服务总线(EnterpriseServiceBus,ESB)从面向服务体系架构(Service-OrientedArchitecture,SOA)发展而来,是传统中间件技术与XML、Web服务等技术结合的产物。
ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务级别上动态的互连互通,是一种在松散耦合的服务和应用之间标准的集成方式。它可以作用于:
- 面向服务的架构—分布式的应用由可重用的服务组成;
- 面向消息的架构—应用之间通过ESB发送和接受消息;
- 事件驱动的架构—应用之间异步地产生和接收消息。
ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为低廉的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
ESB可以实现如下基本功能:
- 服务的MetaData管理:在总线范畴内对服务的注册命名及寻址进行管理。
- 传输服务:确保通过企业总线互连的业务流程间的消息的正确交付,还包括基于内容的路由功能。
- 中介:提供位置透明的路由和定位服务;提供多种消息传递形式;支持广泛使用的传输协议。
- 多服务集成方式: 如JCA,Web服务,Messaging ,Adapter等。
- 服务和事件管理支持: 调用服务的记录、测量和监控数据;提供事件检测、触发和分布功能。
1.2 研发背景
无论是政府,中小银行还是各企业客户,他们的IT系统每年都在原有基础上不断扩建。整个IT系统变得越来越庞大而复杂,各业务系统之间的对话,继承,数据传递变得尤为复杂,数据交换业务中的问题日益突出。
这些问题主要体现在下面几个方面:
- 传输标准不统一。
- 传输方式比较单一。
- 传输效率低。
- 数据缺乏有效管理。
- 通讯任务管理困难。
- 缺乏有效监控手段。
针对这些问题,按照集约化信息建设的发展方向,同振公司对各系统的数据来源、流向、内容进行了深入的调查和研究,提出了开发企业服务总线(ESB)的计划。
1.3 产品定位
连接所有的企业内部系统和企业以外的外联机构,创建一个面向连接并提供消息/服务交换的平台。同振ESB项目主要应用于大型零售业,属于上海市软件和集成电路产业发展专项资金中重点支持的项目。
二、平台架构
平台架构图
ESB 是传统中间件技术与XML、Web服务等技术相互结合的产物,ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
本产品是基于IBM WebSphere MQ和MB,为异构IT环境中的统一连接和转换开发的,一种基于平台的ESB。
三、平台特点
系统所有的功能都是一个独立的服务,可供第三方进行授权访问,访问的协议支持SOAP、XML、JSON等格式。通过统一的系统服务总线,使子系统能够以接口的方式提供服务。
3.1 中国式复杂报表的自定义报表平台
- 基于web2.0 技术, 给用户很好的交互性和友好的用户体验;
- WEB方式的EXCEL界面风格和操作习惯,可以在服务端直接用EXCEL发布报表到WEB前台;
- 提供强大的跨数据库自定义功能:通过商业逻辑和数据展现分离,提供灵活强大的自定义功能。同一张报表可以从不同的数据库获取数据。一般常用的报表可以通过一个或几个SQL的组合来定义数据抽取逻辑,并通过EXCEL模板来定义数据的展现格式。对于复杂报表如果自定义SQL不能实现,还可以通过存储过程或JAVA代码来实现复杂的逻辑,从而具有很好的扩展性和适用性,可以灵活实现中国式复杂报表;
- 基于开源技术的同振自主知识产权,避免国外大型商业智能软件的巨大版权费用。
3.2 可视化多层次工作流技术
本系统使用的工作流技术基于JBPM的工作流技术框架,从业务流程定义工具、工作流引擎、工作流构件库、工作流管理监控、工作流客户端等,用户可以比较直观的以图形化的方式操作和监控。引擎的设计遵循WfMC提出的工作流参考模型标准的同时,也加入了中国管理特色的需求。在本系统中,对于相同业务模块,系统可根据不同部门或子公司的不同流程要求配置成不同的工作流模式,并可以同时并存,以支持企业的差异化管理。
3.3 用户信息传输方式的综合集成
根据被传输信息的属性要求,通过不同传输方式(自动传真、手机短信,电子邮件、EDI接口、WEB下载等)的有机配合,使系统传输信息能方便、正确、及时的传送到信息接收人或子系统中。
3.4 数据缓存层技术
本系统在架构上增加数据缓存层,它位于WEB服务器和数据库服务器之间。其唯一职能是在内存中建立被频繁请求数据对象的副本。如此一来,不通过访问数据库也可以向WEB应用供给数据。比如,100个用户请求同一份报表数据,以前需要查询数据库100次,而现在只需1次,其余都可从缓存数据中获得。当然如果页面变化,缓存的数据必须从内存擦除,然后重新从数据库获取。但在此之前,数据库的压力已经大大减轻了。
目前我们采用了开源的缓存框架memcache进行缓存管理,memcache支持多个应用服务器的缓存共享和集群,它已经过成千上万的千万级访问量应用的考验。我们在支持常见的时效缓存(过时失效)策略的同时,还自创了DCN(Data Change Notification)缓存策略,DCN策略只有在数据库的关联表数据发生变化时才会更新缓存,从而彻底解决了传统时效缓存策略的不能及时刷新缓存的缺点。比如,有个复杂的查询,需要执行30秒才能产生结果,且用户要求每次查询必须是即时的数据。如果用传统的方法,再好硬件投资也不能解决大用户数的并发查询,然而利用了DCN缓存策略,只要第一个用户查询后,数据表没有变化,这个查询的缓存就一直有效,从而大大降低了数据库的访问量,使极少的硬件投资就能应付高并发量的访问。
四、平台支持的通讯类型
4.1 支持传输类型
- 文件到文件
- 数据库到数据库
- 数据库到文件
- 文件到数据库
4.2 支持的数据库类型
- Impala
- Kudu
- MySql
- PostgreSQL
- Oracle
- Sybase
- SybaseIQ
- SqlServer
- DB2
- Informix
- Derby
4.3 支持的文件类型
- TXT
- CSV
- XML
- DBF
- EXCEL
支持多种分隔符:分号,TAB,ESC
4.4 支持的脚本类型
- JavaScript
- Groovy
五、平台技术参数
5.1 服务端配置要求
数据库服务器: 处理器(CPU)2.0 GHz/4核或以上,内存32G或以上,硬盘500G或 以上,Linux5以上,Oracle10G或以上。
应用服务器: 处理器(CPU)2.0 GHz/4核或以上,内存16G或以上,硬盘500G或 以上,Linux5,数量3台或以上,支持集群配置。
5.2 客户端配置要求
硬件需求:处理器(CPU)2.0 GHz或以上,内存4G或以上,硬盘100G以上
操作系统:WinXP/7/10/2003/2008 x64
5.3 操作主机配置要求
硬件需求:处理器(CPU)2.0 GHz或以上,内存4G或以上,硬盘100G以上
操作系统:WinXP/7/10/2003/2008 x64
浏览器 :IE8或以上(开启兼容模式)
5.4 客户端性能指标
客户端是采用Java语言开发,支持多线程。因此相对而言,客户端CPU性能越高,内存越大,客户端处理能力就越强。
六、ESB配置管理
6.1 配置前言
配置流程为:Web端配置任务,部署任务。通过MQ/MB发送到ESB客户端。客户端接收到消息包,最终生成任务执行。
数据路径如下图:
消息路由服务器(MQ/MB)主要是解析消息包来源和目标信息,确定消息包是发送到哪个客户端。
6.2 MQ配置管理
6.2.1 WebSphere Eclips安装
执行\WebSphere_MQ_V7.0.1\Prereqs\IES\setup.exe。
选择“简体中文”,点击确定,下一个窗口继续点击“下一步”。
选择接受协议条款,点击“下一步”。
程序文件安装位置,一般选择默认,点击“下一步”。如需定制,点击更改
点击“安装”。
等待安装结束,点击“完成”,结束安装。
6.2.2 MQ资源管理器安装配置
打开安装文件夹,执行setup.exe。
选择“WebSphere MQ 安装(I)”,安装语言选择“简体中文”,然后点击“启动 IBM WebSphere MQ 安装程序”。
选择接受协议条款,点击“下一步”。
选择“定制”,点击“下一步”。
程序文件安装位置,一般选择默认,点击“下一步”。如需定制,点击更改。
数据文件安装位置,一般选择默认,点击“下一步”。如需定制,点击更改。
IBM Global Security Kit文件安装位置,一般选择默认,点击“下一步”。如需定制,点击更改。
记录文件安装位置,一般选择默认,点击“下一步”。如需定制,点击更改。
点击各功能组件的下拉菜单(倒三角图标),MQ资源管理器选择“安装功能部件及其所有子功能部件(如果有的话)”,其余都不选择安装,点击“下一步”。
点击“安装”。
等待安装结束,点击“完成”,结束安装。
6.2.3 WebSphere MQ资源管理器连接MQ服务器配置
在开始菜单找到WebSphere MQ资源管理,点击打开该应用,关闭欢迎页面。
右键点击左侧“队列管理器”,单击“添加远程队列管理器”。
输入队列管理器名称(见机构配置项6.3.2),点击“下一步”。
在“主机名或IP地址”输入MQ服务器的地址或域名,“服务器连接通道”输入MQ服务器定义的通道名称,直接点击“完成”,结束配置。
连接成功后,将出现下面界面
6.2.4 配置消息队列
打开Websphere MQ资源管理器,选择相应的MQ服务器,点击右键选择“连接”
与服务器连接成功后,右击服务器下级菜单“队列”-“新键”-“本地队列”
出现新建本地队列导航名称栏里输入队列名称,该名称需要与机构配置中设置队列名一致,其余配置按照下列几图所示和实际情况配置。
集群配置,如果有,需要按照下图配置集群名称
点击完成,消息队列配置完成。
6.3 ESB服务端配置
6.3.1 Web登录方式
本产品仅支持微软Internet Explore 8.0以上的浏览器,并且将网站URL加入到兼容性列表中。
在浏览器中输入URL将出现下面的登录界面,输入用户名密码
点击确定进入管理界面。
注: 红框标注的工作窗口最多只能打开5个。
6.3.2 应用域配置
应用域是管理配置的区域,一般以集团,公司或者业态来命名
- 新增应用域名称
点击左边栏“基础资料->应用域管理”。在右边窗口,点击“新增”
在弹窗中,添加应用域名称
- 新增应用数据源
该配置定义默认数据源名称。
相同类型数据源可以配置多个不同的名称,避免一个机构配置多个相同类型数据源时,名称重复。
左边栏点击“数据源设置”-“应用域数据源”,右边栏点击“新增”
红框部分按照规划填写,其他按默认选择,数据源名称不能重复。
注:修改域数据源,相应的机构数据源信息不会发生改变。
6.3.3 机构配置
新增机构
点击左边栏“基础资料->机构配置管理”。在右边窗口,选择相应的应用域,例如“TZIT”,点击“新增”,弹出配置对话框。基本信息配置
选择相应的机构类型,例如“应用系统”;机构编码中输入符合企业编码规则的编码,例如“SN0001”;输入机构名称,例如“TestBranch01”;输入网络号,例如“T001”;输入登录密码,客户端平台根据实际情况输入。机构传输队列配置
点击“新增明细”,生成默认队列名称,一般发送和接收都使用同一个队列。机构数据源配置
点击“新增明细”,在新的条目中,“数据源名称”栏点击“…”,选择相应的应用域数据源,在“数据库URL”栏修改为数据源实际的信息,并填入正确的用户名,密码,点击“保存并关闭”,机构配置完成。机构作废
点击右边栏“基础资料”“机构配置管理”
选择任务,点击上方作废按钮,输入密码后即可作废任务。机构通讯组配置
(略)
6.4 ESB任务配置
6.4.1 Class文件生成
根据配置模板中的表结构信息通过mdesigner工具生成class文件。Class文件生成方法见附件1。
注:
1、 该工具支持的是标准SQL语法,非标准的语法需要全部替换。
2、 支持utf-8非bom格式。微软notepad是utf8 bom格式,建议使用editplus,nodepad+第三方编辑工具。
3、 不能有中文字符和标点符号。
4、 char,varchar2类型修改为varchar类型,number类型修改为numeric类型。
6.4.2 格式和概念
注:任务配置中,红色*号为必填选项,如果有文件夹选项的
任务配置中如果包含本节的内容,将不做详细阐述。
发送方ID和接收方ID
配置发送方和接收方网络号,以及相关数据源或者文件夹。
如果在该处未配置数据源或文件夹,将使用”基本信息”选项卡中的数据源和文件路径参数;如果在此处配置,则”基本信息”选项卡中配置失效。时间格式
* * * * * 5个*按顺序表示为“分钟 小时 日 月 周”
例:固定时间执行
10 8 * * * 每天8点十分执行。
例:固定几个时间执行
10 8,15 * * * 每天8点10分和15点10分执行。
10 8-15 * * * 每天8点-15点每小时第10分执行。
例:固定间隔时间执行
*/10 * * * * 每10分钟执行。
*/10 8-15 * * * 每天8点-15点每10分钟执行。
例:不同的时间间隔执行
*/5 11-14 * * *|*/15 0-11 * * *|*/15 14-24 * * * 每天在0-11点每隔15分钟执行,在11-14点每隔5分钟执行,在14-24点每隔15分钟执行。
主从任务配置
选择”基本信息”配置页中“主任务ID”搜索并选择任务名,新配置的任务将以该任务作为主任务,主任务执行完后再执行从任务。发送和接收目录
发送目录不指定,默认是在客户端主目录下upload
文件夹。
接收目录不指定,默认是在客户端主目录下download
文件夹。
发送或接收目录不写全路径,将默认在upload或者download
下。存储过程
注意执行存储过程的几个顺序:
“导出前”,“导出后”是在发送方执行。
“导入前”,“导入后”指的是在接收方执行。
格式:存储过程直接填写名称,如果是执行sql语句填写“sql:: 标准sql语。句” #注:不要在句末加分号,不带引号
- 表映射和字段映射
源、目标表或字段名称不一致,需要做相关映射配置。
表映射:有效范围选择ALL,分别填入源表和目标表名称。
字段映射:分别填入源和目标字段名称,生成
注:数据库文件,文件数据库,如果文件不带列名,在目标字段种填入目标字段的列号,列号从0开始。见下图:
消息包
消息包的大小根据数据量大小选择,数据量大,就选择大的数据包
消息体类型选择主表的class文件,即名字里不带id那个类型发送标志模式
数据传输完成对源数据的处理操作。
无操作:对源数据不做操作
注:数据量越大时占用内存越多,导致客户端宕掉。
删除数据:删除源数据
注:IQ数据库使用这种模式有问题。
发送标志字段:增量传输控制属性
在源表中专设的控制字段,一般使用0,1来确定数据发送属性。发送版本字段:增量传输控制属性
使用自增量字段或者具有自增属性的字段。
已发送的版本字段会在客户端通过文件记录,路径在ESB主目录\lib\backup。注:IQ数据库只能有INT自增量字段做版本字段,并需要在导出后存储过程中做truncate操作。版本字段如果是时间属性的,必须使用高精度的类型,例如:timestamp
导入导出脚本
脚本执行的顺序是以基本任务为基准的。基本任务即除了脚本配置之外所有的配置。基本任务导出过程的前和后就是导出前脚本和导出后脚本执行的位置,导入脚本同理。索引字段选择
采用索引字段,在ESB后台查询数据时可以提高查询效率。入下图示例:默认FROM语句
填写SQL关联语句。例如:
select distinct a from MarketpohCcSx as a left join fetch a.marketpodCcSxes as b
# 注意:不能用子表的字段做关联。
条件字段选择
相当于导出语句中加上Where条件。在条件选择中选择条件字段,点击“添加到条件”,在“导出附件条件”栏位中设置相应的值。注意在字段前面加上表别名“a.”。如下图示例:接收分组标识类型
使用指定分组类型,按照指定字段分组导出,提高导出速度。接收方组和发送方组
该组的概念为通讯组。描述
可以填写一些任务相关的注意事项。比如相关联的任务等;文件格式
TXT_Semicolon
:用分号分隔的纯文本;TXT_TAB
:用TAB分隔符的纯文本;TXT_ESC
:用ESC分隔符的纯文本;CSV
:用逗号分隔的纯文本;DBF
:标准DBF数据库文件;EXCEL
:EXCEL2003版本XLS文件ECSV
:封装过的csv文件,很少用;XML
:标准XML文件
6.4.3 任务组配置
任务组用来分类和管理任务。
点击左边栏“任务管理”“任务组设置”,在左边窗口点击“新增”
选择相应的应用域,填写规划好的组编码和组名称,点击“保存并关闭”
6.4.4 文件任务配置
左边栏点击“任务管理”-“任务定义”
右边栏选择相应任务组,点击“新增”“新增文件任务”“基本信息”选项卡配置
任务配置窗口中*为必填项目
- 名称: 按照命名规则输入任务名;
- 调度时间: 按照格式填写;
- 消息包大小:按照实际数据量分割数据包大小,数据量小,数据包可以选择小一点,反之则选择大一点;
- 消息域: 默认选择JavaBean;
- 服务端备份:默认选择是,如果选择否,服务端将不能做数据重传处理;
- 文件类型: 调用定义好的文件类型名称。定义的方法如下,在“任务管理”-“文件类型定义”,点击“新增”,选择“应用域”。填写文件类型名称,例如“销售报表”。填写文件类型,例如xsbb*.dbf。需要注意的是,在配置中引用的文件类型不能重复或者包含;
- 发送目录:只写文件夹名称,默认在esb安装根路径upload文件夹下,比如配置的是sale,esb安装路径为d:\esb,那么发送文件夹绝对路径为d:\esb\upload\sale,也可以直接写绝对路径;
- 接收目录:只写文件夹名称,默认在esb安装根路径download文件夹下,比如配置的是sale,esb安装路径为d:\esb,那么发送文件夹绝对路径为d:\esb\download\sale,也可以直接填写绝对路径;
- 是否备份:该选项为客户端数据备份。如果文件数据量很大,默认此处选否;
- 覆盖存在文件:目标有重名文件是否覆盖,默认选是。
“导入导出脚本”选项卡配置
直接在文本框中编写脚本,或者将脚本复制粘贴到文本框中。“接收方ID”选项卡配置
点击“添加网络号”,在下方条目内填写网络号(区分大小写),接收目录,如该处配置了路径,基本信息中相对应配置将不生效。“发送方ID”选项卡配置
点击“添加网络号”,在下方条目内填写网络号(区分大小写),发送目录,如该处配置了路径,基本信息中相对应配置将不生效
6.4.5 数据库任务配置
左边栏点击“任务管理”-“任务定义”
右边栏选择相应任务组,点击“新增”“新建数据库任务”在弹出的配置窗口,点击“数据库类定义”选项卡
点击上传类文件,跳出上传文件窗口;
点击“选择文件”,选择相应的class文件(文件有mdesigner生成,路径在主目录\output\bin下);
点击“上传文件”;
待文件传输完成后,点击“保存到任务”。“基本信息”选项卡配置
- 名称:按照命名规则输入任务名;
- 调度时间:按照格式填写;
- 消息包大小:按照实际数据量分割数据包大小,数据量小,数据包可以选择小一点,反之则选择大一点;
- 消息体类型:在完成上传类文件后,可以在此选择CLASS类型文件。注意:如果是主从表,选择主表。另外,不要选择末尾有id的文件;
- 服务端备份:默认选择是,如果选择否,服务端将不能做数据重传处理;
- 发送数据源:选择导出端的数据源名称,如果在发送方ID选项卡中配置,则此处配置不生效;
- 接收数据源:选择导入端的数据源名称;如果在接收方ID选项卡中配置,则此处配置不生效;
- 复制模式:新增模式不覆盖目标表重复数据,新增或更新可以覆盖目标表重复数据;
- 发送标志模式:按需求配置;
- 接收分组表示类型:按需求配置;
- 强制内存优化:选择默认不采用
- 导出排序标志设置:选择相应字段,导出的数据按照选择字段做升序或者降序操作。
“导入导出脚本” 选项卡配置
将脚本粘贴到文本框中即可;“接收方ID和发送方ID ” 选项卡配置
见文件任务配置“数据库模型定义”选项卡配置
按照源表和目标表的数据库类型配置。在导出和导入端配置需要调用的存储过程。“源表与目标表映射” 选项卡配置
当导出表和接收表名不一致,并且表结构一致时设置,如下图示例:
当字段名也不一致,但是表结构一致时,可以设置字段映射。如下图示例:
6.4.6 数据库到文件任务配置
左边栏点击“任务管理”-“任务定义”
右边栏选择相应任务组,点击“新增”“新建数据库到文件任务”。在弹出的配置窗口,点击“数据库类定义”选项卡做上传类文件操作。
“基本信息”选项卡配置
与数据库任务配置相同部分略。
文件信息
- 第一行包含列名:如果选择是,导出文件第一行包含字段名称,反之选否;
- 接收目录:文件生成路径;
- 文件类型:生成文件的格式,如无指定,建议使用TXT_ESC格式。
- 保存的文件名:填写生成文件名字,建议在名字后面加上日期和序号。例如:
md_stor_dc_item-{yyyy}{mm}{dd}{nnnn}.csv
。md_stor_dc_item
是名字,{yyyy}{mm}{dd}{nnnn}
分别对应的是年,月,日,序号。
“导入导出脚本” 选项卡配置
将脚本粘贴到文本框中即可。“接收方ID和发送方ID ” 选项卡配置
见文件任务配置。“数据库模型定义”选项卡配置
按照源表和目标表的数据库类型配置。在导出和导入端配置需要调用的存储过程。“字段映射”选项卡配置
当导出的文件包含列名时,直接点击“自动填充目标映射”,系统将自动做好除主键字段以外的字段映射,其余部分手动填好。(源表字段名会去掉下划线,主键有id.,填写的时候按照数据库字段实际名称填写。)例如:
当导出的文件不包含列名时,需要手动按照目标表字段的序号对应填写。例如:
6.4.7 文件到数据库任务配置
左边栏点击“任务管理”-“任务定义”
右边栏选择相应任务组,点击“新增”“新建文件到数据库任务”。“基本信息”选项卡配置
与文件任务配置相同部分略。
数据库信息
- 第一行包含列名:如果选择是,导出文件第一行包含字段名称,反之选否;
- 复制模式:按照需求填写;
- 接收数据源:选择目标库数据源名称。
“接收方ID”和“发送方ID”选项卡配置
见文件任务配置。“数据库模型定义”选项卡配置
按照源表和目标表的数据库类型配置。在导出和导入端配置需要调用的存储过程。“字段映射”选项卡配置
与数据库到文件任务方法相同,目标和源的方向上相反。
6.4.8 本地脚本任务配置
本地脚本任务是对ESB任务体系补充和扩展。由脚本文件,计划任务配置文件和本地计划任务管理窗口三块组成。
脚本文件
支持Javascipt和Groovy,文件放在ESB主目录js文件夹下。计划任务配置文件
配置文件为ESB主目录下todo-task.xml文件,格式为UTF-8。
编辑该文件(不要使用windows notepad)。格式如下图:本地计划任务管理
点击客户端“本地计划任务”窗口,可看到本地任务信息。选中任务,右键点击,出现任务菜单,点击即可执行相关操作。
6.5 任务部署
在ESB管理平台,点击“任务部署”菜单
按任务部署
选择需要部署的任务,点击页面上方“部署”按钮,完成部署。任务将由系统定时部署到客户端上。客户端配置下发
当客户端配置发生改变,需要做客户端配置下发才能生效。
多个网络号之间用逗号分隔任务撤销
选中任务,点击撤销。手工下发
无论是部署任务还是客户端配置下发,如果需要快速生效,需要点击任务部署菜单的手工下发。
七、ESB客户端管理
7.1 客户端部署
ESB客户端目前支持windows7/2008/8.1/2013/10/2016操作系统
ESB客户端部署前提条件:完成机构信息,数据源和消息队列的配置。
将ESB安装文件复制到客户端服务器上,建议存放在一个单独的分区上。
客户端需要配置与大数据相关的任务,需要安装HADOOP相关环境变量。
- 复制winutils.exe 文件至c:\hadoop\bin\中
- 配置系统变量 HADOOP_HOME=c:\hadoop
- 添加大数据主机hosts解析
- 配置文件(均在ESB主目录下)
- firesb.vmoptions
-Xmx3024m
//最大内存缓存配置-Xms32m
-mail.properties
MailAddress:Password@MailServer
- config.properties
#By firesb
#Sat Jun 27 12:01:19 CST 2015
fileTaskDownloadDir=download
fileTaskBackupDir=backup
coreThhreadPoolsize=2
executionInterval=*/2 * * * *
backupKeepDays=7 //本地备份数据保留时间
logKeepDays=7 //日志保留时间
hibernateDefaultBatchFetchSize=32
authenticationNetCode=5006 //网络号
authenticationBranchCode=SYS5006 //机构编码
authenticationUser=5006 //用户
loggerServerURL=http\://esb.tzit.cn\:8080/firebbs //日志服务器
networkSpeed=high
httpServerEnabled=false
fileTaskUploadDir=upload
performance=high
adminUser=admin
authenticationNetGroupCode=ALL
retryIntervalOnImportFail=10000
threadPoolQueueLength=20
maxThreadPoolSize=4
bufferDir=buffer
bbsFetchIntervalInMinutes=15
maxImportErrorCount=5
adminPassword=admin
restartAppSchedule=
authenticationPassword=5006 //用户密码
- mq.properties
#By firesb
#Sat Aug 06 05:59:48 CST 2016
mqConnectionPort=1414 //MQ端口
mqConnectionOutQueue=LQ.MB.RECEIVE //客户端发送队列名称
mqConnectionInQueue=LQ.9994 //客户端接收队列名称
mqConnectionQueueManager=QM_GATEWAY //队列管理器名称
mqConnectionHost=esb.tzit.cn //MQ服务器URL
对应参数在ESB平台机构配置管理中找。
- 相关文件夹说明
ESB
主目录下Js
:本地脚本文件存放位置Log
:日志文件存放位置Download
:接收文件存放位置Upload
:上传文件存放位置
7.2 客户端操作
7.2.1 操作界面说明
下图为客户端主界面。主要分为3个区域:菜单区,任务窗口区,日志窗口区。
每个区域的界面显示一目了然,不一一赘述。显示参数说明,如下图
内存(u/m/t)分别代表:当前内存/曾使用的最大内存/配置的最大内存
缓存(i/o/e/if/ef):输入缓冲区/输入缓冲区/错误缓冲区/文件输入缓冲区/挂起的文件消息(e是数据库错误消息,ef是文件错误消息)
7.2.2 菜单区
- 菜单区按钮
- 执行数据传输按钮:手动触发客户端接收消息队列中的数据。
- 数据重传:弹出备份消息窗口,按时间显示客户端所有发送的消息包,点击右键可以重传消息包。按shift(CTRL)+鼠标左键批量选择消息包。
- 查看日志:弹出窗口,按时间显示所有的日志。
- 系统菜单
点击系统菜单出现以下菜单
- “脚本控制台”可以用来调试脚本。
- “清除自启动配置”可以清除系统下启动和计划任务下的配置。
- “设置”选项
点击该菜单选项后,会弹出系统配置窗口,除了“系统维护”选项卡外,其余均属于查看配置使用,不能编辑。
7.2.3 任务窗口区
执行队列
显示当前正在执行任务。(不包含本地脚本任务)任务列表
显示部署在客户端所有任务。选中任务,点击右键,将弹出任务菜单,如下图显示:
- 加入执行队列:手动执行任务;
- 查看任务信息:查看该任务相关配置信息;
- 查看日志:查看该任务相关日志;
- 挂起任务:手动挂起任务,不执行;
- 取消挂起:取消挂起任务。
- 本地计划任务
见本文6.3.5节
7.2.4 执行日志输出窗口
显示任务执行输出日志,对该区点击右键,选择“清除”,可以清除屏幕显示。查看以前的日志,需要打开日志文件查看。
八、日常维护
同振ESB平台有着完善的监控体系,其中有邮件和短信报警为主。
- 短信报警主要监控错误消息和客户端异常情况,该报警也会在邮件中体现出来。
- 错误消息报警可以打开报错客户端主界面,重传错误消息,如果继续报错,记录报错信息,提交相关人员处理。
- 客户端异常报警如果是客户端问题,重启客户端即可。
- 邮件报警分类和处理方法如下
- 消息队列报警:队列名如果是LQ.MB.AGENT.ERROR,DLQ,LQ.MB.ERRMSG中有消息包,打开MQ消息管理器,浏览错误消息,分析,然后清除;如果是其他的队列,定时观察,如果数值不断增长,可能属于异常情况。
- 最近10天导入任务异常:打开ESB管理平台,在任务监控模块,分别在“文件任务日志”,“数据库任务日志”和“数据库到文件任务日志”中查询未接收的消息,找到后重新发送即可。如下图示例:
- 客户端程序状态异常:与短信报警处理方法一致
- 最近48小时导出任务异常:查看相关的导出错误信息,针对性的处理。
附录一
Mdesigner使用方法
WINDOWS32位操作系统运行mdesigner.exe,64位操作系统运行mdesigner.x64.exe ;
生成的class文件位于output\bin下
运行程序后,出现如下图界面
点击增加DDL,将标准建表SQL语句复制到新增的窗口,如果是主从表,可以继续点击增加DDL,从表必须有外键。
点击生成,即在output\bin下生成class文件。
附录二
常用脚本接口
- 导入Maxcomputer
function main(task,ftp,shell,db,telnet,rest,mail,hdfs,kafka,fileName){
db.setOdpsConf(' accessId字符串',' accessKey字符串',' String project '); //连接到Maxcomputer
db.odpsUpload('表名',null,'路径)',fileName,false); //db方法导入到Maxcomputer表中。false不带列名,true带列名。
return true ;
}
- 导入到KUDU
function main(task,ftp,shell,db,telnet,rest,mail,hdfs,kafka,csvFile){
var jdbcUrl;
var table;
jdbcUrl="服务器名:端口号";
table="表名";
var keys="";
var defaultValues="";
db.kuduUpsertCsv( jdbcUrl, table, csvFile, '\x1B', null,defaultValues,keys);
//db方法把文件导入到KUDU表中
return true ;
}