APP下载

基于微服务的建筑能效管理SaaS云平台架构设计

2021-06-16肖朋林

电子技术与软件工程 2021年5期
关键词:部署架构软件

肖朋林

(上海市建筑科学研究院有限公司 上海市 201108)

1 引言

自2007年起,为推进建筑能效管理,我国逐步探索推广了公共建筑分项计量监测应用。从2010年起,上海市作为第三批建筑能耗监测系统建设试点城市[1],开始了建筑能源计量的快速推广,截至2020年底上海全市已有超过2000 栋建筑实现了电、水、气等能源资源的实时监测。当前建筑能效管理系统主要以单系统的形式部署在建筑内。随着建筑能耗及各类运行过程数据的增加,系统的运行性效率和性能将不断降低,导致用户体验不好;同时系统缺少及时的交互性的反馈,导致了大部分楼宇业主新需求无法获得,进而导致能耗监测不能达到预期效果。且升级后的系统无法快速的将原有服务进行替换,且全部替换的成本过大,致使最新功能服务无法第一时间交付用户使用。

为了更好的为建筑业主提供便捷高效的建筑能效管理服务,传统的基于单体式服务的平台架构体系不能支撑系统持续稳和高效的运行,各类差异化的用户功能和性能需求也不能得到及时的满足。为此本文设计了一种基于微服务的建筑能效管理SaaS云平台架构,通过微服务的方式为平台提供技术保障,保障平台的性能和可扩展性,基于SaaS 的服务模式构建灵活、标准、可配置的平台功能服务,最大限度的提高平台的价值。

2 微服务架构研究

2.1 什么是微服务架构

微服务架构的概念由MartinFowler 在2014年3月发表[2],因具有较好灵活性和可扩展性,使其逐渐为主流软件架构方案。微服务架构是将功能模块按照不同分类拆分成多个小模块服务,各服务独立开发、测试、部署,各服务之间使用轻量级通信规范进行相互通信、数据传递和协作,例如通过Restful 风格的API 接口、RPC远程过程调用等,极大地降低了服务之间的耦合性[3]。

2.2 微服务架构优势

微服务技术栈的优点包含以下几个方面[3]:

(1)服务功能开发和部署速度快:微服务是将复杂项目,按照不用的业务功能差分成一个个微小功能,每个小功能只关注一个功能点,使得此服务的具有较少的代码,因此编码开发相对比较快速。针对小服务的部署也是可以依托热部署的技术,快速的替换部署环境内的全部服务,部署后的服务可以快速地支撑系统的运行。

(2)需求变更影响小且上线快:一般需求的变更是针对某个具体的业务功能,由于微服务模式下已经将各个功能进行了服务划分,因此只要修改对应服务的代码逻辑即可,修改后仅需对此部分逻辑进行测试,保障符合需求就即可上线;上线部署也无需更好整个系统的服务,只需要替换对应修改的服务即可,且在上线过程极短,极大的降低了功能修改后,系统重新部署对用户使用的影响。

(3)各微服务技术栈不受限制:由于各个服务相互独立,通过标准的协议进行通信,因此各个服务可以采用不同的语言和技术栈进行开发。

图1:平台总体架构

(4)易于服务实例的扩展:当某个功能服务的需求量增加时,仅需增加此功能服务的实例即可,不需要增加整个系统的服务,极大的节省了服务器资源。

3 SaaS服务模式研究

SaaS 是指软件即服务的意思,是Software-as-a-service 的简写。SaaS 模式是软件交付模式,是指软件部署在供应商服务器端,使用者通过客户端上的浏览器访问,以此获取功能[4,5]。SaaS 模式的软件具有如下优点[6]。

(1)服务商早期投入的开发成本和基础资源成本较大,但使用者的成本将大大的降低,这样降低了系统推广的难度,使得软件有更多的人使用,以此获得更多的回报,从而达到盈利的目的。

(2)SaaS 模式的软件具有快速部署,使用者第一时间获得新功能的优点。因为软件均部署在服务器端,只要服务器端更新,所有用户将即时获取到最新功能服务。

图2:微服务技术架构图

(3)SaaS 模式的软件具有跨平台性。基于SaaS 模式的软件基本是通过Web 浏览器为用户提供服务,与操作系统和终端无关,只要软件服务的适配做好即可实现用户通过PC 或者移动终端随时访问使用软件服务。

4 平台架构设计

4.1 平台整体架构设计

基于上述研究,本文提出了基于微服务的建筑能效管理SaaS云平台架构,通过结合微服务技术架构与SaaS 模式,解决当前单体服务架构系统的性能、快速部署的难题。图1 展示了本文设计平台的架构。

平台基于微服务架构和SaaS 模式共设计了九个层级,分别是数据感知层、采集传输层、集成服务层、存储服务层、数据服务层、业务服务层、功能模块层、SaaS 服务层、租赁用户层。其中数据感知层、采集传输层是属于数据基础层,主要在建筑端完成,租赁用户层是平台的服务对象层。其余层级根据特点分别归纳到微服务架构体系和SaaS 模式体系中。下面分别介绍下平台主要层级的具体设计内容。

(1)集成服务层:通过部署MQTT 服务、TCP 服务接收数据,并通过Kafka 消息中间和ignite 内存数据库对数据进行缓存,以提高数据接收的性能。

(2)存储服务层:通过存储服务、汇总服务、指标计算服务等将数据原始数据存储到数据库,并汇总计算得到用来数据。并将汇总计算后的数据存储到分布式TiDB 数据库。

(3)数据服务层:此层是将各类数据操作封装成不同的服务,为业务服务层提供服务,并按照微服务方式部署,以提高服务性能和可扩展性。

(4)业务服务层:此层是将各类业务功能分解成不同的服务,比如实时监测服务、数据统计服务、配置管理服务、权限服务等,以此为功能模块提供各类服务。

(5)功能模块层:此层是功能界面展示实现层,根据不同的功能需求调用不同的业务层服接口;所有的调用都通过网关统一处理,实现权限验证和负载分配。

(6)SaaS 服务层:此层是通过配置将功能组合成不同的服务场景,服务于不同的用户类型。

4.2 服务模式设计

SaaS 服务模式有四个等级的成熟度[6],依此是:

(1)定制开发级:此级的SaaS 模式与传统软件模式的区别主要在于商业模式的不同,在部署方式和功能开发上基本一致。

(2)可配置级:此级的SaaS 模式创新在于通过实例配置为用户提供服务,但是针对不同的用户还是进行独立的部署。

(3)高性能多租户架构级:此级的SaaS 模式创新在于仅部署一个实例,通过配置的方式为全部用户提供服务,这样规避了以上2 级的缺点,但此级的模式还不能达到最优化,因为当用户量和使用量增加时,单一实例的部署将无法为用户提供可靠的性能保障。

(4)可伸缩多租户架构级:此级的SaaS 模式创新在于通过负载均衡的方式部署多个相同的实例,以此来弥补单个实例部署的性能不足问题。

本文设计架构采用第四级可伸缩多租户架构级,结合微服务理念,不仅部署多个实例,而且将实例分解成多个服务,最大限度的发挥微服务技术和SaaS 模式的融合优势。

4.3 微服务技术架构设计

目前微服务技术体系架构主要有Dubbo、.Net Core、Dubbogo、Spring Cloud 等。通过对比,本文所设计平台架构的微服务技术体系选择阿里巴巴公司在Spring Cloud 基础上扩展的Spring Cloud Alibaba 技术栈,图2 展示了此技术栈的主要技术内容。

此技术架构体系采用的主要技术介绍如下:

(1)Web 服务:采用Nginx 为应用提供Web 服务。Nginx 具有占用系统内存少,运行稳定性高等特性,是目前世界上使用最多的Web 服务器;负载均衡也是其提供基础功能之一,它将为应用提供分流的功能。

(2)服务网关与验证:设计采用Spring Cloud Gateway 网关作为统一的服务接口请求入库,并采用OAuth2 对请求接口进行验证,以此完成服务请求的验证与分发。

(3)服务注册发现:设计采用Nacos 作为此技术体系的服务注册发现技术。通过Nacos 我们可以简单的实现服务的动态发现,配置和流量管理。

(4)熔断限流:设计采用Sentinel 作为熔断限流技术。

5 结束语

本文提出一种基于微服务的建筑能效管理SaaS 云平台架构设计。采用微服务架构体系使得平台的性能具有可扩展性,保障了在建筑能耗及系统运行数据不断增长的情况下,始终提供高性能服务。采用融合了微服务技术的可伸缩多租户架构模,保障了功能需求的多样性和需求变化的快速响应。按此设计实现的建筑能效管理云平台,弥补了采用传统架构体系单体系统的不足,具有性能可扩展、功能可扩展性、资源可扩展等特性,极大提高了建筑能效管理的水平和平台价值。

猜你喜欢

部署架构软件
基于FPGA的RNN硬件加速架构
一种基于Kubernetes的Web应用部署与配置系统
禅宗软件
晋城:安排部署 统防统治
功能架构在电子电气架构开发中的应用和实践
部署
软件对对碰
LSN DCI EVPN VxLAN组网架构研究及实现
部署“萨德”意欲何为?
一种基于FPGA+ARM架构的μPMU实现