微服务架构在区块链BaaS平台中的实践
前言
微服务架构是近几年互联网行业比较火的概念,凭借灵活可扩展、独立部署…等优势,逐步成为分布式架构中的主流。那么微服务架构和区块链又能擦出哪些神奇的火花?本期将从微服务架构概述、微服务架构在BaaS平台的应用优势等角度展开介绍。
原文链接:https://mp.weixin.qq.com/s/9RzKszZ02RvfHCVDqNEqzg
什么是微服务架构?
微服务架构(Microservice Architecture)是一种架构概念,可以简单理解成一种将复杂系统拆分设计成多个微服务的架构,系统中的每个微服务专注于实现一个功能,内部是高内聚的,但外部是低耦合的,且支持独立部署。由于每个服务运行在其独立的进程中,因此服务与服务间采用轻量级的通信机制互相沟通。
与微服务架构相对的是单体架构,即将系统中所有的功能、模块耦合在一个应用中的架构方式。单体架构的好处是项目易于管理、部署简单,但缺点是可扩展性差、迭代困难、团队协作难、跨语言程度差、管理测试成本高等。
典型微服务架构介绍
如上图所示,微服务架构可大致分为:
服务网关:系统的统一入口,提供路由转发、流量控制、鉴权验证、安全控制、负载均衡等功能;
服务注册中心:所有微服务都注册到注册中心,负责服务注册、服务发现等;
配置中心:对各个微服务的部署文件集中式存储和动态的管理;
服务监控:对各个微服务实时监控(每秒的请求数,成功数等),提供服务熔断、服务降级、链路追踪等功能;
服务通信:负责微服务之间的通信,实现各个微服务之间的数据交互。
微服务架构在BaaS中的应用优势
前文《什么是区块链BaaS平台?》介绍了BaaS平台的相关概念,笔者认为微服务架构为建设灵活可扩展的BaaS平台提供了一种可行方案,两者可谓天生一对。
▲首先,微服务的松耦合模式为BaaS平台兼容异构链奠定技术基础。
是否兼容不同的异构链及功能支持度是BaaS平台的重要能力体现。在微服务架构下,由于微服务之间是松耦合的(业务领域间解耦、应用层和数据层解耦、前端和后端解耦、数据库类型解耦、前端技术解耦等),因此微服务的核心价值就是积极拥抱并适应业务及技术选型等各种变化,因此基于微服务架构的BaaS平台可实现对异构链的快速拔插兼容,但在单体架构下几乎很难实现。
下图为趣链BaaS平台的微服务架构示意图,每个模块内的微服务组件支持独立开发、独立技术选型、独立部署,其中核心模块中包含驱动和驱动管理。
驱动是趣链在众多BaaS玩家中首创的一种模式,通俗而言用户如需接入并支持新的区块链底层,只需开发对应的链驱动即可。
▲其次,微服务的网关模式可充分满足联盟链多方参与下的复杂权限体系及访问控制。
在联盟链场景中往往由多家机构共同管理区块链业务,趣链BaaS的微服务网关主要功能包括路由转发、流量控制、安全控制、负载均衡、请求转化等基本功能并支持模块化新增功能的可拓展性。同时,账户体系(RBAC)根据用户账号、角色、权限、组织4个维度进行设计,即基于角色的访问控制。每个角色有不同的权限,通过对用户赋予不同角色来赋予其对应权限。同时增加用户机构概念,直接给用户分配角色,并邀请用户加入机构。这样用户除了拥有自身的权限外,还拥有了所属机构的资源操作权限。
▲此外,微服务的服务监控组件等可有效适配联盟链多节点组网的复杂架构。
联盟链本质上可视为多个节点共同维护的分布式数据库,而节点的本质是计算机进程。微服务通常是分布式服务架构,且生产环境下一个复杂的系统可能存在成百上千个微服务,因此选择微服务通常意味着需要解决分布式架构中的各种难题。目前业界已有多套针对微服务的日志监控管理、链路追踪和故障排查方案,可快速引入或通过改良充分适配联盟链多节点组网的复杂架构。
总结
BaaS平台是企业部署区块链并管理链上业务的可视化平台,其功能的广度和使用友好度直接影响区块链管理效率。而在区块链高速发展的当下,新技术的迭代日新月异,通过将微服务架构引入到BaaS平台的设计理念中,可帮助提升BaaS平台功能可扩展性、系统安全性、可运维性。
微服务架构在区块链BaaS平台中的实践相关推荐
- 蚂蚁区块链BaaS平台架构与实践
摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日在上海如期举办.在ATEC区块链行 ...
- 源中瑞区块链baas平台一站式服务体系
区块链是一项新兴技术,很多企业都想将区块链技术应用到产品中去,但是由于对区块链这项技术还属于发展前期阶段,导致绝大多数的企业的区块链技术人才是稀缺的,为此我们研发了区块链baas平台,可以给中小企业提 ...
- 区块链BAAS平台:公共或私人区块链编程以用于各种用途
2019独角兽企业重金招聘Python工程师标准>>> 人们可以为公共或私人区块链编程以用于各种用途.理论上,我认为牺牲权力下放的方面可以解决区块链技术背后的许多当前问题.区块链仍然 ...
- 蚂蚁区块链BaaS平台应用开发指南(一):前言
前言 2018年疯狂的币市把区块链技术推到了风口浪尖,随着潮水的退去,越来越多的技术人和市场开始沉淀到实际的问题上.如何利用区块链技术带来的新特性(去中心,可追溯,不可篡改等)去解决现实世界的实际需求 ...
- 蚂蚁区块链BaaS平台应用开发指南(五):JS SDK的接入
基于JavaScript SDK的接入 在上一节中,我们通过JavaSDK接入了我们的目标链并调用合约成功.在本节中,我们将通过JS SDK实现同样的调用.JS SDK可以集成在Web应用中,运行在浏 ...
- 蚂蚁区块链BaaS平台应用开发指南(四):JavaSDK的接入
在尝试本节的样例代码前,需要保证目标智能合约已经按照蚂蚁区块链BaaS平台应用开发指南(三):从一个简单合约开始中的做法编译部署成功. 基于JavaSDK的接入 在上一节里,我们通过Cloud IDE ...
- SWIFT PLM 介绍|基于微服务架构的Swift PLM云平台
基于微服务架构的Swift PLM云平台 1. Swift PLM 云平台基于微服务架构 杰信软件公司致力于一系列基于PLM系统的实施及二次开发的解决方案,并在近期取得巨大进展,自主研发了 ...
- 区块链baas平台告警方案
前言 在<24*7动态化监管为"链"站岗>中,我们介绍了区块链动态化监控中心,如果说监控的作用是防患于未然,那么告警则是当异常发生时第一时间触发运维人员的关键,可充分降 ...
- 技术工坊|腾讯华为入局的区块链BaaS平台解决了什么问题?(上海)
2019独角兽企业重金招聘Python工程师标准>>> 在区块链热火朝天一年多之后,真正落地的区块链产业应用仍然乏善可陈,特别是基于公链的成功产业应用更是少之又少.这种现状的问题在哪 ...
最新文章
- C++/C++11中引用的使用
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- 公共类java连接数据库_JDBC 建立连接公共操作类(静态方式与单例方式)
- Python3快速入门(五)——Python3函数
- 【cocos2d-x从c++到js】20:脚本语言风格的JS代码
- [BZOJ2654] tree
- Asp.net页面生存周期
- Android下常见的内存泄露 经典
- Linux Ubuntu jdk(环境变量)配置
- (转)VmWare下安装CentOS6图文安装教程
- 进阶 | 产品失效模式与效益分析(DFMEA)的实际应用
- Linux安装vim命令
- 图解 Cisco IOS 命名规范
- w10需要计算机管理员才能删除,如何解决删除文件需要管理员权限win10_win10你需要提供管理员权限才能删除的解决方法...
- 官方|TensorFlow微信公众号发布
- (C语言)对称数判断
- [PHP] PHP7.4.2安全和修复版本的更改日志
- 服务器ping返回信息,如何ping服务器线路?ping命令的用法
- C语言外卖订单管理系统上班,外卖订单管理系统
- 苹果电脑mp3转gif_Mac视频怎样转换成Gif图片?