广域网数据交换的三种方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⼴域⽹数据交换的三种⽅式
在实名制这块其主要的技术在于硬件设备与服务器之间的通信,最理想的状态是每⼀台硬件设备都拥有⼀个⼴域⽹的ip,这样服务器和设备可以点对点直接通信。
但是理想和现实差距很⼤,受制于ipv4的数量限制导致⼴域⽹的ip价格⾼昂,⽆法⼤⾯积的在设备中应⽤。
没有⼴域⽹ip情况下设备想和服务器进⾏数据交互,就变得⾮常复杂,就⽬前来讲只有三种⽐较主流的数据交互⽅案。
第⼀种⽅案是使⽤TCP、UDP协议通信,设备发送UDP数据询问服务器端可有数据需要下载,如果有数据需要下载设备端就发起TCP请求来下载数据。
这种⽅案的好处是只需要服务器端拥有⼴域⽹IP就可以进⾏正常的数据交换。
但是这个⽅案数据交互⾮常缓慢.每交互⼀次就需要间隔数⼗秒。
第⼆种⽅案是使⽤MQ协议通信,设备端订阅mq的某⼀个频道,服务器只需要把需要发送给硬件设备的数据推送到消息队列中,设备收到推送会⾃动下载数据。
这种通信⽅式效率很⾼在物联⽹这块应⽤也很⼴泛,是⽐较优秀的通信⽅案选择,但是技术实现难度很⾼、应⽤成本也很⾼。
第三种⽅案是使⽤中间层,我称之为称为数据交互管理器。
数据交互管理器部署在和硬件设备同⽹段的局域⽹中,它可以和硬件设备点对点直接通信,它通信的结果存储在本地然后在周期性的进⾏上传。
它的好处很明显,不需要设备⽀持服务器端(第⼀、⼆两种⽅案都需要硬件设备⽀持)、可以在⽆⽹络的环境⼯作,可以完全按照设备⽀持的⽅案进⾏开发,然后把需要的数据上传到服务器端。
看起来很ok,很完美,但是其实这种⽅案成本是⾮常⾮常⾼昂。
我在之前的⼯作中⼀直使⽤的是第⼀、第⼆两种⽅案进⾏设计开发、这两种⽅案看似成本很⾼,需要搭建单独的通信服务,但是从宏观和时间的⾓度来说其实很廉价。
因为它只需要更新服务端的软件就可以改造、调整优化、升级。
不需要考虑客户端,所有的设备只需要连接⽹络、配置好通信ip和账户就完成了,不需要进⾏多余的操作。
现在我们使⽤的是第三种⽅案,中间层。
之前我虽然知道这种⽅案、甚⾄因为它可以在⽆⽹络的环境⼯作⼼动过,想亲⼿设计实现⼀套。
但是就⽬前的结果⽽⾔,我很庆幸我当初没有去实现。
并不是说这种⽅案很糟糕,相反它是⾮常优秀的⽅案,在理想状态下,它的兼容性、和⽆⽹络⼯作的特性是⾮常优秀的,只需要精⼼的去设计,严格的测试、缓慢的推⼴。
它应该是三种⽅案最优秀的⽅案。
但是现实往往相反。
⾸先是安装环境,我们向客户推⼴我们的系统时,客户为了节省成本往往使⽤⾃⼰现有的计算机来安装,但是他们的计算机五花⼋门、往往配置很低。
其次是管理维护。
安装中间软件的计算机,应该保护好,即使关机也应该正常关机,⽽我遇到⼀个客户,他的计算机是经常直接断电的。
计算机上安装了数据库,数据库正在写⼊数据的时候断电会导致数据写⼊损坏,导致数据库崩溃、数据丢失。
安装短短⼗⼏天数据库崩溃四五次,每次崩溃都需要⼈⼯数个⼩时的时间恢复,更让我难受的是,客户⼀直不告诉我们真实情况,每次询问都是计算机没有关机,导致我⼀直⽆法找到数据库崩溃的真实原因。
当然这只是个特例,但是这个特例却能反馈出,第三种⽅案的应⽤难度,所以当我们选择⽅案的时候,不能只从解决问题的⽅向去思考,⽽要从各个⽅⾯去考虑,作为⼀个系统架构师、系统设计者去选择⼀个技术实施⽅案时必须三思⽽后⾏,如果不了解、和分析具体的应⽤不仅给⾃⼰挖了很多坑,也会为公司带了很⼤的损失。