软考系统架构设计师范文1:论软件架构风格的选择

论软件架构风格的选择

 

 

摘要:

 

2017年5月,我参加了公司“数据中心管理系统”项目的开发,并担任系统架构师职务,负责系统的架构设计。该系统旨在将公司分散在全国各地的数据中心内的设备状态与信息通过一系列传输协议发送到服务端,服务端进行分析和处理后反馈给设备操作指令或给管理人员发送通知信息,最终实现终端监控并管理所有设备。本文以数据中心管理系统为例,论述了软件架构风格在项目中的选择与应用。整个系统选择数据抽象和面向对象、管道/过滤器、基于规则的系统和进程通信四种架构风格组合应用完成项目,有效的实现了终端统一管理所有数据中心,同时证明了良好的架构风格选择和应用使系统的性能、可用性等指标都达到了预期目标。该项目于2018年11月完成验收后正式上线,交付至今运行稳定,得到了公司的嘉奖和用户的一致好评。

(欢迎交流备考345092496)

正文:

背景和项目概述:

 

2016年7月中国电信提出了适应智能化时代、通过智能牵引转型升级的3.0战略,着重推进网络智能化、业务生态化、运营智慧化,构建行业领先的物联网开放平台,为客户提供强大的物联网能力应用服务,重塑客户业务流程,挖掘业务价值,降低运营成本。公司一方面落实集团战略,一方面也因为公司业务多年来的不断扩展,在全国各地逐渐建设了多个数据中心,传统的数据中心管理模式是单机的,即为每一个数据中心设计一套管理系统,安排管理人员负责状态监控,事件处理和数据上报等工作。随着数据中心的不断增多,地域分布广泛,继续使用传统的单机模式必将增加大量的人力物力开支。

如何统一管理所有数据中心的所有设备,降低管理成本,减少人力物力开支,成了公司亟待解决的问题。我公司多年从事数据中心的设备生产、模块设计、设备管理以及相关软件开发,有着丰富的相关经验,经公司所有部门领导商讨后决定由开发部门负责开发一套数据中心管理系统。公司组建了12人的开发团队和3名系统实施人员,并任命我为该项目的系统架构师,负责软件架构设计和开发工作。

系统经过仔细梳理之后,拆分为四个主要模块,并为每个模块选择合适的架构风格。设备接入模块是与网关设备相接的模块,负责与网关设备进行消息交互,此模块采用数据抽象和面向对象架构风格;消息处理模块将设备传入消息和业务层处理结果转换为各自所能识别和处理的格式,此模块采用管道/过滤器架构风格;规则模块根据自定义规则对相应消息反馈处理结果并进行消息持久化,此模块采用基于规则的系统;业务模块包括系统管理、设备管理、网络组件管理、通知管理、规则管理、日志管理等功能,此模块采用进程通信架构风格。

 

过渡段:

架构风格反映了领域中众多系统所共有的结构和语义特性,良好的架构风格可以提供满足系统全程开发一种约束,因此在架构设计之初选择合适的架构风格非常重要。本文首先介绍常见架构风格种类和每种架构风格的含义,并论述选择使用数据抽象和面向对象、管道/过滤器、基于规则的系统和进程通信四种架构风格实现数据中心管理系统的原因,最后讨论一下我在本次项目开发过程中遇到的问题和解决方案以及个人感悟。

 

论点:

技术介绍:

 

一种架构风格是一组协作的架构约束,这些约束限制了架构元素的角色和功能,以及在任何一个遵循该风格的架构中允许存在的元素之间的关系。常见软件架构风格主要有五大类,分别是数据流风格、调用/返回风格、独立构件风格、虚拟机风格以及仓库风格。其中数据流风格包括批处理序列与管道/过滤器架构风格,其每一步处理都是独立,顺序执行的,适用于简单的线性流程。调用/返回风格包括主程序/子程序、数据抽象和面向对象、层次结构架构风格,其进一步降低系统耦合度,明确系统层次。独立构件风格包括进程通信、事件驱动架构风格,其构件特点为软件重用提供了支持。虚拟机风格包括解释器,基于规则的系统架构风格,其具有良好灵活性,可自定义规则。仓库风格包括数据库、黑板架构风格,其以数据为中心。      

结合项目:

设备接入模块采用数据抽象和面向对象架构风格,设备接入模块的核心功能是接收网关消息,而网关设备接入方式有多种,如MQTT接入、TCP透传、HTTP接入、CoAP接入等,不同厂商不同设备采用的接入方式都有所不同。数据抽象和面向对象架构风格满足了模块中将设备接入操作封装为接口,接入方式和网关消息封装为对象的要求。这种结构风格中的封装、交互、多态、集成、重用等特性统一了设备接入接口,并且不改变每个对象的属性,提高了设备接入的灵活性。

消息处理模块采用管道/过滤器架构风格,消息处理模块将从设备接入模块输入的消息经过顺序处理和转换后产生输出流,作为输入流传入业务层;将从业务层输入的处理结果经过顺序处理和转换后产生输出流,作为输入流传入设备接入模块。符合管道/过滤器架构风格通过改变记录方式转化数据,递增地转化数据等过程。

规则模块采用基于规则的系统,规则模块为接收频率较高的消息和使用频率较高的操作自定义规则集、规则解释器、规则/数据选择器,以规则为正确逻辑,通过规则流自动执行反馈及相应操作,降低了消息处理模块和业务模块的耦合度,实现了系统的高性能,高并发。

业务模块采用进程通信架构风格,业务模块中构件是独立的过程,连接件是消息传递。系统管理、设备管理、网络组件管理、通知管理、规则管理、日志管理等每个管理可视为一个构件,每个构件都有自己独立的功能,例如,设备管理构件建立与设备对应的驱动器,网络组件管理创建与设备传输协议对应的网络服务器,通知管理发送反馈消息给管理人员。同时每个构件通过消息传递实现业务模块的功能,例如,设备管理构件中的驱动器通过发送注册消息到网络组件管理中的网络服务器与设备建立联系,通知管理构件通过将通知消息发送到网络服务器再转发给管理人员。进程通信架构风格也同样降低了模块内构件之间的耦合度,增强了可修改性。

 

结语:

 

从本次项目开发整体来看,良好的架构风格选择使模块间耦合度降低,提高了系统的性能,可用性和可修改性等多项指标,满足公司的预期要求,保证系统后期的快速二次开发和数据接入。但在系统开发过程中也遇到一些问题,第一,由于设备数量较多,使用ID标识设备会导致数据可视化效果较差,难以定位设备。为此我采用经纬度定位和设备ID标识相结合两种方法结合,使用Echarts+VUE获取数据,以百度地图为基底直观展示所有设备,方便快速定位。第二,大量的控制层代码与关系数据库持久层的交互使运行速率较低,为提高效率,我增加Redis作为缓存和Elasticsearch搜索引擎,虽然增加了系统的复杂性,但数据访问速率得到了极大的提高。

此次项目的顺利完成为我在项目的架构风格选择等方面积累了更多的经验,同时也暴露出自身在架构风格选择方面的还存在一些不足,我应当总结本次项目经验,力争在下个项目中做到更好。

猜你喜欢

转载自blog.csdn.net/qq_38951230/article/details/126982861