软考高项-系统架构师(论文)-架构风格

关于架构师论文:

备考架构师写论文的时候,发现网上可参考的范文很少,初写的时候很是浪费时间。
现在把自己学习的时候,写的论文分享出来,希望能对备考的同学有点帮助


架构风格:

摘要
2019年2月,本人所在的公司承担了一项小区管理系统平台的开发项目,该项目主要是将物联网,云计算等多种技术融合,为小区住户提供安全舒适的小区生活,同时提升小区物业的管理效率。我在该项目中担任系统架构设计师一职,主要负责系统架构设计和部分软件开发工作。本文以该小区管理系统平台为例,主要论述了软件架构风格在具体开发中的应用。整个项目采用分层的软件架构风格,分为应用层,服务层,数据层,这样可以降低系统的耦合度,增加系统的内聚性;为保证数据共享和数据处理的及时性,在数据层采用了数据库系统风格;在服务层采用了独立构件的隐式调用风格,这种软件架构风格使得软件有很好的复用性,方便后续的维护。最终项目成功上线,并获得了客户的一致好评。

正文
2019年2月,本人所在的公司承担了一项小区管理系统平台的开发项目。该项目主要是从小区住户,物业以及开发商三个方向作为出发点,通过小区管理平台的建设使小区业主能够感受到科技的发展有数字信息化与智能化的生活体验拥有一个安全、舒适、温馨和便利的生活环境。同时也使物业管理更简单、方便,节省人力。提高了小区的生活档次与开发商的名气,相应的也提高了小区的销售价格与销量以及物业管理费等,给开发商带来更大的经济效 益。使小区业主在各方面都拥有更高、更好的体验。本项目应用了物联网,互联网,云计算,大数据,复杂算法等多种技术,此管理系统平台应用分层架构的架构风格,分为应用层,服务层,和数据层,包括物业管理,小区的安防管理,智能家居,邻里社交,周边服务,在线缴费等服务模块。不同类型的登陆用户,有不同的桌面,小区住户可以通过该系统查看小区安保情况,可以自主缴费,进行报修投诉,查阅周边服务等,为小区住户提供安全的居住环境和智能,便捷的居住体验;物业可以通过该系统及时了解小区的情况,包括小区车辆,电梯运营,公共设施的情况,掌握小区住户的关注点,可以消除信息孤岛,及时解决问题,从而提高物业管理的效率,提升物业管理水平,为开发商创造更大的价值。我在该项目中,担任系统架构设计师的职务,负责系统架构的设计和部分软件的开发工作。
在架构设计开始阶段,我们认识到选择合适的软件架构风格对架构设计的重要性。软件架构风格是描述特定软件系统组织方式的惯用模式,反应了领域种众多系统所共有的结构和语义特性。常用的软件架构风格有:数据流风格,调用返回风格,独立构件风格,仓库风格等。层次结构的特点是将系统划分为多个层组,每一层为上一层服务,并作为下一层的客户,每一层最多影响两层;独立构件风格强调每个构件都是独立个体,构件之间不能直接通信,隐式调用风格,强调构件不直接调用过程,而是触发一个或多个事件自动调用,这样有效降低了系统的耦合性;仓库风格,包括数据库系统,黑板系统和超文本系统。由中央共享数据结构和独立构件组成,数据库系统,由中央数据源保持当前状态,由独立构件对数据进行操作,这样可以支持多种数据格式,扩展方便。
在本项目中我们采用了层次结构风格,隐式调用风格和数据库系统三种风格。下面将阐述这三种软件架构风格在项目中的应用。
小区管理系统平台整体上采用了层次结构风格。项目采用J2EE技术进行开发,考虑到用户需求以后的变化和为了维护方便,采用了层次结构风格,主要分为应用层,服务层,数据层。在应用层的设计中,视图层负责和用户进行交互,显示数据和接受用户输入,为了保证浏览兼容性,采用了JQuery框架;业务逻辑层采用了流行的Spring框架;服务层采用了Dubbo框架,将各个服务模块发布到服务注册中心暴露服务,应用层作为服务消费者从服务中心订阅服务,然后根据注册中心获取的服务进行远程调用;数据层运行在数据库服务器上,主要负责管理数据库读写和执行事务,在数据层我们使用了Oracle RAC集群,来保证并非性和稳定性。层与层之间严格按照RESTFul 风格的web API进行接口设计这样可以降低系统的耦合度,增加系统的内聚性,在需求发生改变时,能在短时间内对系统进行修改并重新投入使用。

在数据层采用了数据库系统风格。由于系统中的各个子模块会互相共享数据和处理业务,这就需要中央数据结构维护当前状态,独立构件在存储上执行操作,经过分析这种业务模式符合数据库系统风格,并且系统中各模块的数据存在逻辑关系,所以选择了关系性数据库,搭建了Oracle RAC集群。多个Oracle服务器共享cache,这些Oracle服务器共享一个基于网络的存储。所有的datafiles,control files,redo log files等都保存在共享存储盘上,这样可以保证RAC里所有的实例都可访问数据库。如果集群中的一个节点发生故障,Oracle可以继续在其他节点上运行,体现了很好的可用性;Oracle数据库提高缓存技术,当查询数据时,先查询缓存里,如果命中,便返回,如果没有,从数据库里查询,并同步到缓存中,这样可以降低磁盘的I/O,提升查询速度。这样在满足业务需求的基础上,还可以兼顾系统的负责和高可用性。
在服务层我们采用了独立构件中的隐式调用风格,采用这种风格可以简化构件之间的交互复杂度,降低系统的耦合度。由于系统中存在多个应用业务服务模块,如智能家居,周边服务,安防管理等,这些应用模块之间不适合采用进程通信方式。我们采用了消息队列的通信方式。在消息中间件的选择上,我们选择了开源消息中间件ActiveMQ作为构件,它是一款消息服务器,利用ActiveMQ发布与订阅的方式。不同的页面模块主题消息对应不同的订阅动作,不同的消息队列由不同的应用负责监听。应用处理完主要逻辑后,写入消息队列。消息发生是否成功可以开启消息的确认模式。消息队列返回消息接收成功的状态后,应用再返回,这样可以保证消息的完整性。基于消息中间件的架构设计能够让系统构件化的思路得到很好的实施。
以上软件架构风格的使用,基本上实现了预期的效果。项目历时8个月,在2019年10月底顺上线,运行稳定,至今无重大事故出现。消息中间件通过多次调优,吞吐率接近存储盘I/O的极限。项目组目前还留有专门人员进行维护,系统的维护量可控。软件架构风格的使用,使系统模块间耦合度降低,增加了了软件的复用性,提升了系统的稳定性和可靠性。
不足之处有两处,在数据层设计时,我们开始将数据的读写放在一起,这样容易出现单点故障,经过和架构总监讨论后,我们采用了读写分离的架构,利用数据复制技术,将数据的读和写分布在不同的处理节点上,达到了提高可用性和可扩展性的目的;另外一处是,开始的时候,我们计划采用了一台服务器部署项目,发现这种部署方案存在容错性差的问题,如果这台服务器宕机,整个系统便不可用,经过研讨和跟客户讨论,最终双方达成一致,采用两台服务器,一主一备份,利用服务器冗余和心跳策略,当一台服务器故障时,另一台服务器可以接着工作,不影响系统的使用。


说明:

这篇论文质量不高,但是能达到45分(满分75分)的水平。 字数要求,文章结构要求基本达标,创新不足,考试可以达到及格水品。 想写出高质量的文章,需要在这个基础上写出特点,需要多加练习。


你可能感兴趣的:(软考高项-系统架构师,经验分享)