微服务和去中心化应用程序之间的区别是什么



我是去中心化应用程序的新手,在阅读了一些文章后,我混淆了微服务和去中心化的应用程序。有人能帮我理解它们之间的区别吗。我知道微服务可以使用spring-boot&码头工人。有没有其他技术可以构建它。我认为以太坊是用来开发去中心化应用程序的。有人能帮我理解其中的区别吗?

微服务应用程序仍然在您的基础设施上运行,您仍然可以控制它的所有节点、状态和基础设施。因此,尽管是分布式的(即使基础设施可能不是你的,比如第三方云),你仍然有能力干涉它的所有方面。

去中心化应用程序的主要卖点是,理论上没有人可以真正干预其基础设施,因为它不是由单个实体拥有的。从理论上讲,世界上任何人(用户群最大,去中心化应用程序就越有弹性)都可以成为基础设施中的一个节点,"当前有效状态"是根据节点之间的某种协议计算的(因此,除非你能干预你不拥有的大多数节点,否则你不能自己改变应用程序的状态)。

从某种意义上说,它们看起来很相似,这是对的,因为它们都是分布式应用程序。去中心化的只是更进一步,不被单一实体"拥有"one_answers"控制",成为匿名社区的产物。

编辑

因此,假设您/您的公司制作了一个非常酷的微服务应用程序,并将其托管在世界各地的一堆第三方云上,以确保它非常冗余且始终可用。如果你改变主意(或者可能被政府规定强制这样做),可能会突然关闭应用程序,或禁止某些用户使用,或编辑/审查当前发布的内容。因为它是你的应用程序,所以你可以完全控制它。尽管你的意图可能很好,但你是一种负担,是生态系统中的一个失败点。

现在,如果你的应用程序是去中心化的。。。没有特定的人/实体可以被追捕来强迫这种行为。您需要寻找为应用程序提供基础设施并执行其商定规则集的单个独立节点的数千/数百万所有者。那么,你将如何禁止用户/审查内容等呢?你(理论上)不能。。。除非你能到达它的大多数节点,而且这已经被证明是相当困难的,甚至暴力可能几乎不可能实现。

微服务

微服务是一种软件架构。这个想法是,你有许多小应用程序——微服务,每个都只专注于解决一个单一的目标,但做得很好。

微服务的特定实例可以是例如运行HTTP服务器以管理用户的应用程序。它可以具有用于在数据库中添加、查看和删除用户的HTTP端点。然后,您可以将这样的应用程序和数据库一起部署在某个服务器上。

经过相当程度的简化,我们可以说微服务与您在计算机上运行的网络浏览器没有什么不同。你的网络浏览器和微服务的区别在于,微服务将在服务器上运行,暴露出某种网络接口,而你的浏览器运行在你的个人电脑上,它不会暴露出网络接口供其他人交互。

最重要的是,单个微服务只是一个在服务器上运行的应用程序,你可以随时修改它的代码,随时停止它,你可以更改它使用的数据库中的数据

去中心化应用

去中心化应用部署到区块链。区块链是一个计算机网络(以太坊主网有数以万计的节点),所有计算机都运行同一程序。当你编写去中心化应用程序(就以太坊区块链而言,称为智能合约)并"部署它"时,会发生的情况是,你基本上将代码插入到这些计算机网络中,每个计算机都可以使用它。

一旦你的应用程序的代码在网络中,你就可以与它交互——你可以通过向作为这个区块链网络一部分的服务器发送JSON-RPC请求,来定义你在去中心化应用程序中定义的接口。

然后需要一些时间,直到网络接收到您的执行请求。如果一切顺利,您的请求最终会被分发到网络,并由连接到区块链的每一台计算机执行。

这样做的后果是,如果网络中的某台计算机试图对结果撒谎,那么网络中的其他计算机就会注意到这种欺诈行为。

这里的底线是去中心化的应用程序不是在一台计算机上执行的,而是在许多(可能是数千台)计算机上执行,即使作为创建者,你也不能修改它的代码或数据(你只能在有限的程度上)

最新更新