基于kettle的数据集成平台

Posted qingxinziran007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于kettle的数据集成平台相关的知识,希望对你有一定的参考价值。

上篇文章介绍了使用kettle平台实现mqtt与websocket的数据互转功能,基本上能够解决物联网平台中的通信问题。本章将继续讲解kettle平台的另外一个高级功能,即:实现websocket之间的转发透传。

 场景描述:

我在开发物联网平台的时候,遇到这样一个问题。如果想要实时的将设备数据展现在前端页面,采用websocket进行通信那是必然的选择。但是为了适配不同类型的前端(h5,app,小程序等),数据格式肯定是不一样的。当然与客户的对接也会导致数据格式的差异,比如:现在有两个公司入驻该平台,每个公司都有自己的标准协议。A公司采用标准的json格式,B公司采用标准的CXML格式(xml的一种,cxml广泛用于sap)。在这种场景下,该如何解决此问题呢?物联网平台提供的websocket接口是不能轻易进行更改的,可以认为是原子接口。但是如果不能轻易进行更改的话,又如何适配各个平台呢?

针对这种场景,我就联想到如果是普通的rest接口,而不是websocket接口,就可以通过构建一个新的接口,在新接口的内部实现数据格式的转换。因为rest接口是短连接的,所有是可以实现的。但对于websocket这种长连接来说,显然是不行的。如果能够实现长连接之间的传递不就能够解决了。

  • 需求

websocket接口之间的相互调用。

  • 问题

1,websocket接口之间如何相互通信?是否涉及多个websocket服务端?

2,接口之间调用又是如何进行数据格式的相互转换呢?

  • 方案

通过在网上查找方案,有价值的信息不多,刚开始准备采用硬编码的形式实现,不过这样的方式,会导致服务不具有扩展性,如果有新的服务加入很可能会导致长连接的断开。通过kettle的ETL特性很容易实现对数据格式的转换,但是实现对websocket服务调用kettle目前却是不支持的。最后决定编写插件来实现该功能,并最终实现websoket服务间的相互调用。

效果预览:

websocket服务端:启动服务端,当接收到消息后重复5次推送给客户端。

数据集成平台:

平台提供的websocket接口,该接口已经对接websocket服务端。

websocket客户端在线测试:

调用websocket接口,平台开始监听websocket服务端数据的变化,若有数据进入,则会通过websocket推送出来。

 websocket服务端控制台输出:

原理简介:

  • 通过“WebSocket Client Test”节点来连接websocket服务器,该节点就是通过编写kettle插件实现的。

  •  通过“Get records from stream”节点来进行流处理,对每一条数据进行定制化处理。当然这个同mqtt的流处理是通用的。

将以上两个转换文件进行组合,便可以实现对websocket服务的监听,以及对流数据的处理。

  • 平台原理:

通过将上述两个文件进行上传保存后,websocket服务接口通过执行这两个文件,将在线测试的websocket客户端的长连接与kettle中的websocket客户端的长连接进行关联 ,最终将websocket服务端的数据,通过平台建立的websocket长连接关联通道进行输出。

总结:

平台通过将websocket之间的长连接进行关联,解决了websocket之间的调用问题。这样就可以完成websocket的调用链。当然现在的运用场景并不多,相信以后会有丰富的运用场景。

若有什么疑问,可加qq893393953。

以上是关于基于kettle的数据集成平台的主要内容,如果未能解决你的问题,请参考以下文章

基于kettle的数据集成平台(汇总)

基于kettle的数据集成平台(汇总)

基于kettle的数据集成平台(汇总)

基于kettle的数据集成平台

数据预处理基于Kettle的字符串数据清洗Kettle的字段清洗Kettle的使用参照表集成数据

起源于 Kettle 的新一代数据集成平台 Apache Hop 成为 Apache 顶级项目