微服务和去中心化应用有什么区别?

3

我是分布式应用程序的新手,阅读了一些文章后,我对微服务和分布式应用程序之间的区别感到困惑。有人可以帮助我理解它们之间的区别吗?我知道可以使用 Spring Boot 和 Docker 构建微服务。还有其他技术可以用来构建吗?我认为以太坊被用来开发分布式应用程序。有人可以帮助我理解它们之间的区别吗?

2个回答

5
一个微服务应用程序仍然在您的基础设施上运行,您仍然控制其所有节点、状态和基础设施。因此,尽管是分布式的(即使基础设施可能不属于您,比如第三方云),您仍然有权干预其所有方面。
去中心化应用程序的主要卖点在于理论上没有人可以干涉其基础设施,因为它不属于单个实体所有。理论上,世界上任何人(用户群越大,去中心化应用程序就越具有弹性)都可以成为基础设施的节点,“当前有效状态”是根据节点之间的某种协议计算出来的(因此,除非您能够干预大多数节点,而这些节点并非您所拥有,否则您无法单独更改应用程序的状态)。
从某种意义上说,您是正确的,因为它们都是分布式应用程序。去中心化应用程序只是进一步不被单个实体“拥有”和“控制”,而是匿名社区的产物。
编辑
假设您/您的公司开发了一个非常酷的微服务应用程序,并将其托管在全球各地的一些第三方云上,以确保其高度冗余且始终可用。您的心情突然改变(或者可能被政府法规强制这样做)可以突然关闭该应用程序,或禁止某些用户使用它,或编辑/审查当前正在发布的内容。由于这是您的应用程序,您完全控制。尽管您的意图可能很好,但您是生态系统中的责任和单点故障。
现在,如果您的应用程序是去中心化的...就没有特定的人/实体需要追踪以强制执行此类行为。您需要追踪成千上万个独立节点的所有者,这些节点提供应用程序的基础设施并执行其约定的规则。那么,如何禁止用户/审查内容/等等?您(理论上)无法...除非您能够接触到大多数节点,而这已经被证明非常困难,甚至使用暴力也几乎不可能实现。

非常感谢。您能否推荐一些关于去中心化应用的网站或书籍? - Vinayak Manjare
我没有任何正式的目标可以指导你...但是如果你研究比特币如何达成账本协议的规范,你会学到很多东西。在那里,你将能够看到状态是节点交互的产物以及它如何在运行过程中积极地丢弃无效状态。 - Pedro Goes

5

微服务

微服务是一种软件架构。其思想是将许多小型应用程序(微服务)集中于解决单一目标,但实现非常优秀。

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

简单来说,我们可以认为微服务与您在计算机上运行的Web浏览器并没有太大区别。您的Web浏览器与微服务之间的区别在于,微服务将在服务器上运行,并公开某种网络接口,而您的浏览器运行在个人计算机上,并且不会暴露任何供他人交互的网络接口。

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

分散式应用程序

分散式应用程序部署到区块链上。区块链是由许多计算机组成的网络(Ethereum MainNet拥有数万个节点),所有计算机都运行着相同的程序。当您编写分散式应用程序(以Ethereum区块链的术语称为智能合约)并“部署”它时,实际上是将代码插入到这些计算机的网络中,并使每个计算机都可以使用它。

一旦您的应用程序代码在网络中,您就可以与其交互 - 您可以通过向此区块链网络的某个服务器发送JSON-RPC请求来调用在分散式应用程序中定义的接口。

之后,需要一些时间才能将执行请求选取到网络中。如果一切顺利,您的请求最终会分发到连接到区块链的每台计算机上进行执行。

这意味着,如果网络中的某台计算机试图欺骗结果,则余下计算机将注意到这种欺诈企图。

总之,分散式应用程序不是在一台计算机上执行,而是在许多(可能数千)台计算机上执行,即使作为创建者,您也无法修改其代码或数据(只能在有限程度上)。


非常感谢,它帮了我很多。 - Vinayak Manjare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接