本文是在2018年11月15日由Linux基金会CNCF主办的KubeCon & CloudNativeCon China 2018大会的“Running Blockchain as a Service (BaaS) on Kubernetes”演讲内容基础上整理而成,从技术上介绍了阿里云如何将基于区块链Hyperledger Fabric的BaaS和容器集群技术Kubernetes进行结合的设计理念和实践经验分享。
大家好!我是来自于阿里云区块链团队的余珊,今天给大家分享的是《在Kubernetes上运行区块链服务(BaaS)》这个主题。
以上是今天分享的内容大纲,其中重点在第三部分,我们将对BaaS结合Kubernetes的一些典型问题进行深入探讨。
首先我们分享一下在我们眼中的区块链和BaaS的定义是什么。
从狭义上来说,区块链是一种分布式共享账本技术,基于智能合约,在各参与方之间达成对交易的共识,并实现账本交易历史的不可篡改。这个定义是大家所熟知的,并且是从技术和功能上进行的概括。
而从广义上来说,我们认为,区块链也是一种在机构、个人、机器之间,构建分布式信任网络、连接可信数据、实现价值流动的新的架构和协作模式。这也是跳出技术和功能维度,从更高维度去进行的理解和总结。
对于另一个概念"BaaS",即"Blockchain as a Service", 我们认为,是云平台之上的区块链平台服务,提供了区块链系统的部署、运维、治理能力,以及提供了区块链应用运行和管理的能力。
区块链从其类型上可分为私有链、公有链、联盟链三种类型,而从系统拓扑上我们可以将其对应为下述三种模式。对于传统的中心化系统或私有链来说,它基本属于一种星型中心化系统。对于公有链来说,是一种将所有参与企业和个人都对等连接在一起的完全去中心化系统。而对于联盟链来说,是一种带分层结构的多中心化系统。而阿里云今天主要关注的是面向企业场景的联盟链技术类型。
下面我们来探讨一下为什么将区块链与容器技术以及Kubernetes进行结合。
首先,我们来分析一下区块链的特点。我们将其分为区块链系统和区块链业务应用两类。
-
区块链系统是以数据为核心、高度分布式、Full-Mesh网络拓扑、Long-Running、复杂系统类型。
- 数据为核心:其中最重要的是账本上的数据。
- 高度分布式:因为区块链节点可能部署于不同机房、不同region、不同国家等等。
- Full-Mesh: 区块链节点之间要依赖全连通的网络以实现共识、账本同步等过程。
- Long-Running:区块链服务和节点是长时间运行,而不是像Web应用或批处理任务那样短生命周期的。
- 复杂系统类型:区块链系统不是一两个模块构成的简单应用,而是往往一整天解决方案或系统的形式。
- 区块链业务应用:没有统一的标准,可能包含各种应用类型,包括无状态应用、有状态应用、Web应用、数据型应用等等类型。
接下来,我们分析一下区块链结合容器技术会带来哪些优势:
- 容器技术为区块链系统和业务应用提供了标准化的软件打包、分发的能力。
- 容器技术实现了区块链运行环境的一致性,以及与底层基础架构的解耦,使得区块链系统和业务应用可以很方便地移植和运行在各种平台之上。
进一步的,我们发现,区块链使用Kubernetes集群技术可获得以下几方面的优势:
- Kubernetes提供了灵活的区块链所需要的底层资源的调度能力,如计算、存储、网络等。
- Kubernetes强大的运维管理能力,使得我们的区块链服务的产品上线速度以及运维的效率大大提升。
- Kubernetes支持各种应用类型以及微服务架构,因此对于上面区块链系统和区块链业务应用各自的需求都能很好地满足。
- 使用Kubernetes,可以更好地跟云平台进行集成,因为今天在业界它已经成为了各大云厂商云原生应用的标准底座了。
- Kubernetes还提供了丰富的安全和隔离功能,这对我们区块链的安全防护体系是很大的增强。
- 另外,围绕Kubernetes有着非常活跃的社区和丰富的技术和业务生态,因此为