高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

京东分布式 BaaS 的设计与实践

  • 2018-12-27
  • 本文字数:4548 字

    阅读完需:约 15 分钟

京东分布式BaaS的设计与实践

在正式讲解 BasS 平台的设计之前,我们还是先简单介绍下区块链技术,区块链从出现,到火爆再到现阶段的微凉,前前后后已经有了 10 年的时间了,经历过高潮也有过低谷,但毫无疑问,区块链是现在最火的技术,我们从各大公司的未来战略中就可以看出。比如两个很有名的战略:BASIC 以及 ABCD 战略。其中的两个 B 都代表的是 Blockchain。


区块链呢,我们都知道他是脱胎于比特币,比特币(BitCoin)的概念最初由中本聪在 2009 年提出,根据中本聪的思路设计发布的开源软件以及建构其上的 P2P 网络。比特币是一种 P2P 形式的数字货币。点对点的传输意味着一个去中心化的支付系统。


从比特币开始,到现阶段比较火的 EOS、IOTA 等项目,区块链的发展经历三个阶段,也就是我们经常听到的区块链 1.0、2.0 以及 3.0。那么不同阶段之间,有什么各自的特点呢?我在这里简单的提出了各个阶段的关键词,相信大家一看就明白,也不用多说。


区块链 1.0


  • 数字货币

  • 旷工

  • 全网账本

  • 非对称加密技术

  • 钱包与交易所

  • 开源与区块链浏览器


区块链 2.0


  • 智能合约

  • 容器或虚拟机

  • 账户模型

  • 适合更多场景

  • 公有链和联盟链发展迅速

  • 政策与监管


区块链 3.0


  • 技术种类多,还在探索

  • 以 DPOS、DAG 等技术为代表

  • 提高性能至难以想象

  • 大规模使用,改变人们生活


最后我们再来看下区块链的分类,简单的说我们可以把区块链分成三类,公有链、私有链以及我们今天重点要讲的联盟链技术。因为各大厂由于自身特点,业务繁多,有很多应用场景都可以跟区块链相结合,因此都很早就开始关注并探索联盟链技术。


看过区块链的起源及发展,我们不禁要问,区块链到底有什么魔力能够这么火爆呢,他到底有什么价值呢?


我们可以这么说,区块链是一套完整的通过密码学和计算机科学解决信任的技术。公链是去中心化的,联盟链是多中心化的。不但实现了信息透明,不可篡改,还能防止作恶。由于这些特点,区块链技术解决了信任问题,正在颠覆各行各业。当然我认为现阶段还是大家都在积极探索的阶段,落地的场景还不多,但是我认为应该就在不久的将来会迎来一波国内联盟链项目的爆发,我们可以拭目以待。



我为什么敢这么说呢?大家可以看下京东的区块链应用场景,京东商城,京东数科,京东云,京东物流等等,业务场景丰富,各个部门都在结合自身的业务,积极研究和探索区块链。目前我们做的最好的就是通过区块链进行商品溯源,上面的图简单说明了京东在区块链落地场景上的探索,我相信其他大厂也在做同样的事情。



虽然我认为区块链应用落地会在不远处迎来一场爆发,但不可否认的是,区块链落地推广还是有不小的难题,我在这里总结了 5 点:


  1. 技术门槛高,区块链技术复杂,是多门学科的综合体,导致即使是现在技术人才仍然稀缺。

  2. 结合业务难,传统的产品和销售不需要理解技术,但是区块链不同,这给区块链应用带来了困难。

  3. 性能不足,虽然我们经常看到很多区块链性能动辄百万、千万 TPS,但是都是停留在理论阶段,没有办法证实。

  4. 安全威胁,说到安全,这其实指的是数据共享开放带来的风险,越来越多的企业核心竞争力不再是技术,而是数据。如何既能做到信息共享,又能减少安全隐患,这是区块链中隐私保护要解决的问题。

  5. 身份无法监管,公链的用户身份都是匿名的,联盟链因为是权限区块链,身份还是可以核实的,但是也存在身份造假可能。


要同时克服这 5 点困难,一般体量的公司很难做到,总是会有一两个短板存在。但京东平台却不存在这样的问题,至于如何克服,先容我卖个关子,等我讲完我相信大家都会明白京东是如何克服落地难题的。


首先我们可以先来看下京东 BaaS 平台的系统架构。



我们重点来看下红色的部分,从下往上看,我们的 Baas 能够部署在公有云、私有云、物理服务器以及虚拟机,并不绑定在任意云上,可以自由选择,且同一网络中的不同节点的资源也不需要一致。


在调度层呢,我们采用了现有的最流行的 Kubernetes 作为 Baas 的调度器,K8 的优点我就不详细说了,大家都知道,同时我们也采用分布式存储服务作为区块链节点存储介质,能够提供动态扩容功能。


再往上一层,是区块链层,之所以叫做 Baas 就是因为平台能够为客户提供多种的区块链底层可用。现阶段我们已经接入了 Hyperledger Fabric、Stellar 等。


接下来一层是服务层,除了特定区块链提供的特定服务以外,我们更是提供了很多特殊功能,比如大家比较熟悉的快速部署,我们能够在 30 秒时间内启动一个私有区块链网络。再比如身份链背书,这个我在后面会详细讲到。还有一个跨域部署功能是必须要提到的,这是京东 Baas 平台为企业用户提供的区块链组网服务,借助该功能,任意企业都能快速的与其他合作伙伴一起搭建一条架构在不同资源层上的联盟链,非常实用。


在接口层呢,我们现阶段也提供了 WebUI 以及 API 接口两种类型的对外接口,能够满足不同用户的需求。


最上面一层就是应用层了,这是我们现阶段已经支撑的项目案例,后续我会详细介绍其中的几个。


接下来为大家介绍京东身份链。



大家可能会问了,现在已经有很成熟的 PKI 证书认证体系了,用的感觉也还很好,为什么还要用区块链做个身份链呢?其实,我们做身份链的目的不是替换 PKI,相反身份链是传统 PKI 体系的信任补强,PKI + 区块链 = 可信身份,同时也能够解决传统 CA 根秘钥丢失被盗的灾难性后果。身份链本身在整个 BaaS 平台中是处于什么位置呢?它最主要的作用就是为 BaaS 用户背书,去中心化管理用户身份,将身份管理做到透明可信。任何接入到京东 BaaS 平台的企业及开发者都能很方便的验证平台内其他用户的身份,从而提升信任。



而且虽然我们使用了区块链存储用户身份,但并不意味着用户需要更多的学习成本,我们对用户的实名认证尽量的贴近传统用法,可视化且步骤化,而且私钥等信息都是由前端生成,并不会在网络中传输。



接下来我们来看一个典型的京东 BaaS 的网络拓扑图,从这张图中,我们把平台分成了两个部分,上面部分是全局服务,现在有前面介绍的身份链、镜像仓库、应用仓库以及消息中继服务,这些是被所有部署到不同地方的 BaaS 平台所共享的。镜像仓库中存储了部署区块链以及 DApp 所用到的所有组件镜像,应用仓库为所有的开发者提供了一个可以发布自己应用的地方,各个 BaaS 的用户可以将应用仓库中的 DAPP 部署到自己维护的区块链网络中,丰富网络应用。而消息中继服务是跨域部署时用到的消息组件。


下面部分展示的是不同种类的 BaaS 部署模式,现阶段,我们可以很方便的支持公有云、私有云、跨云以及跨企业部署。公有云模式中,所有的用户都被一个中心化的云管理,而私有云模式中,企业可以很方面的部署企业内部区块链,实现各部门数据联盟。后两种模式是京东 BaaS 主打的部署方式,我们最初开始做 BaaS 平台的时候,定下的一个目标就是不绑定任何资源,实现任意资源条件下的跨域主网。



对于公有云部署,我再详细介绍下,我们现在已经上线了公有云平台,也就是https://baas.jd.com,大家可以申请试用。可能有的同学有疑问,中心化的云与区块链的去中心化思想是不是会冲突呢?这点我想着重强调,在其他的 BaaS 平台中,公有云的部署方式确实意味着所有的区块链节点都在该云平台,但是对于京东 BaaS 来说,公有云的意思是所有的用户都有一个统一的 Web UI 入口,仅此而已。什么意思呢?可以看到我们有个集群管理功能,这就意味着用户可以将部署在任意地方的 Kubernetes 集群导入到京东 BaaS,不管是阿里云、AWS,还是开发者的笔记本。这样的一个结果就是,虽然我们都是用的同一个 UI 入口,但是不同用户间组成的网络还是在不同的地方,跟区块链的去中心化相得益彰。


接下来大家可以来看一段视频(http://m.iqiyi.com/m5/bubble/videoFilm.html?feedId=109733515348&platform=15), 主要介绍了 BaaS 的一键部署功能,他主要是用于给开发者、试用者快速部署起一套私有链,帮助开发者调试 DAPP、试用者感受区块链的特性。可以看到我们可以灵活的定制区块链的相关属性,包括现在 Fabric 并不支持的国密等等,并且能够在极短的时间内将私有网络部署成功,后续视频介绍的 UI 上的一些功能,包括通道管理、链码管理等等,针对链码我们也支持链码的在线编辑,并对编写的链码做了形式化的验证,只有验证成功的链码才能被上传。最后我们也集成了区块浏览器以及一个示例程序,方便不懂区块链的试用者感受区块链。


说完了一键部署,我们再来详细介绍下企业组网,也就是跨域部署功能。



如果一个企业想要加入 BaaS,他需要准备哪些资源呢?从图中我们可以看到,企业只需要准备机器资源就可以了,剩下的服务都由京东提供。相较于一键部署,企业组网的流程是比较复杂的,这里我们可以简单的梳理一下:


发起联盟:各方商议发起联盟,确定联盟名称、运作方式等,然后线下签约


发起人线上创建共识节点:发起人利用 BaaS 应用创建共识节点,并通过 BaaS 实时消息服务器通知参与方


发起方发布 Peer 加入消息:发起方发布 Peer 加入消息,参与方利用 BaaS 应用创建 Peer 节点


成员发起创建 channel:联盟内成员均可发起创建 channel,并邀请全部或部分成员 join channel


受邀成员 join channel:收到邀请的成员,点击消息中的“同意”按钮,发起加入 channel


组网完成:经历部署节点、创建 channel,加入 channel 等过程,组网完成


通过以上 6 步,企业就可以通过京东 BaaS 部署一套联盟链,应该说还是比较方便的。


介绍完了 BaaS 的几个主要功能,我们最后再来梳理下 BaaS 的特点。


资源灵活:不仅可适配京东云、还支持阿里云、腾讯云、华为云等,目前得到了政府、金融跟银行等机构的关注


易部署:提供简单易用的区块链底层服务,帮助项目快速落地、减少投入


安全可控:支持自建 CA 和第三方 CA 证书,支持国密算法


多底层集成:目前集成 Hyperledger Fabric、Stellar、Ethereum,还有京东自主研发的底层区块链 JD Chain


高可用:基于流行的 Kubernetes 技术,提供高可靠可拓展的区块链平台


动态扩容:试用分布式存储,解决了海量数据问题,并且可以动态扩容<


易管理:可视化部署,可视化运维监控


成熟先进:快速部署(30 秒),灵活定制部署,企业级跨域部署


身份可信:创新的试用身份链为企业背书,保证企业身份可信,保证组网过程安全可靠


高性能:在多链网络峰值状态下,写 TPS 可达到 5200+,读 TPS 达到 14900+


以上介绍的仅仅是 BaaS 一期的功能,同时呢我们现在也在积极的规划及实施二期功能,明年京东 BaaS 的功能将更加丰富。


在讲解的最后,我再给大家介绍下我们已经支持的项目案例。丰富的合作案例覆盖金融、物流、公益慈善、供应链、存证、电商等众多场景,充分证明了我们的能力。



比如我们跟宿迁工商局建立了全国首个电子营业执照区块链应用平台,将在宿迁工商局注册的商家营业执照上链,简化商家纸质审核流程。我们也联合大象慧云、太平洋保险开出中国首张区块链增值税专用发票,未来有望每年为京东节减 2 亿元的发票邮寄费。


这么多的合作案例,无疑是肯定了区块链的价值,BaaS 的价值。


听了这么多,如果大家对我们的 BaaS 平台感兴趣,可以在baas.jd.com申请试用,也可以通过京东商城账号登录,但是需要自己准备 k8s 环境。


讲师介绍:刘春伟,京东区块链架构师,区块链技术专家。熟悉多种区块链架构和性能优化方法,设计并开发过高性能区块链底层、点对点视频分享系统、工业物联网平台。主要设计和负责的区块链产品有京东区块链即服务平台,京东区块链秘钥保管箱,区块链电商平台等。


2018-12-27 09:301773

评论 1 条评论

发布
暂无评论
发现更多内容

超全Android中高级面试复习大纲,在线面试指南

欢喜学安卓

android 程序员 面试 移动开发

Redis新版本开始引入多线程,谈谈你的看法?

Java架构师迁哥

nsq源码阅读之Channel

werben

nsq Go 语言

hive的DQL查询语法详细剖析

大数据技术指南

大数据 hive 3月日更

大多数人不知道的Java知识 - Java内省机制

陈皮的JavaLib

Java 内省 java反射

阿里一战封神,百万人跪求的Java面试手册终于开源;

Java架构师迁哥

【LeetCode】扁平化嵌套列表迭代器Java题解

Albert

算法 LeetCode 3月日更

下一站,星辰大海!

百度大脑

百度 AI 上市

nsq源码阅读之nsqd总体流程

werben

nsq Go 语言

4层板到12层板叠层经典设计方案

不脱发的程序猿

28天写作 电路设计 3月日更 PCB PCB布局

如何在3分钟内实现音频变声和趣味音效?

拍乐云Pano

音视频 RTC 出海社交 社交泛娱乐

MapReduce的运行机制详解

五分钟学大数据

大数据 mapreduce 3月日更

智慧公安重点人员系统开发,情报研判管控平台的搭建

13828808769

行业资讯

Rust从0到1-基础概念-变量

rust 变量

已拿到蚂蚁金服Offer!阿里内部二十三万字Java面试题总结

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

SQLServer性能调优方法小结

嘉为蓝鲸

数据库 sql 运维 SqlServer MAXDOP

SDK介绍及相关功能测试

行者AI

测试 sdk

nsq源码阅读之消息接收和发送

werben

nsq Go 语言

Netty 核心源码解读 —— 开篇

然行

Netty

推荐35款可以快速提升工作效率的软件

科技猫

软件 经验分享 实用工具 办公 工具分享

百度Feed稳定性架构实践

百度Geek说

解决方案 IDC feed

Python-计算机视觉-OpenCV-调色板

Aldeo

Python OpenCV

Swift 5创建和使用Framework, XCFramework 从入门到精通 John 易筋 ARTS 打卡 Week 42

John(易筋)

ARTS 打卡计划 Framework XCFramework

想学IT的必看!漫谈MySQL权限安全,分享一点面试小经验

欢喜学安卓

android 程序员 面试 移动开发

使用Redis,你必须知道的21个注意要点

Java 数据库 redis 架构 面试

nsq源码阅读之Topic

werben

nsq Go 语言

区块链BaaS应用平台的搭建,BaaS平台的应用场景

13828808769

#区块链#

DB-Engines 3月数据库排名:MySQL跳出“同期跌幅榜”,拿下“本月涨幅榜冠军”

华章IT

数据库

Python 高手都这样使用字典,这些高效方法你知道吗?|pythonic 小技巧

AlwaysBeta

Python

Netty 核心源码解读 —— ServerBootstrap 篇

然行

Netty

nsq源码阅读之diskqueue

werben

nsq Go 语言

京东分布式BaaS的设计与实践_区块链_刘春伟_InfoQ精选文章