基于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。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qingxinziran007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值