热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【EOS干货】带宽速率限制和存储使用限制(第五篇)

DAWN-472⁃BandwidthRateLimiting&StorageUsageLimitsDAWN-472 带宽速率限制和存储使用限制bytemasteropenedthi
DAWN-472 ⁃ Bandwidth Rate Limiting & Storage Usage LimitsDAWN-472  带宽速率限制和存储使用限制

《【EOS干货】 带宽速率限制和存储使用限制(第五篇)》

bytemaster opened this issue on 6 Sep 2017

bytemaster在2017年9月6日开始了这个话题

本文是本系列文章的第5篇,也是最后一篇。

bytemaster commented on 8 Sep 2017

bytemaster在2017.9.8回复了这个帖子:

The atomic algorithm above can get quirky and may impact overall performance by forcing cache syncs. To avoid atomics all together each cycle will need to be generated in phases:

1 apply all transactions in cycle and calculate storage delta (store on context)

2 apply map reduce techniques to sum all storage deltas

3 identify any accounts that exceed their storage allocation

4 if any fail then undo all threads in cycle that reference over used contract

5 reapply transactions in those threads skipping transactions that participated in overflow

上面的原子算法可能会变得有点奇怪,可能会因为强制同步缓存而影响整体性能。为了避免所有原子撞在一起,需要分阶段运行:

1,应用流程中的所有交易,并计算存储增量(存储在环境中)

2,应用地图缩减技术来总和所有存储增量

3,记录所有超出其存储分配量的帐号

4,一有失败,就撤消流程中所有被参考使用合约的线程

5,在线程中重新应用之前跳过溢出的交易

This multi-step process makes the cost of producing a block more expensive in the failure event (forcing an undo of a cycle), but should result in relatively simple execution path in the nominal case where it can be pipelined.

这种多步骤的过程使得在故障事件中出块的成本更高(强制撤销整个流程),但在某种程度上它像流水线一样,产生相对简单的执行路径。

Transactions that can assert 0 changes in storage usage are an order of magnitude more efficient because they can be scheduled without the need to sum deltas or the potential for undoing. In fact, transactions that can assert that they will only reduce storage usage can enable potential optimizations by eliminating the potential for failing all transactions.

存储使用情况没有变化的交易可以提高一个数量级的效率,因为它们可以进行调度,无需对累计或撤销的可能性进行求和。事实上可以断言,他们只会减少存储使用量的交易,通过消除可能失败的交易来实现更大的优化。

bytemaster commented on 8 Sep 2017

bytemaster在2017.9.8回复了这个帖子:

Conclusions:

1 each message shall specify the account to bill storage adjustments to

◦ must be either the code account or one of the authorities authorizing the transaction

2 block producers will do a two-phase cycle production process

◦ apply all of the transactions

◦ adjust all of the storage usage if success

▪ mark accounts and threads that exceed limits

▪ if any marked then reapply transactions discarding those that failed

3 non producers will do a two-phase application process

◦ apply all of the transactions

◦ adjust all of the storage used fail block if this does not succeed.

▪ alternatively, if they trust the producers, they can simply skip the usage check.

4 Replay

◦ during replay it should not be necessary to track all adjustments every block, instead it may be more efficient to do an accounting of size one time at the end.

结论:

1,每条信息应该让指定账号调整记账存储

◦ 必须是代码账户或者其中一个授权交易的授权方

2,出块者将需要两个阶段的生产流程

◦ 申请所有交易

◦ 如果申请成功,调整所有存储的使用情况

▪ 标记超出限制的账户和线程

▪ 如果已经被标记过了,重新申请那些之前被丢弃的交易

3,非生产者将需要两个阶段的申请流程

◦ 申请所有交易

◦ 如果不成功,调整所有存储失败的块

▪ 或者,它们信任出块者的话,可以直接跳过这个过程使用检查

4,重播

◦ 在重播期间,没有必要追踪每一块的所有调整,在最后计算大小会更有效率

learnforpractice commented on 13 Sep 2017

learnforpractice在2017.9.13 回复了这个帖子

Should we limit the creation of account name too? Without limitation, good names will soon be exhausted.

我们是不是也因要限制账号的注册?没有限制的话,好名字很快就会被用完了。

(本长篇译文完结)

本文链接:https://github.com/EOSIO/eos/issues/353

翻译:Lochaiching

校正:Sheldon

更多内容,扫描以下二维码关注“EOS技术爱好者”!

《【EOS干货】 带宽速率限制和存储使用限制(第五篇)》

这篇文章对你有用的话,可以用ERC-20钱包扫描以下地址给我们赞赏哟〜

《【EOS干货】 带宽速率限制和存储使用限制(第五篇)》 二维码原文地址:0xBdE77CaFFf33970322c0F1f59F6B047de3AC88F9


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • DSP中cmd文件的命令文件组成及其作用
    本文介绍了DSP中cmd文件的命令文件的组成和作用,包括链接器配置文件的存放链接器配置信息、命令文件的组成、MEMORY和SECTIONS两个伪指令的使用、CMD分配ROM和RAM空间的目的以及MEMORY指定芯片的ROM和RAM大小和划分区间的方法。同时强调了根据不同芯片进行修改的必要性,以适应不同芯片的存储用户程序的需求。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
author-avatar
James
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有