美国的火币Coinbase如何构建区块链基础设施
导读:2019年以来,世界范围内都在关注加密货币,加密货币变化一日千里。这种情况下,Coinbase怎么构建自己的区块链基础设施,怎么快速拥抱变化,这是很多技术人都关心的话题。本文对这些问题作出自己的解答。
Coinbase有一些很独特的安全性和基础架构的需求。比如每台服务器都不是长期运行的(<30天)并且是不可变的。大多数应用程序的部署过程非常简单:在负载均衡器后面蓝绿部署12因子应用程序。当考虑区块链节点时,蓝绿部署的过程变得更具挑战性。
区块链节点用于检测,验证并转发网络中的状态更新,换而言之,这是各种加密货币网络的耳目。也就是说,当有人通过区块链向Coinbase转入加密货币时,通过区块链节点来监听该交易,而当有人从Coinbase向其他地址转出加密货币时,则通过区块链节点广播该交易。因此,有效管理区块链节点对于我们的核心业务运营至关重要。
从高维度来看,区块链部署剖析如下。
让我们从启动一个EC2实例开始。一旦实例启动并准备就绪,我们就可以运行区块链节点的二进制文件。
节点启动后,会连接到网络上的其他节点
这时候会通过网络同步其他节点的数据。
传输第一个块,新节点对其进行验证。
更多块被发送到新节点。
所有块均已传输完成,验证并完全同步。
Snapchain区分两种类型的区块链节点,其中快照节点完全同步链并以EBS卷的形式产生副本,而长寿命节点则使用这些EBS卷就可以在几分钟内完成部署。 Snapchain使我们能够灵活地快速快速部署区块链节点,以响应版本升级,网络事件或针对新型配置进行开发。
由于Snapchain部署在AWS上,因此我们能够通过NLB(负载均衡器)进行扩容以满足工程师的需求。使用NLB可以带来静态IP,动态扩容,蓝色/绿色部署等特性。
对区块链节点进行版本升级(显示的示例:1.0.0至1.1.0)的工作方式如下。
区块链节点位于NLB后面,节点内有区块链的二进制可执行文件,用于提供API和同步数据。
实际上,将节点放置在多个可用区(AZ)中,可能存在多个用于冗余节点。
启动新实例并遵循先前描述的流程。
一旦新实例准备就绪且运行状况良好,就会被添加到NLB。
一旦检查通过,就可以通过NLB切换转换新版本了。
最终NLB之后的区块链节点完成升级。
此外,Snapchain是与区块链无关的基础架构。 主要设计目标之一是最大程度地减少关于于区块链的代码和基础设施的数量。 这样我们就可以更快地添加新的区块链节点了。
原文地址:https://blog.coinbase.com/blockchain-infrastructure-at-coinbase-366c09dbcef4
参考阅读:
本文由方圆翻译,转载请注明出处,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。
高可用架构
改变互联网的构建方式
长按二维码 关注「高可用架构」公众号