广域网数据交换的三种方式

在实名制这块其主要的技术在于硬件设备与服务器之间的通信,最理想的状态是每一台硬件设备都拥有一个广域网的ip,这样服务器和设备可以点对点直接通信。但是理想和现实差距很大,受制于ipv4的数量限制导致广域网的ip价格高昂,无法大面积的在设备中应用。没有广域网ip情况下设备想和服务器进行数据交互,就变得非常复杂,就目前来讲只有三种比较主流的数据交互方案。

第一种方案是使用TCPUDP协议通信,设备发送UDP数据询问服务器端可有数据需要下载,如果有数据需要下载设备端就发起TCP请求来下载数据。这种方案的好处是只需要服务器端拥有广域网IP就可以进行正常的数据交换。但是这个方案数据交互非常缓慢.每交互一次就需要间隔数十秒。

第二种方案是使用MQ协议通信,设备端订阅mq的某一个频道,服务器只需要把需要发送给硬件设备的数据推送到消息队列中,设备收到推送会自动下载数据。这种通信方式效率很高在物联网这块应用也很广泛,是比较优秀的通信方案选择,但是技术实现难度很高、应用成本也很高。

第三种方案是使用中间层,我称之为称为数据交互管理器。数据交互管理器部署在和硬件设备同网段的局域网中,它可以和硬件设备点对点直接通信,它通信的结果存储在本地然后在周期性的进行上传。它的好处很明显,不需要设备支持服务器端(第一、二两种方案都需要硬件设备支持)、可以在无网络的环境工作,可以完全按照设备支持的方案进行开发,然后把需要的数据上传到服务器端。看起来很ok,很完美,但是其实这种方案成本是非常非常高昂。

我在之前的工作中一直使用的是第一、第二两种方案进行设计开发、这两种方案看似成本很高,需要搭建单独的通信服务,但是从宏观和时间的角度来说其实很廉价。因为它只需要更新服务端的软件就可以改造、调整优化、升级。不需要考虑客户端,所有的设备只需要连接网络、配置好通信ip和账户就完成了,不需要进行多余的操作。

现在我们使用的是第三种方案,中间层。之前我虽然知道这种方案、甚至因为它可以在无网络的环境工作心动过,想亲手设计实现一套。但是就目前的结果而言,我很庆幸我当初没有去实现。并不是说这种方案很糟糕,相反它是非常优秀的方案,在理想状态下,它的兼容性、和无网络工作的特性是非常优秀的,只需要精心的去设计,严格的测试、缓慢的推广。它应该是三种方案最优秀的方案。但是现实往往相反。

首先是安装环境,我们向客户推广我们的系统时,客户为了节省成本往往使用自己现有的计算机来安装,但是他们的计算机五花八门、往往配置很低。

其次是管理维护。安装中间软件的计算机,应该保护好,即使关机也应该正常关机,而我遇到一个客户,他的计算机是经常直接断电的。计算机上安装了数据库,数据库正在写入数据的时候断电会导致数据写入损坏,导致数据库崩溃、数据丢失。安装短短十几天数据库崩溃四五次,每次崩溃都需要人工数个小时的时间恢复,更让我难受的是,客户一直不告诉我们真实情况,每次询问都是计算机没有关机,导致我一直无法找到数据库崩溃的真实原因。

当然这只是个特例,但是这个特例却能反馈出,第三种方案的应用难度,所以当我们选择方案的时候,不能只从解决问题的方向去思考,而要从各个方面去考虑,作为一个系统架构师、系统设计者去选择一个技术实施方案时必须三思而后行,如果不了解、和分析具体的应用不仅给自己挖了很多坑,也会为公司带了很大的损失。

posted @ 2021-08-12 17:07  时光城主  阅读(1199)  评论(0编辑  收藏  举报