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

时间:2018-06-21 10:53:20

标签: spring-boot microservices ethereum bitcoin

在经历了一些我在微服务和分散式应用程序之间混淆的文章之后,我对分散式应用程序还是陌生的。有人可以帮助我了解他们之间的区别。我知道可以使用spring boot和docker构建微服务。还有其他任何技术可以构建它吗?我认为以太坊用于开发去中心化应用程序。有人可以帮助我了解差异吗?

2 个答案:

答案 0 :(得分:2)

微服务应用程序仍在您的基础结构上运行,您仍然控制着其所有节点,状态和基础结构。因此,尽管分布很分散(即使基础架构可能不是您所需要的,例如第三方云),您仍然可以在所有方面进行干预。

分散式应用程序的主要卖点是,从理论上讲,没有人可以实际上干扰其基础架构,因为它不是由单个实体拥有的。从理论上讲,世界上任何人(并且其用户群最大,去中心化应用程序变得越有弹性)都可以成为基础架构中的节点,并且“当前有效状态”是基于节点之间的一种协议计算的(因此,除非您可以干扰大部分不属于您的节点,也不能自行更改应用程序的状态。

从某种意义上说,您似乎对它们看起来很相似是正确的,因为它们都是分布式应用程序。分散的机构走得更远,不再由单个实体“拥有”和“控制”,而是成为匿名社区的产物。

编辑

因此,假设您/您的公司制作了一个非常酷的微服务应用程序,并且将其托管在世界各地的第三方云中,以确保它非常冗余且始终可用。改变您的想法(或者可能被政府法规强迫这样做)可能会突然关闭该应用程序,或者禁止某些用户使用该应用程序,或者编辑/检查当前发布在其上的内容。由于它是您的应用,因此您完全可以控制。尽您所能,但您是一个责任,是生态系统中的单点故障。

现在,如果您的应用程序是去中心化的……则没有特定的人/实体可以追捕这种行为。您需要寻找成千上万的单个独立节点的所有者,这些独立节点为应用程序提供基础结构并执行其商定的规则集。那么您将如何禁止用户/审查内容/等等?从理论上讲,您不能……除非您可以到达其大部分节点,并且这已经被证明是相当困难的,甚至蛮力也几乎不可能实现。

答案 1 :(得分:2)

微服务

微服务是相当的软件体系结构。这个想法是,您有许多小型应用程序-微服务,每个应用程序仅专注于解决单个目标,但实际上做得很好。

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

在相当简单的程度上,我们可以说微服务与您在计算机上运行的Web浏览器没有什么不同。 Web浏览器和微服务之间的区别在于,微服务将在服务器上运行,从而暴露某种网络接口,而浏览器在个人计算机上运行,​​并且不会公开网络接口供其他人与之交互。

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

去中心化应用

去中心化应用程序已部署到区块链。区块链是计算机网络(以太坊MainNet有成千上万个节点),它们都运行相同的程序。当您编写去中心化的应用程序(以太坊区块链称为智能合约)并“部署”时,实际上是您将代码基本上插入了这台计算机网络,并且每台计算机都可以使用它。

一旦您的应用程序代码在网络中,您就可以与它进行交互-您可以通过将JSON-RPC请求发送到属于该区块链网络的服务器,来在分散式应用程序中定义的接口。

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

其结果是,如果网络中的某台计算机试图撒谎,那么网络的其余部分将注意到欺诈行为。

最重要的是,分散式应用程序不是在一台计算机上执行,而是许多(可能是数千个)执行,甚至作为创建者,您也无法修改其代码或数据(只能在一定程度上进行修改)