TinyOS -数据发布实验

news2024/12/26 16:49:05

文章目录

  • 简介
    • 分析

简介

分发协议主要用于维护网络共享配置的一致性,这里的共享配置可以是节点传感器采样的周期、节点LPL醒睡的周期或者节点运行程序的映像等。每个节点都会维护一份这样的配置,分发协议负责通知每个节点这些配置的改变,并通过数据包的交换保证最终的网络配置一致性。即使考虑到网络丢包和链路动态性的影响,网络的一致性也必须得到保障。因此分发协议需要保证网络在不出现孤岛的情况下会尽可能迅速的收敛一致。

根据分发数据的大小,分发十几Kbytes的程序映像与分发2bytes的常量参数,分发协议的设计有很大的区别。但是对于大数据分发和小数据分发,我们都可以将分发协议分为两部分:控制流和数据流。数据流很大程度上取决于分发数据大小,但是控制流对于不同数据大小则是相同的。程序影响分发协议Deluge会在控制流中附加当前影响的版本号信息,当节点发现分发的版本号信息与本地的程序版本号不同时,它会进入数据接收阶段去更新程序映像。

Drip和Deluge分发协议都使用了Trickle来维护网络的版本一致性。在Trickle的工作模式下,节点周期性的广播自己拥有的数据版本号。当收到一个更新的版本号时,节点就获知自己的数据已经过时,需要从拥有新数据的节点索取数据。通过这样的方式,网络的一致性得到了保证。为了避免过多的版本号声明消息拥塞网络,Trickle使用的是指数的后退周期。即当广播完版本号后,在一段时间没有收到更新请求,则下次广播的间隔时间调长一倍。

Drip分发协议是一种针对小数据量的数据分发协议,主要用于系统参数的配置和更新。对于每一个变量,Drip都维护了一个版本号。因此,Drip可以细粒度地控制变量的更新时间和频率。

  • 结果现象
    选择0号、1号、2号三个节点同时烧录EasyDissemination代码,烧录提示信息如下:
    节点0 2会随着节点1同步亮灯,如果节点1撤走或烧录空程序 0 、2节点停止亮灯

分析

在这里插入图片描述
首先我们需要在应用程序中使用一个接口StdControl(在例程中被重命名为DisseminationControl)来控制Dissemination模块的工作,该接口连接到DisseminationC模块上。定义好DisseminatorC后,需要把应用程序中使用到的两个接口DisseminationValue和DisseminationUpdate连接到相应的DisseminatorC,

Dissemination提供了两个接口:DisseminationValue和DisseminationUpdate,分别如下图所示。

interface DisseminationValue< t> {  
    command const t* get();  
    command void set( const t* );  
    event void changed();  
}  

当节点收到一个更新的数据版本号时,会触发changed事件。在changed时间的处理中,会调用get()和set()命令来更新相应的数据。

interface DisseminationUpdate< t> {  
    command void change(t* ONE newVal);  
}  

当节点更新了一个数据时,change(t* ONE newVal)都会被调用,以触发一次新的Dissemination来把更新的数据发送到全网络。

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

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

相关文章

国产分布式数据库开启新篇章!详解安全可靠测评结果公告(2024年第2号)

重磅消息&#xff01;2024年的安全可靠测评结果&#xff08;数据库篇&#xff09;终于揭晓了&#xff01;&#x1f680; 9月30日&#xff0c;国庆前夕&#xff0c;中国信息安全测评中心和国家保密科技测评中心联合发布了今年第二号测评结果&#xff0c;这份名单有效期三年&…

大数据新视界 --大数据大厂之大数据驱动智能客服 -- 提升客户体验的核心动力

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

MATLAB与R语言在建模中的合作与应用(下篇)

目录 目录 模型训练的协同使用 1. 使用 R 语言进行统计建模 2. 使用 MATLAB 进行机器学习建模 模型评估与调优 1. 在 R 中评估模型性能 2. 在 MATLAB 中进行模型优化 实战示例&#xff1a;MATLAB 与 R 的协同建模 总结 在上篇文章中&#xff0c;我们介绍了 MATLAB 和 R…

打工人狂喜,轻松定时发圈

自动定时发圈软件有哪些优势&#xff1f; 1、不用下载安装软件 2、不需要绑定手机或电脑 3、不对电脑或手机做限制 4、不越狱不刷机 5、能更新迭代 6、有售后服务 7、使用安全登录&#xff0c;保障账号安全的 8、不用去做独立部署&#xff08;可以选择&#xff09; 9、…

class 032 位图

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. 左程云的个人空间-左程云个人主页-哔哩哔哩视频…

重生之我们在ES顶端相遇第 20 章 - Mapping 参数设置大全(进阶)

文章目录 0. 前言1. 前置知识 - _source2. copy_to3. doc_values4. index5. enabled6. normalizer7. null_value8. 总结 0. 前言 在基础篇&#xff0c;我们只介绍了索引 Mapping 的基本用法。 本章将深入探讨日常中较经常使用的 Mapping 其他参数配置。 不想看过程&#xff0c…

Qt 实现动态时钟

1.实现效果 2.widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace

陪护小程序|护理陪护系统|陪护小程序成品

智能化&#xff0c;作为智慧医疗宏伟蓝图的基石&#xff0c;正引领着一场医疗服务的深刻变革。在这场变革的浪潮中&#xff0c;智慧医院小程序犹如璀璨新星&#xff0c;迅速崛起&#xff0c;而陪护小程序的诞生&#xff0c;更是如春风化雨&#xff0c;细腻地触及了老年病患、家…

Spring Cloud Netflix Ribbon 负载均衡详解和案例示范

1. 引言 在传统的集中式架构中&#xff0c;负载均衡器一般是放置在服务器端的&#xff0c;例如 Nginx等。随着微服务架构的兴起&#xff0c;服务实例的数量和部署地点变得更加动态和分布式&#xff0c;这使得在客户端进行负载均衡成为了一种可行且更灵活的方案。Netflix Ribbo…

【Linux】Linux命令与操作详解(二)权限管理、存储管理(磁盘分区、格式化、挂载)、进程管理、yum软件包安装

文章目录 一、前言二、权限管理2.1、用户权限2.2、权限说明2. 3、常用命令1、chmod2、chown3、chgrp 三、存储管理磁盘的分区、格式化与挂载1、新建一块硬盘2、在新建硬盘中进行分区3、格式化4、挂载 四、进程管理进程管理命令1、ps2、top3、nice 五、YUM软件包安装1、修改默认…

算法6:模拟运算

文章目录 z字形变幻外观数列数青蛙 题目均来自于力扣 z字形变幻 class Solution { public:string convert(string s, int numRows) {int n s.size();if(n < numRows || numRows 1) return s;int d 2 * numRows - 2;string res;for(int j 0; j < n; j d){res s[j]; …

Chromium 中<a> 标签href 属性实现分析c++

HTML 链接&#xff08;Anchor&#xff09;是网页之间跳转的核心部分。 HTML 使用链接与网络上的另一个文档相连。 HTML中的链接是一种用于在不同网页之间导航的元素。 链接通常用于将一个网页与另一个网页或资源&#xff08;如文档、图像、音频文件等&#xff09;相关联。 …

如何解决位置在表里的二维码的错行问题

众所周知&#xff0c;sap 里的二维码&#xff0c;在从其他形式转换成二维码之后&#xff0c;会经常有数据位置改变的情况&#xff0c;想让它老老实实待在原地很难&#xff0c; 这里要注意设置行间距&#xff0c;如果行间距不合适&#xff0c;就会导致错位

桥梁检测系统源码分享

桥梁检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision 研究…

Vue入门-指令学习-v-on

v-on 作用&#xff1a;注册事件 添加监听 提供处理逻辑 语法&#xff1a; v-on:事件名"内联语句" v-on:事件名"methods中的函数名" 注意&#xff1a;" v-on&#xff1a;"可以替换为" " v-on:click"XXX" --> cli…

CPU中的寄存器是什么以及它的工作原理是什么?

在计算机科学中&#xff0c;寄存器是数字设备中的一个重要组成部分&#xff0c;它用于存储数据和指令以快速处理。寄存器充当临时存储区&#xff0c;信息可以在这里被快速访问和操作&#xff0c;以执行复杂任务。寄存器是计算机中最基础的存储类型&#xff0c;它们在帮助机器高…

如何写出Pythonic的代码?

f-string、三元操作、各种解析式、生成器装饰器的熟练运用&#xff0c;“内库”引用和函数封装再加持PEP8&#xff0c;撰写的脚本不pythonic都难。&#x1f60e; (笔记模板由python脚本于2024年10月07日 18:03:27创建&#xff0c;本篇笔记适合特别喜欢python的coder翻阅) 【学习…

LeetCode讲解篇之377. 组合总和 Ⅳ

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 总和为target的元素组合个数 可以由 总和为target - nums[j]的元素组合个数 转换而来&#xff0c;其中j为nums所有元素的下标 而总和target - nums[j]的元素组合个数 可以由 总和为target - nums[j] - nums[k]的…

哪个牌子充电宝质量好又靠谱?年度四大热门款充电宝清单来了

​当今时代&#xff0c;智能手机已融入我们日常生活的方方面面&#xff0c;成为了不可或缺的伙伴。然而&#xff0c;随之而来的充电需求也日益增长&#xff0c;我们在选择充电宝时经常会面临困惑。面对市场上众多的充电宝品牌和型号&#xff0c;如何挑选一款性价比高、性能稳定…

机器学习框架(含实例说明)

机器学习框架是用于开发和部署机器学习模型的软件库和工具集。它们提供了一系列的算法、工具和基础设施&#xff0c;帮助开发者更高效地构建、训练和部署机器学习模型。以下是一些主要的机器学习框架及其详细介绍&#xff1a; 1. TensorFlow TensorFlow 是由Google开发的开源…