[CSDN编者按]随着物联网的快速发展,场景链接越来越普遍,那么如何实现连接服务呢?本文作者作为360物联网云连接服务的技术负责人,结合自己的实际开发经验,详细阐述了连接服务的设计方案以及多机房多网络连接服务的登陆实践。
author |张超编辑|吴凌星产品| csdn (id: csdnnews)
连接服务是为了解决云与终端之间的数据通信问题而创建的。不同的业务场景对通信的实时性、可用性和可靠性有不同的要求,这使得连接服务适应不同的场景。有些场景需要相对较高的实时性能和不太严格的可靠性。例如,对于实时交通状况的推送消息,消息需要在一定的时间段内传递,而没有按时传递的消息没有推送的意义。然而,对于常见的即时消息场景,相反的策略是相同的。用户希望接收消息,即使消息传递时用户不在线。在这种情况下,对消息的可靠性提出了更高的要求。从上述常见场景出发,结合物联网的特殊性,由于业务对数据的实时性要求高,对设备的可靠性要求高,连接服务将根据不同的应用场景制定不同的应对策略。
基于上述背景,我们总结了以下相关的服务设计目标:
云能够及时向设备传输数据,从而达到云能够实时控制设备的目的。
在某些物联网有限的设备上,功耗也是一个重要的考虑标准,因此需要进行特殊处理,以满足对功耗要求严格的设备的功耗要求。
物联网设备的类型很多,不同的制造商和不同类型的设备可能采用不同的传输协议,因此连接服务应该能够处理不同的协议,实现多协议互通。
作为终端的接入点,确保不同网络运营商的用户能够正常高效地访问服务也是服务设计的一个重要指标。如果没有网络可以介入,就不可能有其他的事情。
因为连接服务面向大量的物联网设备,高可用性应该放在非常重要的位置,所以要求服务能够支持在不同地方部署多个机房。当涉及到多房间解决方案时,只有将它们与特定服务相结合,才有意义。连接服务相对简单的实现直接关系到我们服务本身的定位。该服务没有持久的消息数据,但仅用作传输信道。另一方面,这一层次已经达到多机房,但是如果特定的服务线不能达到多机房的部署(这是非常困难的,并且特定的服务一般都有持久的数据),仍然不能达到机房停机对最终终端没有影响的效果。如果每个点都提高了一点点高可用性,那么整体可用性将会越来越好。
由于每条业务线的重要性不同,对数据服务质量的要求也不同,所以不同的业务线应该做不同的处理,不同业务线之间应该做好隔离。此外,不同业务线的不同技术栈和业务回调的不同实时要求也决定了我们需要采用不同的业务数据回调方法。
物联网设备的数据与硬件直接相关,因此对数据安全性的要求高于传统互联网模式下的要求。
Deployment Structure
多机房多网络的部署方案由于整个服务涉及的点相对较多,不可能在一篇文章中汇集到一起。我们可以稍后继续与您讨论细节。本文重点介绍了多机房、多网络的详细部署方案。它为什么如此设计?多个机房和网络的部署解决了不同运营商的干预和单机房整体停机的问题。
问题的症结在于不同运营商之间可能存在网络故障,而运营商无法解决。因此,网络连接是通过云服务提供商购买的专用网络线路来连接两个不同运营商的外部出口。硬件上的网络打开后,软件只需要在不同的出口位置部署相应的入口点。最简单的解决方案是部署相应的网络转发。公司内部使用的LVS充当网络代理,并为外部云服务器提供商提供相应的网络代理服务。解决方案网络的连通性已经足够,这是一种在行业中更广泛使用的方法。目前,我们对一些流量或服务较少的运营商没有特殊要求,也采用这种网络代理方式。
在生活水平提高之前,给人印象最深的是支付宝切断了轻焊料。该服务非常重视可用性,也将问题提升到了一个更高的水平。我们服务的主题是MQTT的开源协议,以及在使用多机房之前使用的多MQTT集群的桥接方法。为了达到预期的效果,我们需要解决以下问题:1. 检查服务是否有全局的数据需求服务的核心任务是传输消息,其自身的位置是通道性质,上游数据直接写入卡夫卡队列或通过用户提供的回调接口进行处理。如果失败,它将被写入文件日志,因为后台服务可以收集数据,即使每个机房的数据被传输到每个机房的单独位置。当然,它也可以被收集,所以上游数据没有问题。让我们来看看数据的下降趋势:当云服务向设备发送数据时,如果设备间出错,设备无法正常接收数据,因此下降趋势对多个设备间很敏感。2. 如何解决下行数据根据以上分析,向下的困难主要是解决如何向终端所在的集群发送消息以及解决这个问题。目前,更传统的方法是当用户在线时,将用户的位置记录到多个计算机房可访问的数据库中,以便用户可以在每次递送之前查询,然后递送到准确的位置。当网络状况良好时,这种设计没有问题。每个机房由多台机器组成的集群采用这种结构。然而,由于多机房网络的不稳定性,目前主流数据库基本上采用主从模式,甚至有些不支持多机房的主从模式。在这种情况下,数据库变成了一个单一机房中的单点问题。如果企业自己同步数据,它将回到起点,解决多个机房的数���同步问题。基于我们相对简单的商业模式,我们直接采用信息扩散的方式,即当我们从云服务接收到下游指令时,我们会扩散到所有的机房,这可以保证终端当然可以接收到相应的数据,但是会有一些浪费的操作。但是,查询数据在该群集中是否有效,然后将其丢弃是相对有效的。因此,目前扩散带来的压力比在多个机房维护数据要容易得多。上行链路和下行链路打开后,整个主过程完成。以下是双层群集结构:
连接服务。虽然服务很简单,但对服务稳定性和高性能有特殊要求。它基本上涉及服务器开发的所有方面。本文介绍了在多机房方案下的设计与实践。作者简介:张超,360物联网云连接服务技术负责人,毕业于南京大学。他一直从事游戏开发和即时通讯服务器开发,目前在物联网接入层工作。本文摘自CSDN物联网开放课程《360 物联网接入层连接服务入门实践》。整个视频课程都可以用邮票观看:https://t.csdnimg.cn
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!