简析Web3 架构:前端、后端和数据

简介: 当谈论 Web 3.0 架构时,通常指的是 DApps,它代表去中心化应用程序。从发展历史来看,Web 2.0 架构由最熟悉的组件组成:

当谈论 Web 3.0 架构时,通常指的是 DApps,它代表去中心化应用程序。从发展历史来看,Web 2.0 架构由最熟悉的组件组成:

image.png

  • 前端:浏览器从主机服务器获取并呈现给用户的客户端应用程序。目前主流的框架包括 VueReactAngularEmber 或者其它流行框架。
  • 后端:服务器端应用程序,通常,一个应用程序会接管所有繁重的逻辑,它通过 API 与客户端交互,并使用一种流行的后端语言编写:JAVANodeJsC#GORubyPython
  • 数据库:可以是 NoSQLSQL 数据库服务器,用于存储所有客户端和服务器数据,目前最流行的数据库是 PostgresqlMongo

当然,还有更多的组件,这取决于可扩展性,但这不在本文的主题范围内。

Web 3.0 DApp中的后端

image.png

DApp 的主要区别在于去中心化,不需要集中式数据库或 Web 服务器,可以利用区块链在计算机网络之间分发应用程序。区块链将充当“状态机”,通过验证预定义规则来维护程序状态和稳定性。状态机在区块链网络的所有参与者之间传播,验证通过关于程序稳定性的共识进行存档。

后端逻辑通过智能合约实现,稍后将部署到共享状态机(区块链网络)。因此,后端驻留在点对点网络中,每个人都可以通过匹配某些标准(例如,拥有和锁定加密货币以便对更改进行投票或向程序提出建议)做出贡献。接下来看下DApp中前端是如何工作的。

Web 3.0 DApp中的前端

image.png

DApp 中前端架构主要专注于与智能合约(去中心化程序)的通信,它不同于常见的前端-后端通信。区块链网络中的每个节点都承载着程序的状态,如果要与智能合约进行通信,则必须与其中一个节点进行通信,它可能是:

  • 测试节点,如 InfuraAlchemyQuicknode
  • 或者通过自己运行状态机来设置自己的节点

启动区块链基础设施可能非常具有挑战性,尤其是想要扩展它以添加更多节点时。当用户提供时会很方便,缺点是它创建了一个集中的依赖组件。所有提供商都在实施 JSON-RPC 规范以与区块链网络进行通信。RPC 或远程过程调用,是一种请求-响应协议,它定义了允许客户端将消息发送到远程机器以执行功能并检索响应的规则。在这样的通信中,程序在客户端机器上运行,这意味着客户端不知道远程机器,所有通信都通过 HTTP 或 Web 套接字进行。

当提供商连接到区块链时,客户端能够获取有关区块链状态的信息。但是客户端如何写入区块链网络?所有写请求事务都需要使用客户端的私钥进行签名,每笔交易都会向客户收取 gas 费,这是一种加密货币,它将用于验证交易的其他节点(矿工)。

这样的提供者,如 Metamask,就像交易签署者和提供者一样。它将私钥存储在浏览器中并在客户端发出交易请求时进行签名,它还连接到区块链网络。

Web 3.0 DApp 中的数据层

image.png

由于交易 gas 费用,将数据存储在区块链中可能会非常昂贵,使用非区块链解决方案(如点对点存储的 IPFSSwarm)更为合理。

  • IPFS :一种点对点文件系统协议,允许跨机器网络存储数据,在没有流行浏览器的原生支持的情况下,IPFT 使用私有或公共网关连接到网络。
  • Swarm : 类似于 IPFT,唯一的区别是系统通过以太坊区块链网络中的智能合约维持。

为了使前端也去中心化,可以使用相同的点对点存储解决方案。

最后是为了简化查询存储在区块链或点对点网络中的数据,可以使用Graph,它将 GraphQL 查询转换为智能合约事件和点对点网关。

总结

Web 3.0 DApp 架构可能看起来相当势不可挡,确实如此,但是出现了更多旨在简化构建体验的工具,例如 hardhatthirdweb


相关文章
|
11天前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
5天前
|
监控 API 持续交付
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势、面临的挑战以及最佳实践策略。不同于传统的单体应用,微服务通过细粒度的服务划分促进了系统的可维护性、可扩展性和敏捷性。文章首先概述了微服务的核心概念及其与传统架构的区别,随后详细阐述了构建微服务时需考虑的关键技术要素,如服务发现、API网关、容器化部署及持续集成/持续部署(CI/CD)流程。此外,还讨论了微服务实施过程中常见的问题,如服务间通信复杂度增加、数据一致性保障等,并提供了相应的解决方案和优化建议。总之,本文旨在为开发者提供一份关于如何在现代后端系统中有效采用和优化微服务架构的实用指南。 ####
|
7天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
10天前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
8天前
|
消息中间件 监控 数据管理
后端开发中的微服务架构实践与挑战####
【10月更文挑战第29天】 在当今快速发展的软件开发领域,微服务架构已成为构建高效、可扩展和易于维护应用程序的首选方案。本文探讨了微服务架构的核心概念、实施策略以及面临的主要挑战,旨在为开发者提供一份实用的指南,帮助他们在项目中成功应用微服务架构。通过具体案例分析,我们将深入了解如何克服服务划分、数据管理、通信机制等关键问题,以实现系统的高可用性和高性能。 --- ###
30 2
|
11天前
|
前端开发 JavaScript API
探索JAMstack架构:现代Web开发的新范式
【10月更文挑战第28天】JAMstack架构是一种现代Web开发方法,以其高性能、高安全性和易于维护的特点受到开发者青睐。本文深入探讨了JAMstack的核心概念、优势、工具链及其如何改变Web开发方式,包括静态网站生成、API驱动和预渲染等关键技术。
|
12天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
49 4
|
17天前
|
缓存 运维 监控
后端开发中的微服务架构实践与挑战#### 一、
【10月更文挑战第22天】 本文探讨了微服务架构在后端开发中的应用实践,深入剖析了其核心优势、常见挑战及应对策略。传统后端架构难以满足快速迭代与高可用性需求,而微服务通过服务拆分与独立部署,显著提升了系统的灵活性和可维护性。文章指出,实施微服务需关注服务划分的合理性、通信机制的选择及数据一致性等问题。以电商系统为例,详细阐述了微服务改造过程,包括用户、订单、商品等服务的拆分与交互。最终强调,微服务虽优势明显,但落地需谨慎规划,持续优化。 #### 二、
|
16天前
|
前端开发 API UED
深入理解微前端架构:构建灵活、高效的前端应用
【10月更文挑战第23天】微前端架构是一种将前端应用分解为多个小型、独立、可复用的服务的方法。每个服务独立开发和部署,但共同提供一致的用户体验。本文探讨了微前端架构的核心概念、优势及实施方法,包括定义服务边界、建立通信机制、共享UI组件库和版本控制等。通过实际案例和职业心得,帮助读者更好地理解和应用微前端架构。
|
13天前
|
设计模式 人工智能 API
后端开发中的微服务架构实践与挑战#### 一、
本文将深入浅出地探讨微服务架构在后端开发中的应用实践,分析其带来的优势与面临的挑战。通过具体案例,展示如何有效地构建、部署和管理微服务,旨在为读者提供一份实用的微服务架构实施指南。 #### 二、