【软考高级架构设计师】论面向服务架构(SOA)设计及其应用

本文讲述了作者在2021年参与的军方哨兵站点项目中,如何运用SOA架构设计,包括服务提供者、注册中心和请求者的角色,以及如何通过WebService、UDDL、WSDL和SOAP等技术实现。项目成功应用SOA提高了监控效率和通讯标准,但也面临了SOAP吞吐量低的问题,通过引入RabbitMQ改进。
摘要由CSDN通过智能技术生成

2021年6月,在我任职的公司期间,我参与了某军方哨兵站点项目的建设,并担任其软件架构师一职,负责系统的架构设计工作。该系统主要由安全监控、预警上报、异常处理和调度中心等多个服务组成,能实时监控周边环境,并提供监控、警示、报警和通讯等功能。本文将结合作者时间,以哨兵站点系统为例,论述面向服务的架构的应用。首先介绍面向服务(SOA)架构设计和实现,并详细阐述每种技术和标准的具体内容,之后结合项目实践,从服务提供者、服务注册中心和服务请求者三个方面深入论述其具体实现和应用。服务提供者实现服务的设计、定义、描述和发布;服务注册中心提供了服务注册、发现和查找功能;服务请求中即服务的消费者,将从服务注册中心可查找、绑定和调用服务;

随着国家形式的日益复杂和多变,作为一个拥有广阔边境的国家,确保边境地区的安全是国家安全的基本要求。经我司实地勘察,该地区的大部分哨兵站点均使用人工放哨来监视周边环境,并且站点之间的通讯较松散,没有一个统一的通讯标准。而哨兵站点系统可以部署在边境上,通过连接多种传感器,实时监控周边环境,预防非法入侵行为,提高国家安全保障力。该系统通过网络连接周边多个站点,实现站点间的数据共享和整合,从而协调各个站点间的工作,提高站点安全工作的效率。基于以上背景,应当地政府要求,我司于2021年6月前往项目驻场进行系统的建设,小组由23人组成,总投入512万,耗时13个月,我在其中担任软件架构师一职,负责系统的架构设计工作。哨兵站点系统使用面向服务SOA架构进行设计,使用JavaEE技术开发,使用WebService技术实现SOA。下面阐述SOA相关的一些技术和标准。

面向服务(SOA)的架构设计将系统功能划分为独立的服务,这些服务带有明确定义的可调用接口,能够以定义好的顺序调用从而形成业务流程。接口采用中立的形式进行定义的,它独立于具体实现服务的硬件、操作系统和编程语言。与SOA相关的技术有UDDL、WSDL和SOAP。UDDL(统一发现、描述和调用)提供了服务注册、查找和发现功能,是服务消息注册的规范,以便被需要该服务的用户发现和使用它;WSDL(服务描述语言)是对服务进行描述的语言,它有一套基于 XML 的语法定义,包含服务实现定义和服务接口定义;SOAP(简单的对象访问协议)定义了服务请求者和服务提供者之间的消息传输规范。SOAP 用 XML 来格式化消息,用 HTTP 来承载消息。通过 SOAP,应用程序可以在网络中进行数据交换和远程过程调用。

从逻辑上和高层抽象来看,目前,实现 SOA 的方法也比较多,其中主流方式有 Web Service、企业服务总线和服务注册表。本次在项目中使用的是WebService方式实现SOA。在该方式中包含三个重要角色,分别是服务提供者、服务请求者和服务注册中心,下面说明具体的构建过程及遇到的问题和实施效果。

服务提供者实现了服务的设计、描述和定义等功能。经过对该业务流程的分析,并综合考虑粗粒度、松耦合、自包含等特点对服务进行了设计。同时为了避免服务间通信量过大、交互频繁,尽量减少了服务的数量。我们主要将系统划分为安全监控、预警上报和异常监控三个服务。安全监控服务通过连接监控、红外、雷达、光学、温度和压力等传感器,实现对周边环境的监控。由于各式各样的传感器连接的协议不尽相同,我们引入了中间层来屏蔽不同连接协议所带来的差异,并对外暴露出一个统一的接口,以适应不同的需求。安全监控服务触发异常后调用预警上报服务,预警上报服务根据自定义的异常规则解析出异常信息,并根据信息寻找适配的异常处理服务。异常处理服务的任务是监听预警上报服务传递过来的数据后进行解密工作,并做出相应的处理。在对上述服务进行设计后,服务间使用WSDL进行服务描述,而后再利用UDDL技术将这些服务发布到注册中心,公布查找和定位服务的方法。

服务注册中心实现了服务的注册、发现和查找功能,是服务请求者和服务提供者的枢纽,服务提供者在此发布服务描述,服务请求者在此查找需要的服务。我们将每个站点的服务都在此注册,进行统一管理,保证各个站点服务间松耦合和相互独立性。在注册中心包括安全监控、预警上报和异常处理服务,其描述信息包括服务的功能描述、接口参数描述、返回值等信息。在本系统的架构设计中,服务是以及集群的方式进行注册的,服务请求者通过在服务注册中心查找服务描述,动态地与服务交互,整个过程是动态绑定的,从而达到一个负载均衡的效果以提高系统的性能。服务注册中心还使用到了心跳监测技术,当有服务宕机时可以迅速切换到其他服务以提高系统的可用性。

服务的请求者使用SOAP协议,通过使用WebService技术从调用服务提供者。在系统中预警上报服务充当服务请求者去调用异常处理服务。其具体的流程为:预警上报上报先通过服务注册中心获取异常处理服务的接口定义、请求参数和返回值等信息;之后预警上报服务根据安全监控服务传递过来的异常信息解析生成需要的参数,并按照接口参数的定义封装成XML格式的报文,使用WebService技术调用异常处理服务;异常处理服务接收到信息后对其进行响应并且根据信息做出相应的处理。在服务调用期间,请求者不需要关心服务提供者的业务处理和技术实现,只需关注自身业务,大大降低了模块之间的耦合度,提高了模块的独立性,体现出SOA架构的松耦合、自包含特点。

经过了13个月的开发和测试,系统最终顺利投入使用,并取得了用户和领导们的一致好评。系统为哨兵站点的无人监控、报警和通讯等方面提供了全方面的支撑,稳定运行至今。实践表明,使用SOA的架构设计使得哨兵站点的通讯有了一个统一的标准,站点间的通讯有更高的可维护行和可用性。从项目的完工效果来看,达到了预期的目的。

当然,系统还存在一些不足之处,由于SOAP本身的吞吐量不大,通讯效率较低,当通讯信息爆发式增长时,会导致信息堆积,无法及时得到解决。经过和领导们的共同协商,我们引入RabbitMQ信息队列中间件来对流量削峰和请求的异步处理,使得该问题有明显的改善。经过此处项目的顺利开发,让我意识到了架构设计的重要性,在累计了经验的同时,也意识到了自身的一些不足之处,今后应当更加的提高自己的专业技术,更好的完成系统的架构设计工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值