技术分享|Flow接入节点(Access node)重构介绍
原文链接:https://github.com/onflow/flow/blob/master/specs/access-node-architecture/index.md
翻译:Maris ,Flow中文社区技术大使。转载请备注来源。
概要
Flow 接入节点(Access node)自上线后没有发生大的变化,其作为 Flow 通用网关的目标已经达成。即便如此,有明显迹象表明 Flow 的这一部分的设计扔需要持续的改进,以更好地支持可扩展性,并提高服务和代码的模块化设计水平。此外,这也是flow愿景的一部分,即设置无权限和无抵押的节点类型,让构建者可以更加便捷、低门槛的访问Flow。
在本文档中,我们建议重新构建访问节点以启用无权限操作。我们利用 DPS(流数据供应服务)进行状态索引和本地脚本执行,大大减少了执行节点的负载。提议的更改还可以显着改进 Flow 操作的水平可扩展性。
这种新架构将现有的访问节点模块拆分为以下组件:
Flow 区块链数据服务(Flow Blockchain Data Service),封装了与 Flow 网络的所有直接交互和参与状态同步协议,并提供 API 允许辅助组件查询区块链状态并订阅更新。
Flow数据供给服务(Flow Data Provisioning Service ,DPS) ,使用来自 Flow Flow 区块链数据服务的执行状态更新来构建完整的执行状态索引,从而能够在任意块高度上快速执行本地脚本。
Flow API 服务,提供一种用户友好的方式来查询区块链状态,并将交易发送到网络。
Flow API 服务和 DPS 设计为可选的辅助组件,在部署基础架构时,为它们的配置使用提供多样和灵活的选择。
总体目标
将现有的 Access Node 代码完全分离为 un-stake Observer Service和 staked Access Node。
将Access API从Access Node中分拆成独立模块,设计为独立的进程/服务,它将能处理任何Blockchain Data Service. 我们将其称为Flow API Service。
封装了通过共识追随者和执行状态同步提供的Blockchain Data Service实时同步系统。通过Protocol API和State Streamer接口,可以对对这些状态进行访问。
该State Streamer接口是一个通用组件,它可以允许任何消费者,例如DPS访问由Blockchain Data Service.
不考虑的目标点
不涉及长期历史访问(请参阅其他问题)
不解决公共节点的运营问题(速率限制、访问控制等)
目标要点
Blockchain Data Service处理从对等网络接收的原始协议和执行状态数据。 这些状态数据,通过Protocol API以及流式接口,发送给调用者。
使用State Streamer Registration API和State Streamer客户端访问Blockchain Data Service状态。
DPS索引执行状态,实时的通过State Streamer进行传递。这些索引状态通过DPS API来响应脚本调用请求.
构架设计
详细设计
到目前为止,接入节点已经提供了以下内容:
作为 Flow 网络中的质押节点
基于协议状态参与质押gossip网络
处理来自公共调用者的实时访问 API 请求
执行基本请求验证
将脚本执行委托给上游执行节点
将交易委托给收集节点以进行网络处理
脚本委派EN执行是一个明显相对简单的成果,它限制了访问节点的可扩展性并影响了事务吞吐能力。此外,Access API 请求处理的扩展受到 Access Node 内代码紧密耦合的限制。DPS 的引入向可查询的本地持有状态迈出了第一步,该状态可用于扩展 Access Node。随后,执行状态同步提供了一种去中心化的方式来在网络上共享执行状态。
■ 权责修改
区块链链的同步管理,主要依赖于Blockchain Data Service提供的一套统一的功能,这些功能是Access Node基于Observer Service构建的,并且可以用作可信链状态的独立模块。
区块链数据服务
遵循协议共识,执行状态同步
服务于State Streamer API
服务于Protocol API
新Access Node版本基于上述原始节点功能设计:
接入节点
作为 Flow 网络中的质押节点参与
随时跟踪协议状态和执行数据
接受新交易,验证它们,并将它们转发到收集节点
连接公共质押 libp2p 网络
通过公开状态同步和执行数据同步协议的公共 libp2p 网络,提供对 Flow 区块链协议和执行状态的访问
将来自质押网络的消息子集,中继到公共网络
Observer Service的命名也体现了其网络非参与的角色。
观察节点服务
作为公共数据的消费者参与 Flow 网络,无需质押或许可
随时跟踪协议状态和执行数据
接受新交易,并进行验证,并将交易转发给Access Nodes
FLOW API 服务
部署为独立服务
提供外部 Flow Access API(gRPC/REST)
如果DPS已部署,则查询DPS API执行状态查询,否则返回错误
查询运行协议状态Protocol API的节点上的下游Blockchain Data Service
代理发送交易请求
Access Nodes代理事务到下游Protocol API
Observer Services代理事务到下游Access Node
DPS提出了两个有限的更改:将共识追随者提取到Blockchain Data Service. 然后弃用基于 GCP 的执行状态同步,并将所有链同步逻辑切换到State Streamer.
数据供应服务 (DPS)
部署为一组独立的服务
通过State Streamer API连接到Access Node或Observer Service
基于State Streamer API订阅协议和执行状态更新
状态流和流注册 API
提供用于订阅协议和执行状态更新的 API
提供 1:1 的数据服务(可能是 gRPC over web sockets)
许可范围(不打算向公众公开)
提供抽象层,因此客户端无需直接与 Flow 网络交互
API 通过Execution Data Module和的数据Protocol State Module进行数据对接
重构详细构架图
初始点
重构步骤 1
非结构性考虑:
形式化 State Client 和 State API 规范
根据配置声明,在引导程序中建立正确的 libp2p 网络Access Node初始化Observer Service
区块链核心服务构建
构建Flow API服务
附属问题
历史数据访问问题:
虽然此新架构不支持在此初始修订版架构中直接访问历史状态,但我们正在与社区合作伙伴协作来实现这一目标。
技术分享|Flow接入节点(Access node)重构介绍相关推荐
- mysql数据库j电子课件,MYSQL数据库技术分享PPT演示课件
<MYSQL数据库技术分享PPT演示课件>由会员分享,可在线阅读,更多相关<MYSQL数据库技术分享PPT演示课件(29页珍藏版)>请在人人文库网上搜索. 1.数据库技术分享, ...
- Flink入门技术分享PPT之二
继续为小伙伴们做关于Flink的技术分享,这次主要是简单介绍事件时间.水印和窗口的相关知识. 多图预警~ 紫薯布丁紫薯布丁紫薯布丁紫薯布丁紫薯布丁紫薯布丁紫薯布丁紫薯布丁紫薯布丁紫薯布丁紫薯布丁紫薯布 ...
- iOS-FXDanmaku弹幕库介绍、相关技术分享
前言 去年, 2016年, 一大波直播平台在移动端涌出, 直播慢慢步入了人们的视角. 网上如今能够看到各式各样的直播, 如秀场直播.游戏直播.体育直播.娱乐直播等等. 在各种类型的直播中, 弹幕在PC ...
- AEM技术分享(一)AEM介绍
AEM是什么? AEM全称Adobe Experience Management,是一套基于OSGI.Apache Sling和Java Content Repository技术的完整企业解决方案,多 ...
- web开发技术和技术分享_2020年将改变Web开发的顶级技术
web开发技术和技术分享 Web improvement encompasses a gigantic arrangement of rules and procedures each site en ...
- 数据库技术基础:数据库管理系统的功能介绍笔记
1.DBMS功能介绍 1.1 数据定义 数据库定义语言(DDL):可以对数据库结构描述,包括外模式.模式.内模式的定义:数据库完整性定义:安全保密定义比如口令.级别和存取权限.这些定义存储在数据字典中 ...
- 技术分享|明源云天际集成开放平台接口中心基于IdentityServer4的鉴权机制
源宝导读:企业数字化生态建设中为解决集成多样性和资源统一管理的痛点引入企业级网关,网关作为资源访问的大门,身份认证鉴权是其业务的重中之重,本文将介绍企业级网关-天际集成开放平台是如何通过Identit ...
- 技术分享|单元测试推广与实战-在全新的DDD架构上进行单元测试
源宝导读:单元测试是伴随软件工程出现和发展的,怎么做大家可能各有见解.本文介绍了单元测试中的反模式,强调了可测试性的重要性,并以 DDD 架构项目的迭代进程作为示例,演示了单元测试的组织过程,展示了单 ...
- 黄文俊:Serverless小程序后端技术分享
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 黄文俊,现任腾讯云SCF无服务器云函数高级产品经理,多年企业级系统开发和架构工作经验,对企业级存储.容器平台.微服务架构.无服务器计算等领域 ...
最新文章
- [Android应用]《花界》V1.0 正式版隆重发布!
- JAVA实现简单链表操作
- 针对于多线程概念的理解
- Win32 像素格式描述符学习
- ASP.NET MVC Model绑定(二)
- 从 RxJS 到 Flink:如何处理数据流?
- python哪个版本支持xp_windows支持哪个版本的python
- LL1分析构造法_16条数学得分法,想提分快来看!
- INITRANS和MAXTRANS参数的作用
- 【Xilinx-Petalinux学习】-02-建立PetaLinux工程
- 麒麟Linux关闭telnet,银河麒麟系统管理员使用手册(30页)-原创力文档
- 初始jquery事件-动态添加的新元素没有绑定上旧元素的事件
- java 开三次根号_java里实现开根号
- Allegro PCB操作技巧
- codery-why蘑菇街商城项目梳理笔记
- 一个在线学习正则表达式的网站
- 查看IC卡芯片的位置
- 039 罗尔定理之题型一(结论中仅有ξ,还原法)
- java计算机毕业设计快递物流管理源码+数据库+lw文档+系统
- 4. 多重背包问题 I
热门文章
- 程序人生:东软,我把青春献给了你 (整理)
- python实时脚本_web 监控 python 脚本
- Windows系统删除多余管理员账户
- v54.04 鸿蒙内核源码分析(静态链接) | 一个小项目看中间过程 | 百篇博客分析HarmonyOS源码
- 深入理解Java注解类型(@Annotation)
- 1.StarForce导入GF源码
- 用Power Point画界面设计图——在Web原型设计工具上“另辟蹊径”
- Capital One应用区块链协同认证系统专利
- 【HDU】5468 Puzzled Elena
- QT 求反正切用于显示qprocessbar进度