我是分布式应用程序的新手,阅读了一些文章后,我对微服务和分布式应用程序之间的区别感到困惑。有人可以帮助我理解它们之间的区别吗?我知道可以使用 Spring Boot 和 Docker 构建微服务。还有其他技术可以用来构建吗?我认为以太坊被用来开发分布式应用程序。有人可以帮助我理解它们之间的区别吗?
我是分布式应用程序的新手,阅读了一些文章后,我对微服务和分布式应用程序之间的区别感到困惑。有人可以帮助我理解它们之间的区别吗?我知道可以使用 Spring Boot 和 Docker 构建微服务。还有其他技术可以用来构建吗?我认为以太坊被用来开发分布式应用程序。有人可以帮助我理解它们之间的区别吗?
微服务是一种软件架构。其思想是将许多小型应用程序(微服务)集中于解决单一目标,但实现非常优秀。
例如,一个特定的微服务可以是运行HTTP服务器以管理用户的应用程序。它可以具有用于添加、查看和从数据库中删除用户的HTTP端点。您可以将这样的应用程序与数据库一起部署在某个服务器上。
简单来说,我们可以认为微服务与您在计算机上运行的Web浏览器并没有太大区别。您的Web浏览器与微服务之间的区别在于,微服务将在服务器上运行,并公开某种网络接口,而您的浏览器运行在个人计算机上,并且不会暴露任何供他人交互的网络接口。
重要的是,单个微服务只是在服务器上运行的应用程序,您可以随时修改其代码,随时停止它,还可以更改它正在使用的数据库中的数据。
分散式应用程序部署到区块链上。区块链是由许多计算机组成的网络(Ethereum MainNet拥有数万个节点),所有计算机都运行着相同的程序。当您编写分散式应用程序(以Ethereum区块链的术语称为智能合约)并“部署”它时,实际上是将代码插入到这些计算机的网络中,并使每个计算机都可以使用它。
一旦您的应用程序代码在网络中,您就可以与其交互 - 您可以通过向此区块链网络的某个服务器发送JSON-RPC请求来调用在分散式应用程序中定义的接口。
之后,需要一些时间才能将执行请求选取到网络中。如果一切顺利,您的请求最终会分发到连接到区块链的每台计算机上进行执行。
这意味着,如果网络中的某台计算机试图欺骗结果,则余下计算机将注意到这种欺诈企图。
总之,分散式应用程序不是在一台计算机上执行,而是在许多(可能数千)台计算机上执行,即使作为创建者,您也无法修改其代码或数据(只能在有限程度上)。