传统软件开发经过多年的技术沉淀,出现了众多成熟的软件框架,仅在JAVAEE领域,被大家熟知的Struts2、Spring、Hibernate、MyBatis等框架就支撑了几乎所有的企业级应用,上万亿美元的市场。在如今的商业应用开发中,软件框架已成为了开发的必备工具,像阿里、腾讯等IT巨头,甚至会不惜花费重金开发属于自己的软件框架。
对处于早期的区块链行业来说,能否早日出现专门支持区块链开发的底层框架,对行业发展有着巨大影响,并且这也是一个巨大的市场。
那软件框架到底是什么,又有着怎样的威力呢?区块链底层框架的巨大市场又有谁正在秘密布局呢?
软件框架及其作用
软件框架是实现了某应用领域通用功能的底层服务,这些服务包括实现该领域所有应用需要的默认行为的类集合,及常用的开发工具。
框架和类库不同,类库主要提供的是具体的开发包,提供特定功能的具体实现,而框架更强调整体设计,通过协调好构件之间的依赖关系、责任分配和流程控制,达到框架可以被不同的应用复用,让开发过程更加简单的目标。
对于软件开发来说,选择框架是架构师技术选型中非常重要的一环,正确的选择框架会带来很多好处:
从开发者的角度来讲,因为框架的代码可以被多次重用,开发会变得更高效,并且构件之间的通信方式,框架已经给出了具体的定义,开发中不用关心很多细节,开发者能更专注于系统业务功能的实现,开发会变得更简单。
从企业的角度来讲,成熟的框架能够有效的提升企业竞争力。因为框架可以极大的降低开发成本,节省开发时间,提高系统的稳定性,改善客户满意度。并且框架能够采用结构化的方式,对某个特定的业务领域进行描述,将这个领域相关的技术以代码、文档、模型等方式固化下来,形成有效的技术沉淀。
软件框架是IT巨头的宠儿
随着传统软件开发技术的发展,在不同的领域,出现了越来越多的软件框架。除了众多开源社区贡献的软件框架之外,国内外众多知名的IT巨头谷歌、阿里、腾讯等,都围绕着自己的生态,耗费的资金,开发了许多自己的软件框架。
Aliware 是阿里巴巴中间件技术品牌,Aliware从2007年开始,到现在,经历了12年的双11大促。双十一成功的背后是庞大的技术体系的支撑,其中就包括软件框架。到目前为止,阿里已经开源了像Jstorm、Dubbo等知名框架,在GitHub和Apache上,都是非常火的项目。
腾讯在软件框架中的投入也毫不逊色,仅在腾讯开源的官方网站上,开源框架就有15个。
越来越多的IT巨头意识到,软件框架对于企业的发展至关重要,能够拥有更多成熟的框架,是企业在商业应用中,能否取得胜利的关键,也是企业能否长久发展的基石。
NULS布局区块链底层框架
区块链行业仍处于发展早期,又由于区块链中包含了分布式、P2P、密码学等多种技术,相较于传统互联网开发而言,区块链开发的难度和成本会更高,这也加大了区块链技术发展的难度。
NULS核心团队通对区块链技术和行业现状的深入研究,明确了“让区块链更简单”的发展定位,并于2018年7月,成功启动了团队开发的公有链NULS1.0的主网。
NULS是一个面向可定制化服务的区块链基础设施,是一个全球化的开源社区项目。在NULS1.0主网上线之后,NULS核心团队和NULS CCC(NULS核心技术社区)成员又设计了NULS2.0。NULS2.0是基于微服务的全新架构,其架构中的核心部分NULSTAR,更是一个基于微服务的区块链底层框架。
NULSTAR:区块链微服务底层框架
想要实现基于微服务的底层框架,服务发现、服务注册、服务通信是必须要解决的问题。众所周知,SpringCloud是传统软件开发当中,基于微服务架构设计的优秀开源框架,包含了完备的微服务架构解决方案。对比SpringCloud,NULSTAR的设计除了与其有许多相通之处外,又根据区块链特性,做出了自己的创新。
SpringCloud在总体架构中主要包含三个关键角色:
Service Provider: 暴露服务的提供方;
Service Consumer:调用远程服务的服务消费方;
EureKa Server: 服务注册中心和服务发现中心。
为了实现服务发现和服务注册,SpringCloud中采用了Eureka。Eureka是Netflix开发的服务发现组件。在Eureka中,包含了三个关键概念:Region、Zone、Eureka。Region和Zone均是AWS的概念,在非AWS环境中,可以简单的将Region理解为Eureka集群,Zone理解为机房,Eureka理解为具体的服务器。
在NULSTAR中,实现服务发现和服务注册的采用的方式是,独立出一个叫Manager的模块,来专门负责这两项工作。当模块A被部署到服务器,想要对外提供服务时,模块A需要将自己的基本信息注册到Manager中。这样的设计让NULSTAR中的Manager充当了SpringCloud中Eureka的角色。
如果模块B需要使用模块A提供的服务,模块B需要先到Manager中获取模块A的信息,然后根据这些信息向部署模块A的服务器发起请求,从而获得服务。
在NULSTAR中,模块间的通信方式和标准的client-server系统不一样,每个微服务既是客户端(SpringCloud中的Service Consumer),又是服务器(SpringCloud中的Service Provider),因此需要全双工通信协议。NULSTAR最后选择了采用Websocket作为通信协议,消息格式采用的是使用最广泛,并易于调试的Json格式。
在NULSTAR中,取消了常见的消息总线设计,每个服务会直接进行点对点的消息传输。之所以这样设计,是因为消息总线相对于模块本身需要大量的资源,如果让消息以一种聪明的方式流动,不仅可以减少资源的消耗,而且速度会更快。
作为一个优秀的区块链微服务底层框架,需要保证足够的可扩展性。为了做到这一点,NULSTAR中还设计了一个特殊的模块Controller,专门处理那些有特殊需求(例如更快的处理速度、更高的安全性等)的服务。
当特殊需求出现的时候,系统需要开发特殊的模块,特殊模块会被部署到独立的服务器中,这个时候Controller就能发挥它的威力了。Controller会和特殊模块一起部署到独立的服务器中,根据预定义的规则启动和停止特殊模块,并且向主服务器发送相关信息。
除了Manager和Controller,NULSTAR的核心模块中还包含一个Storage模块和Connector模块。Storage模块主要实现存储相关的功能,Connector模块相当于一个API网关,是所有外部应用访问NULS系统的唯一入口。
NULSTAR中的每个模块都会包含一个服务基础库(Service Base Lib)。服务基础库中会提供标准的基础功能,允许内部模块和外部应用程序无缝地集成到平台中。在后续的开发中,NULS核心团队和技术社区的成员,还会开发多种语言的基础库,方便不同开发语言的开发者使用NULSTAR开发不同的区块链。
结语
1.软件框架在软件开发中起着至关重要的作用,能够让软件开发变得更高效、更简单,降低了成本,节省了开发时间,并且能够保证系统的安全性、可维护性和可扩展性;
2.优秀的软件框架有利于催生出更多优秀的商业应用,从而推动整个行业的发展。国内外的IT巨头在软件框架上都做了巨大投入,目标是为了提升企业竞争力,开发更多优秀的商业应用,保证企业的长久发展;
3.区块链开发门槛较高,并且仍处于行业发展的早期,如果能够出现优秀的区块链底层框架,将对整个区块链行业的发展有着巨大的推动力,并且底层框架也是一个潜在的巨大市场;
4.NULS团队率先布局区块链微服务底层框架,在区块链底层框架领域占得先机,这不仅是一个具有上万亿美金的巨大潜在市场,对整个行业的发展也是极大的助力。