搭建独特的区块链基础设施
在应用程序开发领域,微服务和服务器非常流行。各地的开发者都在致力通过使用微服务架构和物件容器技术等去把单一的应用程序分解成更小、更模块化的组件。
Po.et相信微服务的力量。然而,当我们在搭建一个基于区块链的去中心化应用程序时,我们已经了解到,要将微服务架构搭建到去中心化的应用程序上需要一种特殊的方式。
从很多角度来看,我们的工作都是独一无二的。将区块链和微服务相结合会带来特殊的挑战和机遇。
传统微服务
微服务在近几年流行的主要两大原因如下:微服务容易扩展。当应用程序中的一部分需要更大容量的时候,可以通过增加微服务或者提升应用性能的微服务资源。如果使用容器来部署应用程序,这一点更容易实现。可以通过搭建更多的容器来支持可以进一步扩展的微程序。
微服务是一个“黑箱”。从外部看,每一个微服务都是一个黑箱。其他微服务可以对其发送请求,并使用预定的协议(比如HTTP请求或AMQP)来接受信息。他们无需担心在这些微服务中的交流信息被泄露。正因为这种设计策略,多个微服务可以更容易地进行无缝交互,应用程序管理也更为简化。
Po.et微服务架构的初始计划
当我们开始开发Po.et的时候,我们的原本的计划是才去一个传统的微服务模型。
每一个Po.et节点都需要去处理多项服务——从种子服务、比特币扫描器到处理交易的系统。Po.et网络会对数字内容所有权信息进行管理。
最初,我们打算让Po.et节点应用程序中让这些单独的微服务在自己的容器中运行,而这些容器将通过Docker Swarm来进行管理。
这种方式主要是让服务更容易进行扩展并且通过Swarm可以简化这些服务的管理过程。
去中心化的困境
随着项目逐渐发展,我们意识到Po.et节点和其他传统应用不同的一点在于:它是一个去中心化的应用。
这意义重大。传统的微服务体系架构旨在对支持部署和管理应用程序进行设计。在大多数情况下,一个公司或者一些管理员会在数据中心中托管应用程序。这个程序可能在某种意义上来说是“分布式”的,因为它可能是托管在一个服务器群,而不是在一个单独的服务器上。但是,即时在这种情况下,服务器集群仍然是中心化的;一个中心拥有控制、负责并管理这个应用程序的权利。在这种情况下,能够使用容器来部署应用程序,并使用像Swarm这样的协调方式来进行高效的管理。
Po.et则截然不同。Po.et是一个去中心化的节点网络,每个节点可以或多或少地像一个桌面程序一样运行,而不是简单的一个基于云端的应用程序。没有一个实体节点去管理其他节点或者可以直接决定网络的扩展性。相反,当新的节点被添加、老的节点被减少时,网络自身会进行自动管理和扩展。
因此,在Po.et网络里,无需使用像Swarm这样的中心化管理器来进行管理。此外,从管理的角度来看,将每个节点分解成传统的微服务并没有太多意义,因为每个节点都可以进行自我管理和自我控制。重要的一点是,要确保每个节点都能独立运作,如果必须部署多个微服务来启动单个节点,人们将更难而不是更简单地去使用Po.et。
Po.et新架构
这是Po.et的新架构。因为有以上这些考虑,我们打算迁移到一个全新的应用架构上去。可能这是受到了微服务的启发,但这并不使用传统意义上的微服务或容器。
相反,我们将把Po.et大见证一套独立的代码模块,但并非彼此独立的服务。每一个模块将像微服务那样运行。每个模块对其他模块并无太多了解,他们仅通过一个信息队列来进行交流。
从编程的角度考虑,模块更容易进行管理。他们同时也可以让Po.et节点更为高效、安全。
然而,这种基于模块的架构并不需要每个节点去运行多个微服务,所以在去中心化的网络上更容易进行设置和管理。
结论
微服务很伟大,但去中心化的应用程序能解决传统微服务所无法解决的诸多挑战。
对于Po.et而言,我们可以借用微服务的概念来开发我们的去中心化平台,但我们的平台会和大众化的微服务有所不同。
随着区块链发展的逐渐成熟,程序员逐渐可以适应对一个去中心化的世界进行编程。我们希望我们的项目会给其他区块链领域中的去中心化应用的开发开个好头。