【软考论文】论架构风格在系统的实践

【软考论文】论架构风格在系统的实践

本文以平台系统架构为例,讨论软件架构的选择和应用。在该项目中,我结合实际需要,从开发和维护难度、安全性、稳定性和扩展能力等方面综合衡量,为平台选择了具有应用层、服务层层、数据层的三层分层架构。平台的研发耗时8个月,目前系统已经稳定运行了一年的时间,实践证明,这种架构设计有效的降低了系统的维护和开发成本,增强了系统的安全性,提高了系统的稳定性和扩展能力。

摘要

2021年初,我所在的研发部承担了公司自主研发的XXXX管理平台项目的建设,为客户公司提供一站式的股权管理服务。我在该项目中中承担架构设计师的职务,主要负责该项目的系统架构、技术方案评估与实现、项目立项论证等工作。整个平台以多租户的模式,进行统一的管理及日常运营。平台整体逻辑复杂,对系统的高可用和高扩展能力提出了较高的要求。本文以平台系统架构为例,讨论软件架构的选择和应用。在该项目中,我结合实际需要,从开发和维护难度、安全性、稳定性和扩展能力等方面综合衡量,为平台选择了具有应用层、服务层层、数据层的三层分层架构。平台的研发耗时8个月,目前系统已经稳定运行了一年的时间,实践证明,这种架构设计有效的降低了系统的维护和开发成本,增强了系统的安全性,提高了系统的稳定性和扩展能力。

正文

随着国务院发布《关于支持浙江高质量发展建设共同富裕示范区的意见》中提到浙江到2025年和2035年要实现的共同富裕相关目标。越来越多的上市企业选择对员工开展XXXX计划。我所在的某集团公司,为了集团的发展,需要在XXXX这一赛道上保持竞争力,根据这一目标,XXXX管理平台这一项目应运而生。2021年初,我所在的研发部承担了公司自研XXXX管理平台项目的建设,为客户公司提供一站式的股权管理服务。我在该项目中中承担架构设计师的职务,主要负责该项目的系统架构、技术方案评估与实现、项目立项论证等工作。整个平台以为上市公司提供资金管理、财富管理、税务服务等一站式支持,涵盖股权管理、估值管理、多样化激励方案信息化管理、税务与财务咨询服务及系统个性化定制服务等,更高效、更便捷地为企业客户“一篮子”金融解决方案。整个平台涉及证券、税务、银行、电子签署等过个复杂业务逻辑,业务流程复杂、系统可靠性和可扩展性要求较高,影像的范围比较广。

在架构工作开始阶段,笔者意识到架构风格是描述系统组织方式的惯用模式,可以为项目提供架构级的解决方案。这种架构级的软件重用可以极大的提高系统建设进程。软件系统开发中常用的软件架构风格有数据流风格,调用/返回风格,独立构件风格,虚拟机风格,仓库风格。数据流风格包括批处理序列与管道-过滤 器,其每一步处理都是独立,顺序执行的,适用于简单的线性流程。调用/返回 风格包括主程序/子程序风格,面向对象风格,层次结构风格,主要通过分治思 想进一步降低系统耦合度。独立构件风格包括进程通信,事件驱动风格,为软件重用提供了支持。虚拟机风格包括解释器风格,基于规则的系统风 格,其具有良好灵活性,可自定义规则。仓库风格以数据为中心,包括数据库系 统风格,黑板系统风格和超文本系统风格。

在公司技术顾问的建议下,我们决定采用调用返回架构风格中的面向对象和层次架构风格作为该系统的软件体系架构。这种架构风格将系统划分为三个主要的层次:应用层、服务层和数据层。每个层次都有其特定的职责和功能,共同协作以实现系统的整体目标。采用这种架构风格的优点在于,每层只对上一层提供服务,并调用下一层的服务。每个层次都可以独立地进行开发和测试,不会影响到其他层次的功能。此外,由于每个层次只关注自己的职责范围,所以即使修改某一层次的代码,最多也只会影响到相邻的两层。这种分层的架构设计有助于将大的问题分解为若干个渐进的小问题逐步解决,从而降低系统的整体复杂度。同时,隐藏问题的复杂度也有助于提高团队的开发效率和协作效果。接下来,我将分层次详细介绍三层层次体系结构的设计过程。

应用层作为系统架构的最高层次,承担着用户界面和用户体验管理的重要职责。该层由两个主要部分构成:XXXX管理端和员工端。它通过调用服务层来实现具体的业务逻辑处理。在应用层的实现中,我们采用了SpringMVC框架,这一选择为我们提供了一个高效的代码组织和管理方式,极大地促进了系统的模块化和可维护性。为了提升管理效率和系统稳定性,我们将整个应用层细分为若干子系统,包括股权服务管理系统、用户权限管理系统和资金归集系统等。这种划分使得各子系统得以独立维护,确保了它们的稳定性和可靠性。以股权管理系统为例,该系统的核心任务是维护公司XXXX计划的相关信息。为了保障数据的完整性和准确性,我们设计了一个审核流程,其中包含了复核人角色。只有经过复核人员的确认,XXXX计划的相关数据和流程才能继续执行。虽然这种做法牺牲了一定的便捷性,但它显著提升了数据的准确性。在股权管理模块中,我们还调用了服务层的账户服务来验证用户身份。通过账户服务的认证和授权机制,我们可以明确用户在股权管理模块中的操作权限,从而有效避免因权限不当引发的系统安全风险。此外,为了增强系统的可修改性和交互性,我们选择了VUE框架来编写前端页面。通过前后端分离的架构,前端页面可以独立于后端逻辑进行开发和部署,这为界面设计和交互优化提供了更大的灵活性,从而能够提供更加优质的用户体验。

服务层位于应用层之下,承担着处理应用程序核心业务逻辑的重要职责。为了提升系统结构的清晰度和立体化,我们将整个系统细分为六大服务模块:用户权限管理、XXXX管理、资金归集、税务缴纳、电子签署以及消息推送。通过这种模块化设计,不仅使得系统架构更加条理分明,而且在稳定性方面也得到了显著提升。原先分散的代码被整合成通用服务,由专门的团队负责运维,有效提升了系统的可靠性和维护性。在技术选型上,我们基于成本和技术成熟度的考量,采用了阿里巴巴开发的dubbo服务框架来实现服务层。开发和测试阶段中,我们发现了在批量处理电子协议签署和消息发送时,服务层处理逻辑的速度较慢,这导致用户在页面上的等待时间过长。为了解决这一问题,我们在电子签署和消息推送服务中引入了消息队列机制,实现了异步处理。这样,用户界面不再需要等待服务层的处理结果,大大缩短了用户的等待时间。同时,为确保消息数据的完整性和安全,我们实施了一系列保障措施。例如,在消息发送端,我们增加了异常数据的存储和告警通知功能,以便在出现异常时系统能够及时发现并采取措施。在消息中间件的存储层面,我们启用了同步刷盘和数据备份功能,确保数据的持久性和一致性。在消息消费端,我们设置了消息处理失败的重试机制和告警通知,以减少处理失败带来的影响,并确保相关人员能够及时得到通知。这些措施共同保障了系统的稳定性和数据的安全性。

数据层作为服务层的基础,我们采纳了多样化的技术手段以确保数据访问和处理的高效性。鉴于用户对数据的集中式访问模式,我们专注于提升数据访问的速度和效率。为此,我们选择了基于Redis的缓存策略,将频繁查询的数据暂存于Redis中,以此减少对数据库的访问频率,进而加快系统的响应速度。除了引入缓存机制,我们还对数据库进行了读写分离的优化措施。考虑到系统业务的特点,数据库通常需要处理大量的读操作,远超写操作的数量。为了最大化数据库性能的优势,我们将读操作和写操作分配到不同的数据库服务器上分别执行。这一策略有效减轻了单一数据库的负担,从而提升了整个系统的稳定性和性能。对于消息推送服务的数据存储问题,为了避免单表数据量过大而影响消息查询性能,我们对消息数据表进行了分库分表的处理。具体来说,我们将原本单一的数据表拆分成多个独立的表,并分布存储在不同的数据库中,以此分散单表的压力。在实施分库分表之前,我们的团队成员对未来的消息数据量进行了详尽的分析与深入讨论。基于这些预估结果,我们决定将消息表拆分为8个数据库,每个数据库包含8张表。这种分库分表的策略不仅确保了每张消息表的数据量保持在合理范围内,而且显著提升了消息服务的性能。此外,这种设计也为系统的后续扩展和升级提供了便利。当需要增加新的消息类型或应对更大数据量的处理时,我们只需在相应的数据库和表中添加新记录,无需对整体系统进行大规模的修改,这大大简化了系统的维护和升级过程。

在架构决策阶段,我所选择的这种架构得到了公司领导的认可和采纳,2021年8月,系统正式上线运行,至今已稳定运行了1年多的时间,系统平稳经历了访问量大增、紧急客户公司接入等复杂运维状况,系统所采用的三层分层架构在降低开发与维护难度、加强平台安全性、提高系统稳定性、增强扩展能力等方面都发挥了重要的作用,获得领导和同事的好评。但在系统运行过程中,我也发现了这种架构存在的一些不足。首先是分层结构的多层调用降低了系统的性能。其次是分层所带来的级联修改问题,上层逻辑的修改可能会导致下层逻辑随之修改。分层架构的优点和面临的问题将是我今后在同类系统的架构决策方面需要重点考虑的因素。

【软考论文】论架构风格在系统的实践

https://www.shuiwh.com/posts/learn-ruankao-003/

作者

水无痕

发布于

2025-07-11

更新于

2025-07-19

许可协议