微服务和去中心化应用程序有什么区别
What is difference between Microservices and Decentralized applications
我是去中心化应用程序的新手,在阅读了一些文章后我混淆了微服务和去中心化应用程序。有人可以帮助我了解它们之间的区别。我知道可以使用 spring boot & docker 构建微服务。目前是否有任何其他技术可以构建 it.I 认为以太坊用于开发去中心化应用程序。有人可以帮助我了解其中的区别吗?
微服务应用程序仍然在您的基础设施上运行,您仍然控制着它的所有节点、状态和基础设施。因此,尽管是分布式的(即使基础设施可能不属于您,例如第 3 方云),您仍然有能力干预它的所有方面。
去中心化应用程序的主要卖点是理论上没有人可以实际干预其基础设施,因为它不属于单个实体。理论上,世界上任何人(其用户群越大,去中心化应用程序的弹性就越大)都可以成为基础设施中的一个节点,"current valid state" 是根据节点之间的一种协议计算的(因此,除非您可以干预大多数不属于您的节点,您无法自行更改应用程序的状态。
从某种意义上说,它们看起来很相似是对的,因为它们都是分布式应用程序。去中心化的只是更进一步,不是由单个实体 "owned" 和 "controlled" 而是匿名社区的产物。
编辑
所以假设 you/your 公司制作了一个非常酷的微服务应用程序,您将其托管在世界各地的一堆第 3 方云上,以确保它非常冗余并且始终可用。您改变心意(或者可能是政府法规迫使您这样做)可能会突然关闭应用程序或禁止某些用户使用它或禁止 edit/censor 当前发布的内容。因为它是 您的 应用程序,所以您可以完全控制。尽管你的意图可能很好,但你是一种责任,是生态系统中的单点故障。
现在,如果您的应用程序是去中心化的...没有特定的 person/entity 可以被追查以强制执行此类行为。您需要寻找 thousands/millions 单个独立节点的所有者,这些节点为应用程序提供基础设施并执行其商定的规则集。那么您将如何禁止用户/审查内容/等等?你(理论上)不能......除非你能到达它的大部分节点,而且这已经被证明是相当困难的,甚至是蛮力也几乎不可能实现。
微服务
微服务更像是软件架构。这个想法是你有很多小的应用程序——微服务,每个都专注于解决一个单一的目标,但做得很好。
微服务的特定实例可以是例如用于管理用户的应用程序运行 HTTP 服务器。它可以具有用于在数据库中添加、查看和删除用户的 HTTP 端点。然后,您将在某个服务器上将此类应用程序与数据库一起部署。
通过相当程度的简化,我们可以说微服务与您在计算机上 运行 的 Web 浏览器没有什么不同。您的 Web 浏览器和微服务之间的区别在于,微服务将 运行 在服务器上,公开某种网络接口,而您的浏览器在您的个人计算机上运行,它不会公开网络接口供其他人与之交互.
归根结底,单微服务只是服务器上的一个应用程序运行,你可以随时修改它的代码,你可以随时停止它,你可以改变数据它正在使用的数据库。
去中心化应用
去中心化应用部署到区块链。区块链是计算机网络(以太坊主网有数万个节点),都是 运行 相同的程序。当您编写去中心化应用程序(称为智能合约,就以太坊区块链而言)并且您 "deploy it" 时,发生的情况是您基本上将您的代码插入到这个计算机网络中,并且每个计算机都可以使用它。
一旦您的应用程序代码在网络中,您就可以与其交互 - 您可以通过向服务器发送 JSON-RPC 请求来使用您在去中心化应用程序中定义的接口,该服务器是其中的一部分区块链网络。
您的执行请求需要一些时间才能被网络接收。如果一切顺利,您的请求最终会分发到网络并由连接到区块链的每台计算机执行。
这样做的结果是,如果网络中的某些计算机试图对结果撒谎,网络的其余部分就会注意到欺诈行为。
这里的底线是去中心化应用程序不是在一台计算机上执行的,而是许多(可能是数千)甚至作为创建者,你不能修改它的代码或数据(你只能在有限的学位)
我是去中心化应用程序的新手,在阅读了一些文章后我混淆了微服务和去中心化应用程序。有人可以帮助我了解它们之间的区别。我知道可以使用 spring boot & docker 构建微服务。目前是否有任何其他技术可以构建 it.I 认为以太坊用于开发去中心化应用程序。有人可以帮助我了解其中的区别吗?
微服务应用程序仍然在您的基础设施上运行,您仍然控制着它的所有节点、状态和基础设施。因此,尽管是分布式的(即使基础设施可能不属于您,例如第 3 方云),您仍然有能力干预它的所有方面。
去中心化应用程序的主要卖点是理论上没有人可以实际干预其基础设施,因为它不属于单个实体。理论上,世界上任何人(其用户群越大,去中心化应用程序的弹性就越大)都可以成为基础设施中的一个节点,"current valid state" 是根据节点之间的一种协议计算的(因此,除非您可以干预大多数不属于您的节点,您无法自行更改应用程序的状态。
从某种意义上说,它们看起来很相似是对的,因为它们都是分布式应用程序。去中心化的只是更进一步,不是由单个实体 "owned" 和 "controlled" 而是匿名社区的产物。
编辑
所以假设 you/your 公司制作了一个非常酷的微服务应用程序,您将其托管在世界各地的一堆第 3 方云上,以确保它非常冗余并且始终可用。您改变心意(或者可能是政府法规迫使您这样做)可能会突然关闭应用程序或禁止某些用户使用它或禁止 edit/censor 当前发布的内容。因为它是 您的 应用程序,所以您可以完全控制。尽管你的意图可能很好,但你是一种责任,是生态系统中的单点故障。
现在,如果您的应用程序是去中心化的...没有特定的 person/entity 可以被追查以强制执行此类行为。您需要寻找 thousands/millions 单个独立节点的所有者,这些节点为应用程序提供基础设施并执行其商定的规则集。那么您将如何禁止用户/审查内容/等等?你(理论上)不能......除非你能到达它的大部分节点,而且这已经被证明是相当困难的,甚至是蛮力也几乎不可能实现。
微服务
微服务更像是软件架构。这个想法是你有很多小的应用程序——微服务,每个都专注于解决一个单一的目标,但做得很好。
微服务的特定实例可以是例如用于管理用户的应用程序运行 HTTP 服务器。它可以具有用于在数据库中添加、查看和删除用户的 HTTP 端点。然后,您将在某个服务器上将此类应用程序与数据库一起部署。
通过相当程度的简化,我们可以说微服务与您在计算机上 运行 的 Web 浏览器没有什么不同。您的 Web 浏览器和微服务之间的区别在于,微服务将 运行 在服务器上,公开某种网络接口,而您的浏览器在您的个人计算机上运行,它不会公开网络接口供其他人与之交互.
归根结底,单微服务只是服务器上的一个应用程序运行,你可以随时修改它的代码,你可以随时停止它,你可以改变数据它正在使用的数据库。
去中心化应用
去中心化应用部署到区块链。区块链是计算机网络(以太坊主网有数万个节点),都是 运行 相同的程序。当您编写去中心化应用程序(称为智能合约,就以太坊区块链而言)并且您 "deploy it" 时,发生的情况是您基本上将您的代码插入到这个计算机网络中,并且每个计算机都可以使用它。
一旦您的应用程序代码在网络中,您就可以与其交互 - 您可以通过向服务器发送 JSON-RPC 请求来使用您在去中心化应用程序中定义的接口,该服务器是其中的一部分区块链网络。
您的执行请求需要一些时间才能被网络接收。如果一切顺利,您的请求最终会分发到网络并由连接到区块链的每台计算机执行。
这样做的结果是,如果网络中的某些计算机试图对结果撒谎,网络的其余部分就会注意到欺诈行为。
这里的底线是去中心化应用程序不是在一台计算机上执行的,而是许多(可能是数千)甚至作为创建者,你不能修改它的代码或数据(你只能在有限的学位)