基于区块链技术的物联网设备影子服务

一.    背景
物联网设备影子是指真实的物联网设备在物联网平台中对应的虚拟设备,设备影子服务存储了对应物理设备的当前数据。用户使用物联网设备的实时数据都是从物联网设备影子服务获取,如果设备影子服务的数据被修改,就容易导致用户获取到的数据与真实数据不一致的情况。比如安防设备的实时报警数据、设备的故障数据等,一旦被篡改就会导致严重的后果。
当前比较大的物联网平台厂商,比如百度、阿里、腾讯等的物联网平台都没有引入区块链的技术特征来保护设备影子服务。
二.    研究的意义
基于区块链的去中心化、不可篡改的技术特征来实现物联网平台的设备影子服务。可以让物联网设备影子服务实现去中心化,单个服务节点的故障不会造成整个服务异常,尤其可以保护用户的物联网设备数据在平台上不能被篡改。
以一个工厂来举例,工厂里面有大量的传感器,如PLC、DCS系统、生产车间等设备,每天会生产上亿的物联网数据。如果其中的数据被人篡改会带来严重后果,结合区块链的不可篡改特征恰好能解决这种安全隐患。工厂里面对数据的获取要求实时性很高,所以把区块链与物联网设备影子结合就会非常适用。
三.    创新点
1.    物联网与区块链的结合应用;
2.    物联网设备影子服务实现了去中心化,且数据不能被篡改;
3.    采用paxos算法来实现区块链的数据共识,用于提升效率;
四.    关键技术点
1.    物联网设备数据的分布
在集群化部署时,设备数据的分布十分重要,会影响到整个集群的负载情况,如果使用手动平均分配的方式是不利于集群管理,尤其是数据规模很大时,是非常不现实的。
通过基于伪随机分布算法的策略来解决设备数据分配的难题,此策略表面上是随机的但还是基于一定规律的,此处依据的规律是设备自增长ID取余,此方式可以根据集群规模大小动态调整集群里面每个节点所分到的设备数量。
2.    数据通信方式
整个集群是带有区块链特征的,是无中心的。根据设备影子服务部署环境都是在同一个网络,所以采用组播技术用于区块链节点之间的通信。
3.    基于paxos的共识技术
Pow和Pos的共识技术都有性能缺陷,不符合设备影子服务实时性的要求。所以考虑使用paxos算来实现一种全新的区块链共识算法。
Paxos算法解决的问题正是分布式一致性问题,即一个分布式系统中的各个进程如何就某个值(决议)达成一致。
Paxos算法运行在允许宕机故障的异步系统中,不要求可靠的消息传递,可容忍消息丢失、延迟、乱序以及重复。它利用大多数 (Majority) 机制保证了2F+1的容错能力,即2F+1个节点的系统最多允许F个节点同时出现故障。
一个或多个提议进程 (Proposer) 可以发起提案 (Proposal),Paxos算法使所有提案中的某一个提案,在所有进程中达成一致。系统中的多数派同时认可该提案,即达成了一致。最多只针对一个确定的提案达成一致。
4.    区块数据的存储
每个设备影子节点服务不会存储所有设备的数据,而只会存储设备标识信息,这样可以减少存储空间占用,提高存储效率。存储采用实时数据库,不依赖于第三方存储系统,在设备影子服务里面自己实现基于levelDB的实时存储。
leveldb 是一个持久化的键值存储数据库引擎。LevelDB 存储介质有内存和硬盘。内存中有 memtable 和 immutable memtable。 硬盘中有 log 文件,manifest 文件,current 文件和 sstable 文件。memtable 是可读可写的,我们写一个东西,是先到这里,它存的东西达到一定数量就会将部分数据存到 immutable memtable,它是不可写的。内存的数据会持久化到硬盘,先是到 log 文件。然后 manifest 会记录这个文件存储什么键值对,然后 current 会帮助 manifest 记录那些键值对。
 

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

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

相关文章

黑猫的牌面

解法&#xff1a; 桶 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \nint main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);vector<int> tong(1001);int t 4;int k, pai;long lon…

LeetCode 每日一题 树合集 Day 16 - 27

终于是开学了&#xff0c;想了想每日一更频率太高&#xff0c;以后每周更新一周的每日一题。 103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c…

探索网络通信与序列化:打造现代Web应用的基石20240227

在构建现代Web应用的过程中&#xff0c;理解网络通信协议与数据序列化技术的基本概念至关重要。这些技术不仅是网络世界的基础设施&#xff0c;而且也是开发者设计和实现高效、可靠应用的关键工具。本文旨在深入浅出地介绍这些概念&#xff0c;帮助开发者更好地掌握构建Web应用…

嵌入式开发——面试题操作系统(调度算法)

linux7种进程调度算法 1&#xff1a;先来先服务&#xff08;FCFS&#xff09;调度算法 原理&#xff1a;按照进程进入就绪队列的先后次序进行选择。对于进程调度来说&#xff0c;一旦一个进程得到处理机会&#xff0c;它就一直运行下去&#xff0c;直到该进程完成任务或者因等…

阿里云降价,这泼天的富贵你接不接?附云服务器价格表

阿里云能处&#xff0c;关键时刻ta真降价啊&#xff01;2024新年伊始阿里云带头降价了&#xff0c;不只是云服务器&#xff0c;云数据库和存储产品都降价&#xff0c;阿里云新老用户均可购买99元服务器、199元服务器&#xff0c;续费不涨价&#xff0c;阿里云百科aliyunbaike.c…

智能指针(Smart Pointers)

定义 智能指针&#xff08;Smart Pointers&#xff09;是C中的一种高级特性&#xff0c;它提供了一种自动管理动态分配内存的机制。通过智能指针&#xff0c;开发者可以避免手动管理内存所带来的问题&#xff0c;如内存泄漏和悬挂指针等。智能指针的主要目的是确保当对象不再需…

【力扣hot100】刷题笔记Day17

前言 今天竟然不用开组会&#xff01;天大的好消息&#xff0c;安心刷题了 46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 回溯&#xff08;排列&#xff09; class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 回溯def backtrack():if len(…

C++学习第四天(类与对象下)

1、构造函数的其他知识 构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值 构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xff0c;但是不能将其称为对对象中成员变量的初始化&#xff0c;构造函…

Nginx+keepalived 高可用高性能

什么是高可用: 在使用 Nginx 做反向代理或者负载均衡的时候,都是以 Nginx 为入口,如果 Nginx 宕机了,那么所有的服务都无法正常提供,影响非常严重。所有我们需要保证 nginx 高可用,就是配置备份机,前一个挂了,还有后一个。 为了避免负载均衡服务器宕机造成严重影响,…

关于游戏报错提示x3daudio1_7.dll丢失怎么修复?多个实测有效方法分享

x3daudio1_7.dll 是一个与 Microsoft DirectX 相关的重要动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它主要服务于Windows操作系统下的多媒体和游戏应用程序。 一、以下是关于 x3daudio1_7.dll 文件的详细介绍 名称与位置&#xff1a; 文件名&#xff1a;x3daud…

PHP堆栈+errLog定位

调用堆栈&#xff08;Call Stack&#xff09;是一个记录了程序在运行时所有活动子例程的栈结构。它以函数调用的方式描述了程序的执行流程和调用关系。 在PHP中&#xff0c;我们可以通过打印PHP调用堆栈来辅助调试和定位代码中的问题。本文将介绍如何在PHP中打印调用堆栈&…

探秘Python的Pipeline魔法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站AI学习网站。 目录 前言 什么是Pipeline&#xff1f; Pipeline的基本用法 Pipeline的高级用法 1. 动态调参 2. 并行处理 3. 多输出 …

Spring底层源码分析

spring依赖注入底层原理解析 spring之bean对象生命周期步骤详情 流程&#xff1a; UserService.class —>推断构造方法—>普通对象----依赖注入------>初始化&#xff08;afterPropertiesSet方法&#xff09;------>初始化后&#xff08;AOP&#xff09;------…

Zabbix“专家坐诊”第231期问答

问题一 Q&#xff1a;用docker-compose部署zabbix&#xff0c;部署完后如果要修改zabbix的配置应该要改docker-compose文件里的环境变量吧&#xff1f;改了环境变量之后只能重建容器才能生效吗&#xff1f;能不能在不影响已经配好的那些监控项的情况下让新的环境变量生效&#…

洛谷P1331海战

题目背景 在峰会期间&#xff0c;武装部队得处于高度戒备。警察将监视每一条大街&#xff0c;军队将保卫建筑物&#xff0c;领空将布满了 F-2003 飞机。 此外&#xff0c;巡洋船只和舰队将被派去保护海岸线。不幸的是&#xff0c;因为种种原因&#xff0c;国防海军部仅有很少…

win安装卸载python3.13

一、安装 访问python官网&#xff1a;https://www.python.org/ 点击“Downloads” 点击“Windows” 找到自己要下载的版本和位数&#xff0c;比如我这个是3.13版本、64位的安装包 下载好了之后&#xff0c;双击安装包 勾选“Add python.exe to PATH”&#xff1a;把python环…

[记录]-PyCharm中的Unresolved Reference疾病专治

转载https://blog.csdn.net/qq_36166962/article/details/115905359?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170930227516800227476736%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id170930227516800227476736&biz_i…

作业1-224——P1331 海战

思路 深搜的方式&#xff0c;让它只遍历矩形块&#xff0c;然后在下面的遍历中判断是否出现矩形块交叉&#xff0c;但是很难实现&#xff0c;然后发现可以通过在遍历过程中判断是否合法。 参考代码 #include<iostream> #include<cstdio> using namespace std; …

SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突

SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突 &#xff0c;错误如图&#xff1a; 问题原因&#xff1a;不能直接删除作业 任务&#xff0c;需要先删除计划里面的日志、删除代理作业、删除子计划以后才能删除作业。 解…

蓝桥杯:真题讲解3(C++版)附带解析

报纸页数 来自&#xff1a;2016年七届省赛大学C组真题&#xff08;共8道题) 分析&#xff1a; --画出报纸长的样子&#xff0c;如果我们在上面多画一张报纸&#xff0c;那么就符合题意的5&#xff0c;6&#xff0c;11&#xff0c;12。 观察这张图&#xff1a;观察3&#xf…