美国的火币Coinbase如何构建区块链基础设施

只看大图  / 倒序浏览   © 文章版权由 yujiaping 解释,禁止匿名转载

#楼主# 2019-11-23

跳转到指定楼层
导读:2019年以来,世界范围内都在关注加密货币,加密货币变化一日千里。这种情况下,Coinbase怎么构建自己的区块链基础设施,怎么快速拥抱变化,这是很多技术人都关心的话题。本文对这些问题作出自己的解答。


Coinbase有一些很独特的安全性和基础架构的需求。比如每台服务器都不是长期运行的(<30天)并且是不可变的。大多数应用程序的部署过程非常简单:在负载均衡器后面蓝绿部署12因子应用程序。当考虑区块链节点时,蓝绿部署的过程变得更具挑战性。

区块链节点用于检测,验证并转发网络中的状态更新,换而言之,这是各种加密货币网络的耳目。也就是说,当有人通过区块链向Coinbase转入加密货币时,通过区块链节点来监听该交易,而当有人从Coinbase向其他地址转出加密货币时,则通过区块链节点广播该交易。因此,有效管理区块链节点对于我们的核心业务运营至关重要。

从高维度来看,区块链部署剖析如下。
让我们从启动一个EC2实例开始。一旦实例启动并准备就绪,我们就可以运行区块链节点的二进制文件。

wIoD6DzGYdp6O6ky.jpg

节点启动后,会连接到网络上的其他节点

QN8Fl7gp7FRbiGuU.jpg

这时候会通过网络同步其他节点的数据。

hzb00wF4MYch4n4C.jpg

传输第一个块,新节点对其进行验证。

i1UrVKrrhwr193rz.jpg

更多块被发送到新节点。

d4wI7AwBzIZ252u5.jpg

所有块均已传输完成,验证并完全同步。

Gn0hH016w11n1WZ9.jpg 全节点通常会在磁盘上维护区块链的所有数据。 通常需要同步数百GB的数据。有的时候,完成全量数据同步可能需要数周。 考虑到加密货币生态系统的发展步伐,基础架构的安全性和可靠性,以及节点升级的偶发性,每次部署时从网络完全同步对于我们而言,并不是安全可行的解决方案。 因此我们设计了一个新的名为Snapchain的区块链节点备份和部署系统。

BtzJvoiOoVIbUTNq.jpg


Snapchain区分两种类型的区块链节点,其中快照节点完全同步链并以EBS卷的形式产生副本,而长寿命节点则使用这些EBS卷就可以在几分钟内完成部署。 Snapchain使我们能够灵活地快速快速部署区块链节点,以响应版本升级,网络事件或针对新型配置进行开发。

由于Snapchain部署在AWS上,因此我们能够通过NLB(负载均衡器)进行扩容以满足工程师的需求。使用NLB可以带来静态IP,动态扩容,蓝色/绿色部署等特性。

对区块链节点进行版本升级(显示的示例:1.0.0至1.1.0)的工作方式如下。

区块链节点位于NLB后面,节点内有区块链的二进制可执行文件,用于提供API和同步数据。

Mjz6c9uj0m9CZzj0.jpg

实际上,将节点放置在多个可用区(AZ)中,可能存在多个用于冗余节点。

wM8gkesSpPeEsIgE.jpg

启动新实例并遵循先前描述的流程。

Uz0ZOZ0ooz1fKozf.jpg

一旦新实例准备就绪且运行状况良好,就会被添加到NLB。

zk77GaGz1GKLVlK7.jpg

一旦检查通过,就可以通过NLB切换转换新版本了。

AoovaBTAE6K6aT7T.jpg

最终NLB之后的区块链节点完成升级。

DA7dcHIN7omH8awQ.jpg


此外,Snapchain是与区块链无关的基础架构。 主要设计目标之一是最大程度地减少关于于区块链的代码和基础设施的数量。 这样我们就可以更快地添加新的区块链节点了。

NEhw4QmjWtFFv2qw.jpg



原文地址https://blog.coinbase.com/blockchain-infrastructure-at-coinbase-366c09dbcef4



参考阅读:



  • 十六年老司机笔记:MySQL性能优化之必备技能

  • 为什么不应该使用数据库外键(重温旧文)

  • 告别烂代码,一文理解微服务中的模式和反模式
  • 性能优化怎么做?互联网对象访问频率的91分布原则
  • 你不在意的HTTPS证书吊销机制
  • 学习区块链必读:如何10分钟搭建Libra



本文由方圆翻译,转载请注明出处,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。



高可用架构

改变互联网的构建方式

Tz9HND9HG97Z3357.jpg
长按二维码 关注「高可用架构」公众号
回复

使用道具

成为第一个回答人

B Color Link Quote Code Smilies
Copyright © 2001-2019 Comsenz Inc.  Powered by Discuz! X3.4  粤ICP备19144000号