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

news2024/9/23 23:31:56

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

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

通信模型

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

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

众所周知,传统的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.coloradmin.cn/o/452614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++引用详解

1.引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 比如: 这是简单的引用 注意:引用类型必须和引用实体是同一种类型。 2.…

数据仓库技术与Hive入门

文章目录 数据仓库基本概念场景案例主要特征主流开发语言-SQL数仓开发语言概述SQL语言介绍结构化数据SQL语法分类 Apache Hive入门Apache Hive 安装部署元数据 Hive SQL语言 数据仓库 基本概念 数据仓库(Data Warehouse,简称数仓、DW),是一个用于存储,分…

FMC128:具有出色的同步性能-8通道同步采集

板卡概述 FMC128 是一款 8 通道 250MHz 采样率 16 位 AD 采集 FMC子卡,符合 VITA57 规范,可以作为一个理想的 IO 模块耦合至 FPGA 前端,8 通道 AD 通过高带宽的 FMC 连接器(HPC)连接至 FPGA 从 而大大降低了系统信号…

八、vue_options之computed、watch属性选项

一、computed计算属性使用 (1)复杂data的处理方式 (2)computed 计算属性 computed计算属性初体验: 在我们通过Vue调用createApp方法传入一个对象的时候,我们之前写了data属性、methods属性,这…

关于一个C++项目的总结与反思:bosot搜索引擎

文章目录 写在前面关于这个项目的收获简单的项目介绍整体逻辑与第三方库每一步的具体细节util.hppparser.ccindex.hppsearcher.hpphttp_server.hpp其他模块 项目地址:boost_searcher: 项目:boost站内搜索 (gitee.com) 写在前面 这个项目是用C写的&…

聚焦能源 | 赛宁网安亮相2023年中国能源网络安全大会

​​4月21日,2023年中国能源网络安全大会(以下简称“大会”)在江苏南京成功落幕!为贯彻国家网络强国战略,加强能源网络安全技术创新、成果应用、人才培养与技术交流,大会推出主旨论坛、案例交流、展览展示等…

python:根据灰度值检查成像是否存在黑图情况

一、需求描述 1、摄像机在拍照的时候,会打开闪光灯进行拍照,假如闪光灯在拍照之后打开,就会产生黑图 2、因此,我们需要摄像机采集很多图片,检查是否每次拍照都是正常的 3、我们可以通过人眼进行查看,但是…

SpringCloud入门实战(七)-Hystrix服务熔断入门案例

📝 学技术、更要掌握学习的方法,一起学习,让进步发生 👩🏻 作者:一只IT攻城狮 。 💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看&…

Mysql 学习(七)独立表结构存储 一

独立表空间结构 InnoDB有很多类型表空间,这边主要是介绍独立表空间结构,因为这种会用的比较多讲之前我们先思考一个问题,如果我们以页为单位来分配存储空间的话,那两个页之间的物理距离可能很远,因为这是随机的&#…

2023有哪些适合学生用蓝牙耳机?300左右最好的蓝牙耳机推荐

2023年了,蓝牙耳机常常伴随手机出现在人们的日常生活当中,不管是听歌、运动、甚至玩游戏,大多数人都会选择戴蓝牙耳机。那么,有哪些适合学生用的蓝牙耳机?针对这个问题,我来给大家推荐几款300左右最好的蓝牙…

故障分析 | 从 Insert 并发死锁分析 Insert 加锁源码逻辑

作者:李锡超 一个爱笑的江苏苏宁银行 数据库工程师,主要负责数据库日常运维、自动化建设、DMP平台运维。擅长MySQL、Python、Oracle,爱好骑行、研究技术。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得…

Python初学小知识(十四):数据分析处理库Pandas

Python初学小知识(十四):数据分析处理库Pandas 十八 Pandas1 文件读取1.1 读取csv1.2 读取txt1.3 读取excel(xlsx) 2 内容读取2.1 读取行2.2 读取列 3 数据处理3.1 加减乘除3.1.1 列 与 元素3.1.2 列 与 列 3.2 最值、…

React-Native 热更新实践

以下是基于CodePush的热更新方案的实践,有需要的可以参考一下: 一、配置appcenter 1.1 安装appcenter 安装appcenter的命令如下: npm install -g appcenter-cli /** 安装完成后 */ appcenter help /** 如果出现帮助指令说明安装成功 */安装成功之后,登录appcenter,涉…

Python——线性回归、梯度下降、正则化(原理)

目录 1 线性回归-最小二乘法(LSM) 2 梯度下降 3 数据归一化/标准化 4 过拟合和欠拟合 4.1 过拟合的处理 4.2 欠拟合的处理 5 正则化 一种通过属性的线性组合来进行预测的 线性模型 ,其目的是找到一条直线或者一个平面或者更高维的超平面, 使得预…

FPGA学习笔记(三):PLL 锁相环

在 FPGA 芯片内部集成了 PLL(phase-locked loop,锁相环),可以倍频分频,产生其它时钟类型。PLL 是 FPGA 中的重要资源,因为一个复杂的 FPGA 系统需要不同频率、相位的时钟信号,一个 FPGA 芯片中 PLL 的数量是衡量 FPGA …

CAN总线网络中为什么需要安装终端电阻?

摘要: 为什么CAN总线网络中为什么需要安装终端电阻? ​在详解CAN总线:高速CAN总线和低速CAN总线的特性​文章中,高速CAN网络和低速CAN网络都需要安装终端电阻。 详解CAN总线:高速CAN总线和低速CAN总线的特性 高速CA…

HTB_Netmon CVE-2018-9276 RCE漏洞复现

文章目录 信息收集解题创建用户exppowershell脚本 信息收集 扫描结果还是很丰富的 nmap -sC -sV -p- -T4 ip ftp服务直接允许匿名登录了,直接连接,翻目录,在 Users/Public/里就看到了 user flag,get命令保存到本地查看&#xff0…

Vue3父组件向子组件传值之ArticleItem组件的封装与使用

组件概念 官方文档:组件基础 本节核心内容:组件的封装与传值 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构: 这和我们嵌套 HTML 元素的方式类似,Vue 实现了自己的组件模型,使我们…

易点易动固定资产管理平台如何帮助高校精准管理海量固定资产

高校拥有大量的固定资产,如教室、实验室、办公设备、体育设备等,这些资产数量庞大,分布广泛,管理难度大。传统的管理方式效率低下,难以实现精准和动态管理。易点易动固定资产管理平台利用现代信息技术,为高校提供一套智能化的资产管理解决方案,实现固定资产全流程的精准管理。 …

马云上三路和下三路

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