物联网产品的开发的难点,致命点是什么?

news/2024/5/3 18:37:54/文章来源:https://blog.csdn.net/besidemyself/article/details/130322810

物联网产品的开发的难点,致命点是什么?

当下是万物互联的时代, 物联网产品本身的难度因行业而异。但是物联网设备上云通信交互就成了各个行业需要首先解决的问题。 物联网通信问题从产品设计一开始,如果不能很好的解决,或者设计方案有问题,即使这个行业的产品的市场做的再成功,随着业务的增加,接入网络的设备量增加,企业注定摆脱不了被缠绕的问题拖死或者被撑死的命运。

通信模型

要了解物联网产品的难点,致命点,首先要了解物联网产品的模型和传统无状态互联网产品模型的本质区别。

传统无状态互联网交互模型

众所周知,传统的Web应用是采用HTTP进行通信的。 而http是无状态的,客户端发送请求到后端,后端根据请求涵义把结果返回给前端。后端不保存前端的状态。后端不能主动的向前端发送消息。 后端是被动处理消息的。

无状态的后端通信模型,采用k8s等做负载均衡是对开发代码无侵入性的, 在不进行代码修改的情况下,是可以完成弹性扩展,可以做负载均衡的。

所谓的弹性扩展的能力:就是系统根据业务并发量自动启动或者停止运行实例,而满足客户并发量递增或者递减的能力。

所谓的负载均衡的能力:就是当有多个实例并发处理相同的业务时,系统根据预设规则算法,动态的保持多个实例之间的处理平衡。而不是把所有的请求都挤压到某个节点,导致节点崩溃的能力。

而基于HTTP的 request-response 模型很容易做到弹性扩展和动态扩容。换句话说,当后端节点不能满足现有的并发请求时, 稍加改造,就可以完成动态扩容。在技术上毫无难度。

以下图为基于http通信的模型
在这里插入图片描述

物联网的通信模型

物联网的通信模型要比传统Web通信模型复杂的多。 物联网通信模型是有状态模型。 设备与用户,设备与后端,后端与用户均为全双工通信。 换句话说,任意一方都可以主动的给另一方发送数据。

除此之外, 物联网产品往往是一对多的关系, 一个用户要同时管理多个相同类型或者不同类型的设备。 并且与他们通信,或者发布消息。

综合以上,物联网系统要比传统Web产品的通信设计难度要大很多, 这也是为什么很多做互联网产品的团队,即使有很多的成功经验,依然难以胜任物联网产品开发的根本原因。

如下图为理想的物联网通信系统模型:

在这里插入图片描述

如上图所示, 我们画出了物联网系统的理想模型,但凡所有的用户如果能够把系统的模型做成如上模型,基本上系统的通信以及满足未来设备无限扩展,就不会有问题。系统通信就稳如磐石。但是这样的架构他属于基础设施。对于小米这样体量的公司,毫无疑问,系统也是这样设计的。 因为他们有强大的团队和金钱支撑。 对于小微企业,或者一般企业,则很少会考虑在基础设施上投入。 一开始就冲着业务而去的。 也不是任何团队都有能力能够把系统做成这样的模型。 大多数创业公司,一开始就有业务支撑,财务指标以及市场客户迫使他们短时间内交货。而无暇顾及系统的稳定性。最后卖出去的产品的问题层出不绝。随着新的业务的增加,系统不能胜任,而导致创业公司被撑死。

以上模型重点解决3个问题。

  1. MQTT-Broker 代理转发器的集群,这在小型公司,去开发MQTT-broker的集群基本是不可能的。 需要高精尖技术人才,国内外有一些公司专门做这个领域。 还是可以通过花钱购买,二次开发而得到解决。
  2. 设备联网的安全性, 这个主要靠MQTT-broker 的设计 以及协议模型的设计,云晶物联网通信把设备上云的安全性放到首位也要考虑解决的问题
  3. 业务集群(backend), 业务集群也是一个难点, 这里的通信模型至少有四种模型, 而且业务集群服务本身是有状态的, 在某个节点挂掉的情况下,要做到客户无感知的,还是非常考验架构师的功底。而基于MQTT3.1 的协议之前的版本根本没法完成负载均衡的设计,导致无法设计出业务的集群模型,所以就无法设计出满足弹性扩展负载均衡的系统。 **如果不能设计出满足这两个条件的要求的系统,则企业的发展就不会走太远。

以上问题3也不是没有突破口, 那就是MQTT5.0协议的诞生,MQTT5.0 添加了一个特性“共享订阅”就是后端的负载均衡问题,只是为客户的业务系统提供了可以支持负载均衡的能力,至于客户系统到底如何设计,才能做到动态扩容,负载均衡。这就需要各个公司的架构师们发挥自己的才能进行系统的设计。 为此,云晶根据自己多年的经验设计出了一套满足上述要求的通信协议, 那就是 jiot-mqtts协议。

以上三个难点中,难点1不是企业发展过程中首要要解决的问题, 对于mqtt-broker只是转发器,转发数据,并不承担重量级业务处理。单节点,主从备份,扛起10万以内的设备连接还是没有问题的,(或者采购云服务厂商的mqtt-broker)就可以得到满足。 而系统的业务集群(如上图黄色部分)如果没有被设计成集群模式。那么单体架构的处理能力很快就到达了瓶颈。 会造成系统经常挂掉, 业务数据丢失,或者处理延时大缓慢等情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102179.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马云上三路和下三路

马云的上三路、下三路,马云最牛搭档总结 马云刚最牛搭档:蔡崇信,关明生 《关乎天下》是关明生写的一本书 趣讲大白话:没有方法走不远 【趣讲信息科技143期】 **************************** 马云上三路:使命&#xff0c…

你掌握了stream流的全部新特性吗?

我们知道很早之前java8对于之前的版本更新了许多 新的支持,比如lamda函数式接口的支持,支持更多函数式接口的使用,对链表,数组,队列,集合等实现了Collectio接口的数据结构提供了StreamSupport.stream()支持…

基于ubuntu18.04.6 LTS服务器安装nvidia驱动

1对于一个刚刚配置的服务器,首先nvidia-smi,自然无法显示Driver Version、最高cuda版本等信息。 nvidia-smi: command not found 需要我们自己安装nvidia驱动 2禁用老驱动 禁用自带nouveau驱动 sudo vim /etc/modprobe.d/blacklist.conf 打开后在CONF文…

2023年软件测试的前景?测试工程师技能提升,进阶自动化测试...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 2023年软件测试行…

【开发日志】2023.04 ZENO----Composite----CompNormalMap

CompNormalMap 将灰度图像转换为法线贴图 将灰度图像转换为法线贴图是一种常见的技术,用于在实时图形渲染中增加表面细节。下面是一个简单的方法来将灰度图像转换为法线贴图: 加载灰度图像,并将其转换为浮点数值范围[0, 1]。 对于每个像素…

IT_开发提测标准规范

背景 公司 IT 规模小,开发提测质量差,流程不规范,导致测试任务重,于是推行 :IT_开发提测标准规范,正文如下;拟定开发提测标准规范后,测试与项目经理内部评审后,发至IT群…

盘点几款还不错的企业网盘产品

企业网盘的出现,为企业提供文件安全管理,团队协作服务,解决了便捷性与安全性等问题,受到了企业的青睐。市面上的企业网盘工具也是五花八门,我们该如何选择适合自己团队的网盘工具呢? 本文盘点了几款还不错的…

反射-Class类分析

反射相关的主要类 java.lang.Class:代表一个类,Class对象表示某个类加载后在堆中的对象java.lang.reflect.Method:代表类的方法,Method对象表示某个类的方法java.lang.reflect.Field:代表类的成员变量,Fie…

20230422 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142. 环形链表 II

1、24. 两两交换链表中的节点 初始时,cur指向虚拟头结点,然后进行如下三步: 操作之后,链表如下: 看这个可能就更直观一些了: /*** Definition for singly-linked list.* public class ListNode {* i…

Android 日志框架使用

在实际开发中,经常会遇到需要打印日志并保存到文件中,便于后面取日志分析代码运行情况,当然如果只是打印日志不需要记录文件,使用android自带的log工具就完全够了, Log打印日志会记录到系统日志中,可以取出…

Rust之泛型、特性和生命期(一):基本概念

开发环境 Windows 10Rust 1.69.0 VS Code 1.77.3 项目工程 这里继续沿用上次工程rust-demo 泛型、特性和生命期 每种编程语言都有有效处理概念重复的工具。在Rust中,一个这样的工具就是泛型:具体类型或其他属性的抽象替身。我们可以表达泛型的行为或…

CorelDRAW 2023版本更新内容及安装详细教程

这里是CorelDRAW 2023版本更新内容及安装详细教程: CorelDRAW 2023是最新更新版本,在界面和功能上做了较大提升与优化: 1. 简洁界面:采用全新设计界面,简约而不简单。菜单和工具栏进行了整合与重组,更加直观。拥有自动标记和提示,易于上手使用。 2. 全新工作空间:提供“轻量…

基于51单片机的脉搏测量仪设计与实现

目录 前言 一、设计背景 二、系统功能 三、系统硬件设计 3.1 总体方案设计 3.2 信号采集电路设计 3.3 报警电路设计 3.4 下载电路 3.5 电源电路设计 3.6 OLED显示设计 3.7 键盘电路 四、系统软件设计 4.1 系统主程序设计 4.2 脉搏采集子程序设计 4.3 键盘程序设…

正式开赛|2023年“桂林银行杯”数据建模大赛暨全国大学生数学建模竞赛广西赛区热身赛

为学习贯彻党的二十大工作报告中关于加快发展数字经济、促进数字经济和实体经济深度融合的重要指示,不断推进数字化转型与金融科技创新,桂林银行联合全国大学生数学建模竞赛广西赛区组委会、广西应用数学中心(广西大学)共同主办20…

使用EasyExcel导出模板并设置级联下拉及其原理分析

一、概述 项目中有时会遇到需要导出一个Excel模板,然后在导出的Excel中填充数据,最终再调用接口批量把Excel中的数据导入到数据库当中的需求。 其中级联下拉选择,手机号校验,性别校验等都是比较常见的校验。 这里就已上面三种情…

王道计组(23版)3_存储系统

概述 RAM:随机存储器,任一个存储单元可以随机存取,易失。用作主存(DRAM)或Cache(SRAM) ROM:只读存储器,可随机读出,写入较慢,需刷新,非易失。Flash、SSD固态硬盘、U盘 _____SSD&…

RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明

🚀返回专栏总目录 文章目录 一、DTS 配置二、menuconfig 配置三、cmdline 配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。 一、DTS 配置 ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 此项是设置 PCIe…

arthas的简单使用

目录 arthas是什么为什么要使用arthasarthas能做什么安装arthas前提准备arthas主要命令trace命令watch命令monitor命令jad命令dashboard命令Thread命令sc命令mc命令redefine命令 实战演练1.定位到需要修改的类2.将定位到的.class文件反编译成.java文件3.修改.java文件4.将修改后…

深入浅出DPDK-1.1主流包处理硬件平台

DPDK用软件的方式在通用多核处理器上演绎着数据包处理的新篇章&#xff0c;而对于数据包处理&#xff0c;多核处理器显然不是唯一的平台。支撑包处理的主流硬件平台大致可分为三个方向&#xff1a;硬件加速器、网络处理器、多核处理器。 根据处理内容、复杂度、成本、量产规模…

Scala循环中断

目录 1.使用抛出和捕获异常的方法跳出当前循环2.使用Scala中的Breaks类的break方法3.测试4.简化 使用 ._ 来引入全部内容 方便调用 在scala中无法直接使用break关键字跳出当前循环&#xff0c;但有其他方法 1.使用抛出和捕获异常的方法跳出当前循环 def main(args: Array[Str…