BaaS平台是企业部署区块链并管理链上业务的可视化平台,其功能的广度和使用友好度直接影响区块链管理效率。而在区块链高速发展的当下,新技术的迭代日新月异,通过将微服务架构引入到BaaS平台的设计理念中,可帮助提升BaaS平台功能可扩展性、系统安全性、可运维性。
微服务架构是近几年互联网行业比较火的概念,凭借灵活可扩展、独立部署…等优势,逐步成为分布式架构中的主流。那么微服务架构和区块链又能擦出哪些神奇的火花?本期将从微服务架构概述、微服务架构在BaaS平台的应用优势等角度展开介绍。
微服务架构(Microservice Architecture)是一种架构概念,可以简单理解成一种将复杂系统拆分设计成多个微服务的架构,系统中的每个微服务专注于实现一个功能,内部是高内聚的,但外部是低耦合的,且支持独立部署。由于每个服务运行在其独立的进程中,因此服务与服务间采用轻量级的通信机制互相沟通。
与微服务架构相对的是单体架构,即将系统中所有的功能、模块耦合在一个应用中的架构方式。单体架构的好处是项目易于管理、部署简单,但缺点是可扩展性差、迭代困难、团队协作难、跨语言程度差、管理测试成本高等。
如上图所示,微服务架构可大致分为:
服务网关:系统的统一入口,提供路由转发、流量控制、鉴权验证、安全控制、负载均衡等功能;
服务注册中心:所有微服务都注册到注册中心,负责服务注册、服务发现等;
配置中心:对各个微服务的部署文件集中式存储和动态的管理;
服务监控:对各个微服务实时监控(每秒的请求数,成功数等),提供服务熔断、服务降级、链路追踪等功能;
服务通信:负责微服务之间的通信,实现各个微服务之间的数据交互。
前文《什么是区块链BaaS平台?》介绍了BaaS平台的相关概念,笔者认为微服务架构为建设灵活可扩展的BaaS平台提供了一种可行方案,两者可谓天生一对。
是否兼容不同的异构链及功能支持度是BaaS平台的重要能力体现。在微服务架构下,由于微服务之间是松耦合的(业务领域间解耦、应用层和数据层解耦、前端和后端解耦、数据库类型解耦、前端技术解耦等),因此微服务的核心价值就是积极拥抱并适应业务及技术选型等各种变化,因此基于微服务架构的BaaS平台可实现对异构链的快速拔插兼容,但在单体架构下几乎很难实现。
下图为趣链BaaS平台的微服务架构示意图,每个模块内的微服务组件支持独立开发、独立技术选型、独立部署,其中核心模块中包含驱动和驱动管理。
驱动是趣链在众多BaaS玩家中首创的一种模式,通俗而言用户如需接入并支持新的区块链底层,只需开发对应的链驱动即可。
在联盟链场景中往往由多家机构共同管理区块链业务,趣链BaaS的微服务网关主要功能包括路由转发、流量控制、安全控制、负载均衡、请求转化等基本功能并支持模块化新增功能的可拓展性。同时,账户体系(RBAC)根据用户账号、角色、权限、组织4个维度进行设计,即基于角色的访问控制。每个角色有不同的权限,通过对用户赋予不同角色来赋予其对应权限。同时增加用户机构概念,直接给用户分配角色,并邀请用户加入机构。这样用户除了拥有自身的权限外,还拥有了所属机构的资源操作权限。
联盟链本质上可视为多个节点共同维护的分布式数据库,而节点的本质是计算机进程。微服务通常是分布式服务架构,且生产环境下一个复杂的系统可能存在成百上千个微服务,因此选择微服务通常意味着需要解决分布式架构中的各种难题。目前业界已有多套针对微服务的日志监控管理、链路追踪和故障排查方案,可快速引入或通过改良充分适配联盟链多节点组网的复杂架构。
BaaS平台是企业部署区块链并管理链上业务的可视化平台,其功能的广度和使用友好度直接影响区块链管理效率。而在区块链高速发展的当下,新技术的迭代日新月异,通过将微服务架构引入到BaaS平台的设计理念中,可帮助提升BaaS平台功能可扩展性、系统安全性、可运维性。