【系统架构设计师-论文】CBSD基于构件的软件开发

论基于构件的软件开发在新媒体平台系统的实践

摘要

2021年12月,我所在的团队承接了某大学的媒体中心委托的《新媒体平台》的开发,我在项目中担任系统架构师,主要完成技术方案评估与实现,项目立项论证等工作。该系统以文章阅览功能为核心,分为文章搜索模块、用户评论模块、文章审核模块、用户管理模块、社团管理模块等。本文结合作者的实践,以《新媒体平台》为例,采用Spring Cloud微服务架构,讨论基于构件的软件设计方法在项目中的具体应用,包括构件获取、构件开发、基于构件组装的系统开发三个阶段。在构件获取阶段通过对接现有系统、使用构件库、集成第三方软件来实现需求,在构件开发阶段使用了多种设计模式来保证构件的可重用性,在构件组装阶段使用了同步消息、异步消息、工作流方式来实现不同业务类型下构件的组合。最终项目顺利上线并稳定运行,获得用户一致好评。

正文

随着移动信息化技术的迅猛发展,自媒体平台日益增多,各种平台之间的切换十分繁琐,每次都要在不同的平台发布同一内容,不利于媒体中心实时发布信息和全校师生阅览且不便于管理,而校园官网又不便于发布日常文章。为了解决这一问题,校园媒体中心制定了校园专属媒体平台战略,根据这一战略要求,新媒体平台(以下简称为“NMS”系统)应运而生,将全校院系社团的动态集中于该系统上,降低了全校师生对文章内容的检索难度,使师生可以快速准确地了解学校的最新动态。NMS系统以文章阅览功能为核心,分为文章搜索模块、用户评论模块、文章审核模块、用户管理模块等。文章搜索模块主要负责为用户提供检索文章的接口;用户评论模块负责对于各个文章中不同用户的评论内容的管理;文章审核模块允许管理员对申请发布的文章内容合法性进行审核;用户管理模块负责对以注册的用户信息进行管理;社团管理模块提供各院系社团管理自己发布内容的功能。2021年12月,我有幸参与了项目前期的一些工作,担任系统架构设计师的职务,主要负责设计平台系统架构和安全体系架构。

基于构件的软件设计方法(CBSD)主要是指从已有的构件库中复用构件,尽快让系统模块化,从而让系统能够快速开发出来的这么一个开发方法。具体可以细分为检索和提取构件、理解和评价构件、对构件进行修改、组装构件模型四个阶段。检索和提取构件阶段目的寻找可复用的构件,从构件库中提取寻找构件一般有三种方法,分别是关键字分类法,刻面分类法和超文本组织法;理解和评价构件阶段负责解决如何复用构件的问题;对构件进行修改阶段目的是为使构件适合目标系统,对齐进行修改;组装构件模型阶段基于功能,基于数据或基于面向对象的组装技术令构件之间可以相互的连接,共同工作,形成相应的目标软件系统。

根据作者的实践经验,基于微服务架构的NMS系统的构件可以分为中间件构件和业务构件。其中中间件构件包括用于构件云原生应用的动态服务发现、配置管理和服务管理的平台,比如nacos等。用于创建容器的应用容器引擎构件,比如Docker、Tomcat、podman等。用于实现微服务的RPC 框架,包含服务接口描述及实现方案、向注册中心发布服务等功能,常见的 RPC 框 架包括 Spring Cloud、Dubbo、gRPC、 Thrift、go-micro 等。服务网关:介于客户端与微服务之间的网关层,可以理解为「门卫」的角色,以确保服务提供者对客户端的透明,这一层可以进行反向路由、安全认证、灰度发布、日志监控等前置动作,使用Spring Cloud Gateway实现;服务监控:对服务消费者与提供者之间的调用情况进行监控和数据展示;服务追踪:记录对每个请求的微服务调用完整链路,以便进行问题定位和故障分析;服务基础设施:分布式消息队列、日志存储、数据库、缓存、文件服务器、搜索 集群等,用以提供服务底层的基础数据服务,比如Kafka,Redis,MongoDB等。

业务构件包括 RBAC 认证构件,OAUTH2.0 授权构件、用户访问构件、平台开发构件、其他平台构件、平台管理构件。这里重点从用户访问、平台开发、平台管理和三方面展开。

用户访问构件角度来说。用户访问是NMS系统的基础业务,良好的人机交互是系统的最基本需求,针对不同的院系社团的实际情况,不同使用人群的需求,作者认为该系统需要开发多种类型的用户访问终端。在开发阶段,依据终端的类型,将不同类型的终端分配给不同的项目组进行开发,包括Web、Android、ios、H5等。各个小组负载每个微服务从开发、部署到运维的整个生命周期,并且提供完善的构件开发文档,确保构件的复用。在各小组开发完毕之后,各个终端之间采用nginx反向代理进行集成。

在平台开发构件方面,作者将其概括为三方面,分别为基础公共构件、院系自定义构件和社团自定义构件。基础公共构件为平台提供基础的使用功能和页面模板,包括内容发布、内容管理、评论管理、私信管理、成员管理等功能,使其风格标准化,避免和系统的整体风格有异,减轻用户的使用学习成本,增加系统的易用性。院系自定义构件由于涉及学院的实时动态,考虑到官方文章的发布,需要额外增设通告公示模块和讲座报告模块,便于用户更直接地了解到关乎自身利益的信息,比如奖学金公示、选课信息确认等等。社团自定义模块则由于社团相对院系具有更高的自由度和开放度,会增设活动通知模块、活动报名模块以及比赛投票模块等,增加用户在社团活动方面的参与度。

在平台管理构件方面,通过对用户访问终端和平台开发构件的集合封装,构成了平台管理构件。使用该构件之前,对NMS的管理需要落实到具体的每一个构件上,操作步骤繁琐且管理困难。通过平台管理构件可以直接对不同构件进行统一的管理,比如用户管理、内容管理、数据统计、标签管理、系统管理等。作者所在的团队通过开发单独的平台管理模块,调用其他模块的提供的接口,方便快捷地将其他构件组装成各类次级服务。即使业务需求发生变化,也可以第一时间通过平台管理构件调用变更的服务接口,快速迭代出新的目标服务。

但有用户访问、平台开发、平台管理还不足以满足全校的需求,无论怎么丰富院系和社团的内容也没有办法覆盖整座学校。这时就要使用其他平台构件,包括多种个性化的服务,比如爬虫服务、广告服务、推荐服务、计算服务和标签服务。爬虫服务提供数据爬取、数据清洗和数据跟踪功能。广告系统重点聚焦于校内的快递驿站和校园财务后勤集团,使学生第一时间了解到饮食和物流的变动信息。推荐服务可以通过大数据进行个人喜好的个性化推荐。计算服务负责针对访问量、用户量和内容量的计算。标签服务将用户标注的内容知识进行分类管理。这些其他平台构件使该系统的功能更加全面,人机交互更加理想。

结尾

在架构决策阶段,我所选择的这种架构得到了团队和校领导的认可和采纳,2022年6月,NMS系统正式上线运行,至今已稳定运行,获得了全校师生的一致好评。系统平稳经历了访问量激增、大量活动上线、紧急应用接入等复杂运维状况,系统所采用的基于构件的软件开发方法在提高开发效率、系统的管理和维护、提高系统的可靠性和稳定性等方面都发挥了重要的作用,获得了领导和同事的好评。但是在系统运行过程中,我也发现了这种架构存在的一些不足。首先,构件之间的兼容性问题和引入多种构件导致的复杂度上升都会增加构件组装的难度;其次,过多的引入构件将会导致构件冗余问题,增加系统运行时的开销,使其性能降低。CBSD所具有的优点和面临的问题将是我今后在同类系统的架构决策方面需要重点考虑因素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值