论企业应用系统的分层架构风格

摘要

        2022年3月,我有幸加入公司主导的新智慧公交项目,担任架构师及软件设计师。在项目中,我积极参与了系统架构的设计与评审,并主导了调度模块的软件设计及开发工作。该项目采用了物联网的经典分层架构,分为设备感知层、网络交互层和应用层。在具体的公交应用层架构设计上,我们借鉴了领域驱动设计(DDD)的理念,构建了一个清晰分层的框架结构。截至2022年12月,项目成功上线,并已稳定运行近两年。得益于精心设计的分层架构,系统具备了良好的可修改性,显著降低了后期维护成本。该项目得到了用户、领导以及开发团队的一致好评。

正文

        在当今“互联网+” 的时代背景下,城市公共交通行业作为一个传统行业,由于其本身所具有的业务复杂性,技术进步长期受限,行业整体技术水平相对较低。为应对公交行业在技术发展层面遇到的挑战,同时满足公众对高品质交通服务的期望,我们全新打造的公交智慧平台系统应运而生。新一代的智慧公交系统,以物联网作为基础,通过互联网作为门户,提供以云原生技术为背景的Saas 化服务平台。并通过当下主流的大屏、小程序、手机端APP操作程序等技术手段,给与用户多元化的使用和体验。2022年3月,公司所组织的新智慧公交平台项目正式启动,我在其中担任系统架构师的角色,参与了项目的整体架构设计与评审工作。该项目预计总投资达3000万元,计划在9个月内完成。我们的目标是通过这一创新平台,推动公共交通行业的技术革新,提升服务品质,满足现代城市交通的多元化需求。

        新智慧公交平台的架构基础是物联网的分层模型,该模型包含三个主要层级:设备感知层、网络交互层和平台应用层。设备感知层负责采集并接收来自硬件设备的信令;网络交互层则对这些信令进行处理和封装,确保它们能够被正确地转发至相应的平台服务。在平台应用层,我们对接收到的信令执行复杂的业务逻辑处理,并通过推送返回信令的方式与设备进行互动。而在本次项目中,设备感知层和网络交互层的构建主要依托于公司的中台战略,我们得以利用公司预先封装好的S17平台构件(设备交互平台),这大大简化了我们的设计开发工作。因此,我们的核心关注点集中在公交业务项目的平台应用层,这一层是整个系统业务逻辑的核心所在,也是我们创新和优化的重点领域。

        公交平台应用层的架构遵循领域驱动设计(DDD)的分层原则,由以下层级构成:接口交互层(Adapter)、服务提供层(Client)、服务获取层(wrapper)、核心领域层(Domain)、服务层(Service),以及数据交互层和数据库层。平台的交互流程起始于接口交互层,它接收前端用户请求,随后传递至服务层进行业务处理。服务层负责整合业务逻辑,通过wrapper封装调用外部服务,并利用核心领域层的领域模型来执行具体的业务操作。核心领域层通过与数据交互层的协作,访问中心数据仓库以获取所需信息。同时,每个服务通过服务提供层向外界开放API接口,实现了服务间调用的标准化和集中管理。尽管领域驱动设计的分层架构在一定程度上提高了系统的复杂度,但其分层设计方法却使得代码结构井然有序,每个模块的职责界定清晰。这种设计实现了交互流程的解耦,显著增强了系统的可修改性,为项目的持续运维和后续发展奠定了坚实的基础。

        分层架构作为一种广泛应用于系统构建的设计模式,在提供模块清晰性和可扩展性的同时,也伴随着一定的脆弱性问题。针对这些问题,我们需要采取相应的策略来确保架构的稳定性和效率。

        首先,分层架构面临两大脆弱性挑战。第一,底层模块的脆弱性:若底层模块出现故障,整个交互流程可能会受到影响而崩溃。为减轻这一风险,我们必须增强底层模块的健壮性。实现方式包括采用冗余设计、故障转移机制和备份策略,以确保数据层的稳定运作。第二,模块间交互的脆弱性:与单体架构相比,分层架构中的每一层都需要实现通信机制,这可能导致性能损耗。为应对此问题,我们应优化层间通信,使用高效的通信协议,并建立监控与故障检测系统,以便快速发现并解决通信故障。简化通信协议,减少不必要的复杂性,有助于提升系统的稳定性和性能。在微服务架构中,引入中间件或服务网格技术可以增强服务间的通信可靠性及灵活性。此外,设计分层架构时,我们应避免“空层现象”的出现。空层现象指的是某一层在架构中仅起到数据传递的作用,而未增加任何附加价值。在采用DDD(领域驱动设计)初期,由于对领域层(Domain)和服务层(Service)职责界定不清,我们在实际设计和开发过程中很容易造成服务层成为空层。为解决这一问题,我们对架构进行了合理调整,明确了各层的具体职责,并通过代码重构有效避免了空层现象的发生。

        2022年12月,项目成功上线,并已稳定运行两年。回顾整个软件开发历程,我们在前期架构设计阶段采纳了面向对象的开发方法,并采用了分层架构风格构建系统。尽管在项目开发中我们遇到了分层架构的脆弱性和空层现象等挑战,但凭借团队成员的共同努力和对前人经验的借鉴,我们成功找到了解决问题的策略,确保了项目设计的合理性和结构的清晰性。这一成果赢得了用户、领导和开发团队的一致好评。在这个过程中,也使我对软件架构设计和软件架构模型的理解更加深入,实际架构设计的操作经验也得到了显著提升,这为我的后续职业发展奠定了坚实的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值