-
2020-08-20 13:56:44
一、 介质访问控制 ( Multiple Access Control )
介质访问控制 ( Multiple Access Control ) 协议 : 简称 MAC ;
① 信道划分 MAC 协议 : 基于 多路复用 技术划分资源 ;
- 网络负载重时 , 信道利用率高 , 公平 ;
- 网络负载轻时 , 信道利用率低 ;
② 随机访问 MAC 协议 : 用户根据随机意愿 发送信息 , 发送信息时 , 可以独占信道带宽 ;
- 网络负载重时 , 产生冲突开销 ;
- 网络负载轻时 , 共享信道效率高 , 单个站点可使用全部信道带宽 ;
③ 轮询访问 MAC 协议 : 既不产生冲突 , 又占用全部带宽 ;
- 轮询协议
- 令牌传递协议 ( 重点 )
二、 轮询协议
轮询协议 : 主节点 轮流 邀请 从属节点是否发送数据 ;
-
优点 : 每一次只允许一台主机发送数据 , 不会产生冲突 ;
-
缺点 : 轮询开销 , 等待延迟 , 单点故障 ;
三、令牌传递协议
令牌传递协议 :
① 令牌帧 : 特殊格式的 MAC 控制帧 , 没有任何信息 ;
② 令牌 作用 : 控制信道使用 , 确保 同一时刻 , 只有一个站点 独占信道 ;
③ 发送数据前提 : 每个节点 都可以在 令牌持有时间内 , 获得发送数据的权利 , 该时间并不是无限持有的 , 有时间限制 ;
令牌传递协议 特点 :
① 优点 : 令牌环网 没有 数据碰撞冲突 ;
② 缺点 :
- 令牌开销
- 等待延迟
- 单点故障
令牌传递协议 应用场景 : 令牌传递协议 应用于 令牌环网 ;
- 物理上是 星型拓扑 结构
- 逻辑上是 环形拓扑 结构
令牌传递协议 , 常用于负载较重 , 通信量较大的网络 ;
四、令牌传递协议 示例
网络上有 4 4 4 台主机 A , B , C , D A, B, C, D A,B,C,D ;
① 令牌传递 : 网络处于空闲状态 , 令牌就会在网络上各个主机之间进行传递 ;
② 持有令牌发送数据 : 当主机 A A A 想要发送数据时 , 当令牌传递到 A A A 时 , 将令牌修改为 使用 状态 , 在 令牌帧后 , 加上数据 , 然后将 令牌 + 数据帧 发送出去 ; 该数据目的是要发送给 D D D 主机 ;
③ 非目的主机继续传递令牌 : 当数据到达 B B B 主机时 , B B B 主机查看该数据是否是发给自己的 , 如果是 , 就将数据复制保存下来 , 如果不是 , 就继续传递下去 ;
④ 目的主机接收数据 继续传递令牌 : 当 令牌 + 数据帧 传递到 A A A 主机时 , 发现数据是发给自己的 , 将数据复制下来 , 然后校验通过后 , 将该令牌设置成闲置状态 , 然后再传递给下一个主机 ;
更多相关内容 -
AdHoc网络令牌控制方式的模型研究学年论文.doc
2021-09-16 11:25:57AdHoc网络令牌控制方式的模型研究学年论文.doc -
网络游戏-在通信网络中令牌控制的数据传输.zip
2021-09-20 08:52:31网络游戏-在通信网络中令牌控制的数据传输.zip -
网络游戏-在通信网络中调度令牌控制的数据传输.zip
2021-09-20 08:51:33网络游戏-在通信网络中调度令牌控制的数据传输.zip -
日期向量/数字到 ISO 8601 日期字符串:将日期向量/数字转换为 ISO ... 令牌控制日期/时间表示法。-matlab开发
2021-05-31 20:50:27日期字符串可以是ISO 8601时间戳,也可以是单个日期/时间值,由(可选)输入令牌选择。 多个令牌可用于输出多个字符串。 此函数支持的 ISO 8601 时间戳样式选项有: * 以日历、序数或周编号表示法的日期。 * 基本... -
Linux多线程实现令牌桶流量控制
2017-02-19 15:26:44Linux多线程实现令牌桶流量控制,内有makefile -
token-allowance-checker:控制ERC20令牌批准
2021-05-02 13:30:00但是,这也意味着DApp(或控制它的个人/实体)可以随时转让您的所有令牌,而无需任何进一步的批准。 此外,没有过期许可的概念。 批准后,批准将永远保留。 如果您不再信任DApp或其运营商,通常没有简单的方法来... -
php 基于redis使用令牌桶算法实现流量控制
2018-02-23 12:22:06系统在运行过程中,如遇上某些活动,访问的人数会在一瞬间内爆增,导致服务器瞬间压力飙升,使系统超...本文介绍php基于redis,使用令牌桶算法,实现访问流量的控制,提供完整算法说明及演示实例,方便大家学习使用。 -
基于RateLimiter的令牌桶算法实现限速控制和计算法实现限流控制
2020-08-01 10:05:31本demo适用于分布式环境的基于RateLimiter令牌桶算法的限速控制与基于计数器算法的限量控制,可应用于中小型项目中有相关需求的场景(注:本实现未做压力测试,如果用户并发量较大需验证效果)。 -
java实现令牌桶限流
2020-09-11 08:59:33限流是对某一时间窗口内的请求数进行限制,保持...常用的限流算法有令牌桶和和漏桶,而Google开源项目Guava中的RateLimiter使用的就是令牌桶控制算法。 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流 -
browser-token.js:browser-token.js 控制浏览器的 uuid 令牌和其他控制令牌
2021-05-29 04:54:17生成只有字母、数字或合而为一的令牌。 为唯一 ID DOM 元素生成令牌。 在数组中注入了新的令牌。 比较数组中的 Token。 文件 Token.generateDefault(n); Token . generateDefault ( 4 ) Random Output: xR7S ... -
15行Python代码带你轻松理解令牌桶算法
2021-01-20 04:56:22在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送,令牌桶算法就实现了这个功能, 可控制发送到网络上数据的数目,并允许突发数据的发送。 什么是令牌 从名字上看令牌... -
一种费用最优令牌缓冲流量调度负载控制方法
2020-10-25 22:45:36为有效解决多链路共享令牌缓冲流量调度系统负载较高的问题,设计了一种多链路共享令牌缓冲池流量调度模型,提出“费用”指标以更准确地刻画系统负载状况,基于费用最优研究了令牌缓冲流量调度负载控制方法。... -
qps流量控制-令牌桶算法
2020-02-05 20:21:32令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。 当桶满时,新添加的令牌被丢弃。 令牌桶是一个存放固定...一般并发系统有对应处理请求的最大能力,这里称最大qps,也需要有阈值设置,如果超过最大qps,则可能导致系统不稳定,产生雪崩效应,甚至连锁反应。
限流可以认为服务降级的一种,限流就是限制系统的输入和输出流量已达到保护系统的目的。一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行,一旦达到的需要限制的阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:部分拒绝处理。
令牌桶算法
令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。 当桶满时,新添加的令牌被丢弃。
令牌桶是一个存放固定容量令牌(token)的桶,按照固定速率往桶里添加令牌。令牌桶算法基本可以用下面的几个概念来描述:
- 令牌将按照固定的速率被放入令牌桶中。比如每秒放10个。
- 桶中最多存放b个令牌,当桶满时,新添加的令牌被丢弃。
- 当1个请求到达,如果桶中还有令牌,将从桶中删除1个令牌,接着请求会被处理。
- 如果桶中的令牌不足1个,则不会给该请求分发令牌,该请求会被直接返回,日志记录该请求超阈值。
-
minime:Minimi令牌。 与ERC20兼容的可克隆令牌
2021-04-23 17:23:24调用createCloneToken函数的地址将成为令牌控制器,并且可以在函数调用中指定令牌的默认设置。 function createCloneToken( string _cloneTokenName, uint8 _cloneDecimalUnits, string _cloneTokenSymbol, uint _... -
基于多令牌环调度的家庭网络QOS控制方案 (2006年)
2021-05-20 05:18:45针对这一问题,提出了一种用于有线共享信道的多令牌环媒介访问控制机制,设计了复杂令牌调度算法及相应的调度步长分配和准入控制算法,实现了分布式的参数化Qos控制。所提出的复杂令牌调度算法从根本上克服了单令牌... -
aragon-network-token:Aragon Network令牌的智能合约
2021-02-05 05:13:20| |Aragon网络令牌 智能合约和其他资源。...:原始v1代币销售合同,包括 :最终的v1令牌控制器,严重限制了公开的控制器功能。重要合同ANTv2 :令牌的主合同。 轻巧,支持 , ,令牌铸币和令牌刻录。 -
流量控制令牌桶封装库实例
2017-02-09 23:19:51令牌桶封装库实例,流量控制 -
人工智能-基于模糊神经网络融入令牌的ATM网络拥塞控制研究.pdf
2022-06-29 05:39:49人工智能-基于模糊神经网络融入令牌的ATM网络拥塞控制研究.pdf -
redis令牌机制实现秒杀系统
2018-10-18 19:00:232) 乐观锁:数据库乐观锁版本号控制 2) 高并发情况下系统压力以及用户体验 解决方案: redis 本教程采用:redis中list类型达到令牌机制完成秒杀。用户抢redis中的令牌,抢到 令牌的用户才能进行支付,支付成功之后... -
嵌入式系统/ARM技术中的Atmel基于ARM的安全微控制器面向电子令牌和嵌入式系统
2020-12-04 02:17:20Atmel Corporation(爱特梅尔)日前宣布推出AT91SC192192CT-USB,这是一款基于FLASH、由ARM SC100提供支持的安全微控制器。AT91SC产品是一系列低功率、高性能的32位RISC安全微控制器,具有ROM或FLASH程序存储器、... -
行业分类-设备装置-针对复制写入的基于令牌的准入控制.zip
2021-09-12 13:34:52行业分类-设备装置-针对复制写入的基于令牌的准入控制 -
JAVA基础14-JavaWeb(三十一)令牌机制防止表单的重复提交
2019-02-07 21:00:19(1)造成表单重复提交的原因 1、由于服务器缓存慢或网络延迟的原因,重复点击提交按钮 2、已经提交成功,刷新界面(forward) 3、已经提交成功,通过回退再次点击...(2)使用令牌机制解决表单的重复提交问题 ...(1)造成表单重复提交的原因
1、由于服务器缓存慢或网络延迟的原因,重复点击提交按钮
2、已经提交成功,刷新界面(forward)
3、已经提交成功,通过回退再次点击提交按钮
(2)使用令牌机制解决表单的重复提交问题
-
论文研究-多链路时延反馈共享令牌流量拥塞控制.pdf
2019-09-12 17:05:47改善网络应用的性能,针对多链路环境下流量控制机制存在的问题,设计了一种多链路共享令牌缓冲池流量调度模型,分析了链路中数据传输时延特点,提出一种基于时延反馈信息的共享令牌流量拥塞控制算法,根据链路时延... -
jiffy:带有事件计时令牌的轻量级 mediaElement 控制器
2021-07-17 10:03:33瞬间带有事件计时令牌的轻量级 mediaElement 控制器 -
利用个人应急计划来控制令牌教室中的作业完成:案例研究
2021-06-29 19:12:46The utilization of an individual contingency program to control assignment completion in a token classroom: A case study TRIAL TEACHING: THE MISSING LINK 191 The child also benefits;... -
高并发系统限流操作之令牌桶实现可变TPS控制
2021-03-06 17:40:52本次简单记录一下令牌桶的实现:令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。令牌桶算法.png实现思路:用...年前有个需求,批量请求供应商API,要有限流操作,并支持TPS与并发数可配置,那时候简单的查了查资料,任务结束就过去了,最近又有个限流的小需求,所以又翻出了以前的代码。
本次简单记录一下令牌桶的实现:
令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。
令牌桶算法.png
实现思路:
用LinkedBlockingQueue作为装令牌的桶,Executors.newSingleThreadScheduledExecutor()作为定时器定时将令牌放入桶中,使用构建者模式的代码风格。忘了以前在哪抄的了,就这样吧。
贴上核心代码:
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* TokenBucket
*/
public class TokenBucket {
/**
* 每秒最多请求数量
*/
private int maxFlowRate;
/**
* 每秒平均请求数量
*/
private int avgFlowRate;
/**
* 队列来缓存桶数量
*/
private LinkedBlockingQueue tokenQueue;
/**
* 由定时任务持续生成令牌。这样的问题在于会极大的消耗系统资源,如,某接口需要分别对每个用户做访问频率限制。
* 假设系统中存在6W用户,则至多需要开启6W个定时任务来维持每个桶中的令牌数,这样的开销是巨大的。
* 可以做成延迟计算的形式,每次请求令牌的时候,看当前时间是否晚与下一次生成令牌的时间,计算该段时间的令牌数,
* 加入令牌桶,更新数据。
*/
private ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
/**
* The Mutex do not use directly.
*/
private volatile Object mutexDoNotUseDirectly = new Object();
/**
* The Is start.
*/
private volatile boolean isStart = false;
/**
* The constant A_CHAR.
*/
private static final Byte A_CHAR = 'a';
/**
* Instantiates a new Token bucket.
*/
private TokenBucket() {
}
/**
* New builder token bucket.
*
* @return the token bucket
*/
public static TokenBucket newBuilder() {
return new TokenBucket();
}
/**
* 每秒内最大请求数量设置
*
* @param maxFlowRate 每秒内最大请求数量
* @return 当前令牌同
*/
public TokenBucket maxFlowRate(int maxFlowRate) {
this.maxFlowRate = maxFlowRate;
return this;
}
/**
* 每秒平均请求数量设置
*
* @param avgFlowRate 每秒平均请求数量
* @return 当前令牌同
*/
public TokenBucket avgFlowRate(int avgFlowRate) {
this.avgFlowRate = avgFlowRate;
return this;
}
/**
* 构造者模式
*
* @return the token bucket
*/
public TokenBucket build() {
//初始化
init();
//返回当前对象
return this;
}
/**
* 初始化
*/
private void init() {
//初始化桶队列大小
if (maxFlowRate > 0) {
tokenQueue = new LinkedBlockingQueue<>(maxFlowRate);
}
//初始化令牌生产者
TokenProducer tokenProducer = new TokenProducer(avgFlowRate, this);
//每秒执行一次增加令牌操作
scheduledExecutorService.scheduleAtFixedRate(tokenProducer, 0, 1, TimeUnit.SECONDS);
//系统启动
isStart = true;
}
/**
* 停止任务
*/
public void stop() {
isStart = false;
scheduledExecutorService.shutdown();
}
/**
* 查看任务是否执行
*
* @return the boolean
*/
public boolean isStarted() {
return isStart;
}
/**
* 增加令牌
*
* @param tokenNum the token num
*/
private void addTokens(Integer tokenNum) {
// 若是桶已经满了,就不再家如新的令牌
for (int i = 0; i < tokenNum; i++) {
tokenQueue.offer(A_CHAR);
}
}
/**
* 获取令牌
*
* true:获取到1个令牌,非阻塞
*
* false:未获取到令牌,非阻塞
*
* @return boolean
*/
public boolean tryAcquire() {
synchronized (mutexDoNotUseDirectly) {
// 否存在足够的桶数量
if (tokenQueue.size() > 0) {
//队列不为空时返回队首值并移除,队列为空时返回null。非阻塞立即返回。
Byte poll = tokenQueue.poll();
if (poll != null) {
//获取到令牌
return true;
}
}
}
//未获取到令牌
return false;
}
/**
* 令牌生产者
*/
private class TokenProducer implements Runnable {
/**
* 每次加入令牌的数量
*/
private int tokenNum;
/**
* 当前令牌桶
*/
private TokenBucket tokenBucket;
/**
* 令牌生产者构造方法
*
* @param tokenNum 每次加入令牌的数量
* @param tokenBucket 当前令牌桶
*/
private TokenProducer(int tokenNum, TokenBucket tokenBucket) {
this.tokenNum = tokenNum;
this.tokenBucket = tokenBucket;
}
@Override
public void run() {
//增加令牌
tokenBucket.addTokens(tokenNum);
}
}
}
-
使用 Golang 实现简易的令牌桶算法
2022-04-24 19:51:31在网络中传输数据的时候时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上数据的数目,并允许突发数据的发送。 -
流量控制算法-----令牌桶------CBS---CIR
2018-09-28 20:51:32主题思想:通过速度可知的令牌控制速度不可知的数据报文。 令牌桶限速核心思想:通过速度可知的令牌桶来控制速度不可知的报文(流量:各种类型报文)。 CBS:commit burst size,承诺突发尺寸,可表示为图中红色... -
Windows 令牌窃取
2022-03-11 17:06:25Window 令牌是windows访问控制模型中的重要组成部分,主要用来对线程操作安全对象时对身份权限进行识别,获得了令牌,就可以在不提供密码或其他凭证的情况下访问网络和系统资源。这些令牌将持续存在于系统中 (除非...