如何解决多机房、多 *** 下的物联网部署方案?

访客4年前关于黑客接单1144

【CSDN 编者按】随着物联网的迅速发展,场景联动越来越普遍,那么敲门砖的连接服务该如何实现呢?本文作者作为360 IoT 云连接服务技术负责人,他从结合自身的实际开发经验,详解连接服务的设计方案,以及连接服务里多机房多 *** 的落地实践。

如何解决多机房、多网络下的物联网部署方案?

作者 | 张超

责编 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

如何解决多机房、多网络下的物联网部署方案?

连接服务的背景介绍


连接服务的产生是为了解决云端和终端的数据通信问题。不同的业务场景对通信的实时性、可用性和可靠性的要求都不一样,也就使得连接服务要适应各种各样的场景。

有些场景对实时性要求相对较高,对可靠性要求不是很严格,如对实时交通路 况的推送消息,该消息就要求在一定时间内送达,没有按时送达的消息,就没有推送的意义了。

而对于常见的IM场景就刚好相反的策略,用户希望接收到消息,尽管消息投递时用户不在线,这种情况下就对消息的可靠性要求提出更高的要求。

从以上常见场景出发,结合物联网的特殊性:既有业务对数据的实时性要求较高,又有设备对数据的可靠性有苛刻的要求,所以连接服务会结合不同的应用场景做出不同的应对策略。

如何解决多机房、多网络下的物联网部署方案?

连接服务的设计目标


根据上述的背景,我们总结了以下相关的服务设计目标:

1、实时性


满足云端能及时地将数据传达给设备,进而达到云端能够实时控制设备的目的。

2、低功耗


在一些物联网受限的设备上,功耗也是一个重要的考量标准,所以要针对功耗要求严格的设备,进行特殊的处理以满足功耗的要求。

3、多协议的支持


物联网设备类型繁多,不同的厂商、不同类型的设备可能采用不同的传输协议,所以连接服务要能够处理不同的协议,做到多协议的互通。

4、多 *** 运营商


作为和终端的接入点,保证不同 *** 运营商的用户都能正常,高效的接入服务,也是服务设计的一个重要指标,如果 *** 都不能介入的话,其它都将无从谈起。

5、多机房的部署


因为连接服务的定位是面向大量的物联网设备,而高可用性应放在一个非常重要的位置上,所以要求服务能够支持异地多机房的部署。

说到多机房的方案必须要跟具体的业务相结合才有意义,连接服务之所以能够相对较简单的实现跟我们的服务本身定位有直接关系,服务没有持久化的消息数据,只是作为一个传输通道。

另一方面,这个层面达到了多机房,但是如果具体的业务线不能达到多机房的部署(这个又是非常困难的,具体业务一般都有持久化的数据),对最终的终端来说依然是不能够达到机房宕机完全无影响的效果。

假如每个点都提高一点高可用性,整体的可用性就会越来越好。

6、多业务线


由于各业务线的重要程度不同,对数据服务质量的要求也是不同的,所以要针对不同的业务线做不同的处理,并且要做好不同业务线之间的隔离。

且不同的业务线的技术栈的不同,业务回调的实时性要求不同,也决定了我们需要采用不同的业务数据回调方式。

7、数据安全性


物联网设备的数据都是直接和硬件相关的信息,所以对数据的安全性要求比传统的互联网模式下的要求要高。

服务架构设计:


如何解决多机房、多网络下的物联网部署方案?

部署结构

如何解决多机房、多网络下的物联网部署方案?

多机房数据同步


如何解决多机房、多网络下的物联网部署方案?

多机房多 *** 的部署方案

由于整体服务涉及的点相对较多,不能在一篇文章中一一道来,后续有机会可以继续跟大家一起探讨其中的细节,本文侧重详解多机房多 *** 的部署方案。

为何如此设计呢?

多机房、多 *** 的部署解决了不同运营商的介入问题,以及单机房的整体宕机问题。

多运营商 *** 的问题的解决方案


问题的症结所在是不同的运营商之间有可能存在 *** 不通的情况,而这又不能通过运营商解决,所以 *** 的打通是通过云服务商购买的 *** 专线,将两个不同运营商的对外出口进行打通。

硬件上 *** 打通之后,软件上只需要在不同的出口位置部署上相应的入口点就可 以了,最简单的解决 *** 就是部署相应的 *** 转发就可以了。

公司内部使用的LVS作为 *** 的 *** ,对于外面的云服务器提供商也都有对应的 *** *** 服务。该方案解决 *** 的联通性已经完全够用了,这是业界使用的比较多的方式。我们现在对于一些流量较少的运营商,或者服务没有特殊需求,也是采用这种 *** *** 的方式。

多机房解决多活的问题


多活问题之前最有印象还是的支付宝的挖断光钎的事情。服务非常重视可用性,也将该问题提到了比较高的层面上。我们服务主题采用的是MQTT的开源协议,多机房之前采用的多MQTT 集群的桥接方式进行打通。达到预期的效果,我们需要解决以下几点问题:

1. 检查服务是否有全局的数据需求

服务的核心任务是传输消息,本身的定位是通道性质,上行数据是直接通过写入到Kafka队列中或者是通过用户提供的回调接口进行处理的。

如果失败的情况会写入到文件日志中,由于后台服务可以进行汇总收集,即使各个机房的数据传输到各个机房单独的位置。

当然也可以进行收集,所以上行数据方面是没有问题。

再看看数据的下行:云服务往设备发送数据的时候,如果发送错了机房,设备就不能正常的接收数据了,所以下行是对多机房敏感的。

2. 如何解决下行数据

根据上面的分析,下行的难点主要是解决如何给终端所在的集群发送消息,解决这个问题,现在比较常规的做法就是在用户上线的时候,将用户所在的位置记录到一个多个机房都能访问到的数据库,这样的话就能每次投递之前查询一下,就可以投递到准确的位置了。

这样的设计是 *** 情况较好的情况下是没有问题,我们的每个机房的多机器组成的集群就是采用这种结构,但是在多机房 *** 的不稳定性,现在的主流数据库基本采用主从模式的,甚至有些是不支持多机房的主从模式。

这种情况下,数据库就成为单机房单点问题了,如果业务自己做数据的同步,这样又回到了起点,解决多机房的数据问题同步问题。

基于我们的业务模型相对简单,所以我们直接采用的是信息扩散的方式,即我们收到云服务的下行指令的时候会在所有的机房进行扩散,这样就能保证终端一定能收到相应的数据,但是会存在一定的浪费操作,但是基于查询是否是本集群有效的数据,然后就丢弃是相对高效的操作, 所以目前而言扩散带来的压力,相比维护多机房的数据要容易的多。

上行和下行都打通了之后,整体的主流程就通了,下面是两层集群结构:

如何解决多机房、多网络下的物联网部署方案?

连接服务虽然业务简单,但是对服务稳定性和高性能有着特殊的需求,基本涉及了服务端开发的各个点,本文介绍了一下其在多机房方案下的设计和实践。

作者简介:张超,360 IoT 云连接服务技术负责人,毕业于南京大学。曾从事过游戏开发、IM 服务端开发,目前从事物联网接入层相关工作。

本文是CSDN物联网公开课《360 物联网接入层连接服务入门实践》的节选,完整视频课程观看可戳:https://t.csdnimg.cn

相关文章

说岳全传读后感(说岳全传读后感500字)

说岳全传读后感(说岳全传读后感500字) 这本书讲述了岳飞百思特网的一生,他立志报效祖国,立下无数战功。但朝廷昏庸,皇帝一心求和。大奸臣秦桧为讨好金国把岳飞害死在风波亭的故事。 其中最值得...

遇到方舟黑客怎么办(方舟怎么防止别人进服务器)

遇到方舟黑客怎么办(方舟怎么防止别人进服务器)

本文目录一览: 1、遇到黑客怎么办 2、遇到了黑客怎么办? 3、被黑客攻击后应怎么办? 4、方舟MOD被黑客攻击怎么办? 5、遭遇黑客攻击怎么办 遇到黑客怎么办 查木马喽,他如果是黑...

一国两制多少年不变

  50年后,大陆经济实力碾压全球的时候,他们本身就会主动求变了   按照中华人民共和国和大不列颠及北爱尔兰连系王国两国当局所签订的《中英连系声明》,中华人民共和国当局理睬执行“一国两制”政策,在50...

黑客被逮住了(被通缉的黑客)

黑客被逮住了(被通缉的黑客)

本文导读目录: 1、黑客被抓了要怎么判 2、黑客被抓一般会怎么样啊, 3、黑客如果被抓到会被怎么处置? 4、黑客被抓会怎么样 5、为什么那些黑客被抓之后,放出来就从此淡出 黑客被抓了...

高校被黑客攻击(遭到黑客攻击)

高校被黑客攻击(遭到黑客攻击)

本文目录一览: 1、西北工业大学遭美国黑客攻击的原因是什么? 2、西工大回应“遭网络攻击”:坚决反对,此事带来了哪些连锁反应? 3、警方通报:西工大遭境外黑客攻击,黑客为什么攻击西工大?...

遛娃的心情说说 遛娃一句话简单句子:春天遛娃遛老公

遛娃的心情说说 遛娃一句话简单句子:春天遛娃遛老公

父母们全是浪里偷闲每日都惦记着带娃外出走一走逛一逛,尤其是每一个礼拜天的休息日带孩子的家中是注意力不集中的,去外边晒晒太阳遛遛娃,美好的一天又开始了,下边的我就产生:带娃的心情短语 带娃一句话简单句子...