【架构论文-1】面向服务架构(SOA)

【摘要】
本文以我参加公司的“生产线数字孪生”项目为例,论述了“面向服务架构设计及其应用”。该项目的目标是构建某车企的数字孪生平台,在虚拟场景中能够仿真还原真实产线的动作和节拍,实现虚实联动,从而提前规避问题,节约成本,预测节拍,进行故障诊断和预测维护,从而完成系统和设备产线的优化。在此项目中,我担任系统架构师以及主要管理人员,主导了项目的开发,架构设计,项目管理等工作。本文首先分析了面向服务架构的主要技术和标准的具体内容,并说明在构建面向服务架构中遇到的问题和具体实施效果。实践证明,采用面向服务的架构设计,降低了系统的耦合,使软件有了更好的开放性和扩展性,满足了客户的业务要求,使得开发工作取得了成功。此数字孪生平台于2022年6月验收上线,目前已经稳定运行一年多,得到了客户的一致认可。

【背景】
近年来,随着数字孪生技术的兴起,虚拟仿真在工业互联网和智能制造领域具有越来越广泛的应用背景。通过数字孪生和工业生产过程相结合,可实现实时监测、预测分析、远程控制和优化调整,提高生产效率,降低成本和风险。2021年12月,某新能源汽车车企决定发起“车间数字孪生”项目,实现生产线节拍的高效提升,实现数字化技术的全面覆盖。该项目投资800万,计划6个月完工,我司成功拿下该项目。2021年12月,我作为系统架构设计师,全面负责“车间产线数字孪生”项目的架构设计工作,整个项目采用了面向服务SOA的架构来进行项目的开发,将业务进行拆分,单独开发部署,提高了项目的灵活性,确保了项目的顺利交付。

【过渡】
在本项目中,需求方对性能和可用性等质量属性有要求,提出系统在某模块出现问题后,尽可能少地影响其他模块,修复系统要在10分钟内完成。介于以上质量属性,为了将各个模块间解耦,为了提升修复问题的速度,为了提升部署修复后模块的速度,经过公司讨论后决定使用面向服务SOA架构来开发项目,下面说明实现SOA的主要技术和标准以及每种技术和标准的具体内容。最后描述本次项目开发过程中构件面向服务架构时遇到了哪些问题和解决方案以及个人感悟。

【理论】
SOA是一个组件模型,它将应用程序的不同功能单元进行拆分,并通过服务之间良好的接口联系起来,使得构建在各种各样的系统中的服务可以以通用的方式进行交互,与SOA紧密相关的技术主要有UDDI、WSDL、SOAP。其中UDDI是统一发布、描述、集成协议,提供了一种服务发布、查找、定位的方法。以便被需要该服务的用户发现和使用,UDDI是SOA的基础设施,对应着服务注册中心的角色,是服务注册的规范;WSDL是服务描述语言,服务器通过WSDL说明自己有什么服务可以对外调用,它有一套基于XML的语法定义,包含服务实现定义和服务接口定义,服务内容描述通过WSDL标准实现;SOAP是简单对象访问协议,定义了一种方法将XML消息从A点传到B点,采用Http作为底层通讯协议,RPC作为一致性的调用途径,XML作为数据传输的格式,通过SOAP应用程序可以在网络中进行数据交换和远程调用过程。

【实践】
SOA的主要实现方式有WebService、ESB和服务注册表,本次在项目中使用的是WebService的方式实现SOA。在该方式中包含三个重要角色,分别是服务提供者,服务请求者和服务注册中心,下面说明具体的构建过程以及遇到的问题和实施效果。

  1. 服务提供者,主要完成服务的设计、定义、描述和发布工作。在此数字孪生项目中,我们使用了Spring Boot作为服务提供者的框架,Spring Boot提供了快速构建和部署的能力。使用Spring Boot可以简化程序的配置和开发流程。并使用Spring Web来创建RESTFUL API端点,用以提供一套结构清晰、标准统一、方便扩展的接口,我们可以使用RESTFUL API作为服务提供者的接口标准。通过定义合适的API端点和参数,来实现设备数据的接受、存储、查询和控制功能。我们选择了MongoDB作为数据库来存储实时设备数据,并使用了SpringData MongoDB来简化与MongoDB的交互。一旦服务提供者通过测试与调试,可以将其部署在生产环境中。可以使用Docker等容器化技术,将服务提供者打包为容器,并部署到适当的服务器或云平台。通过服务提供者,我们可以接收来自现场设备以及传感器的实时数据,并将其存储在MongoDB数据库中。同时,服务提供者实现了查询和控制功能,使得服务请求者可以通过发送请求和控制指令来获取设备数据以及运行状态。
  2. 服务注册中心,服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布服务描述,服务请求者在此查找需要的服务。在此数字孪生项目中,我们使用了Spring Cloud Netflix Eureka 作为服务注册中心的框架,Spring Cloud Netflix Eureka是一个开源的服务注册和发现框架,提供了服务注册中心的发现。并与其他组件进行集成。使用Spring Boot来构建服务注册中心。我们的服务提供者发送注册请求将自身注册到服务。
  3. 服务请求者,服务的请求者即服务的消费者,通过UDDI可在服务注册中心查找、调用服务。在此数字孪生项目中,我们使用了Spring Boot作为服务请求者的框架,并使用Spring Web来创建RESTFUL API端点。使用Apache HttpClient作为HTTP客户端库来发送设备数据查询请求和控制指令发送请求。同时,我们作为Chart.js作为数据可视化框架来实时展示数据的图表,一旦服务请求者通过测试和调试,我们可以向数据管理系统发送查询请求,查询当前的设备数据,并将数据以图标的形式展示给用户,同时我们可以发送控制指令来改变设备运行的状态,例如调整机械臂的关节角速度和传感器的开关。

【结尾】
实践证明SOA架构的使用,成功降低了系统的耦合度,是软件有了更好的开放性和拓展性,各方面表现优异,同时项目也如期在23年年初正式上线,并得到了客户的一致好评。但项目建设过程中也存在一些不足,由于疫情的原因,很多同事无法在现场办公,影响了沟通效率。我们采用了视频电话+邮件确认的制度,保证了每个同事的信息共享,解决了信息传达的问题。作为一名软件从业人员,唯一不能停下来的技术学习的脚步,我们要紧跟时代发展,提高自身的技术,并灵活运用在每个项目中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axure网络短剧APP端原型图,竖屏微剧视频模版40页

作品概况 页面数量:共 40 页 使用软件:Axure RP 9 及以上,非软件无源码 适用领域:短剧、微短剧、竖屏视频 作品特色 本作品为网络短剧APP的Axure原型设计图,定位属于免费短剧软件,类似红果短剧、河马剧场…

Windows,虚拟机Ubuntu和开发板三者之间的NFS服务器搭建

Windows,虚拟机Ubuntu和开发板三者之间的NFS服务器搭建 (1)虚拟机 ubuntu 要使用桥接模式,不能使用其他模式 (2)通过网线将PC和开发板网口直连:这样的连接,开发板是无法连接外网的 (3&#xff…

C# 有趣的小程序—桌面精灵详细讲解

C# 桌面精灵详细讲解 最近写了一个简化版桌面精灵,效果如图所示,可以实现切换动画,说话、鼠标拖动,等功能。具体如何做,我发布了一个资源里面包含ppt详解、源代码以及动画素材。放心吧,免费的,…

视觉SLAM数学基础

本文系统梳理从相机成像模型,通过不同图像帧之间的构造几何约束求解位姿变换,再根据位姿变换和匹配点还原三维坐标的过程,可以作为基于特征点法的视觉SLAM的数学基础。 1、相机成像模型 1.1、针孔相机模型 实际相机的成像方式通常很复杂&a…

计算机新手练级攻略——如何搜索问题

目录 计算机学生新手练级攻略——如何搜索问题1.明确搜索意图2.使用精确关键词3.使用专业引擎搜索4.利用好技术社区1. Stack Overflow2. GitHub3. IEEE Xplore4. DBLP 5.使用代码搜索工具1. GitHub 代码搜索2. Stack Overflow 代码搜索3. Papers with Code4. IEEE Xplore 6.查阅…

51c自动驾驶~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/11638131 #端到端任务 说起端到端,每个从业者可能都觉得会是下一代自动驾驶量产方案绕不开的点!特斯拉率先吹响了方案更新的号角,无论是完全端到端,还是专注于planner的模型&a…

大模型日报|6 篇必读的大模型论文

1.华为推出科学智能体 Agent K v1.0,已达 Kaggle 大师水平 在这项工作中,来自华为诺亚方舟实验室和伦敦大学学院的研究团队提出了 Agent K v1.0,它是一个端到端自主数据科学智能体(agent),旨在对各种数据科…

MySQL核心业务大表归档过程

记录一下2年前的MySQL大表的归档,当时刚到公司,发现MySQL的业务核心库,超过亿条的有7张表,最大的表有9亿多条,有37张表超过5百万条,部分表行数如下: 在测试的MySQL环境 : pt-archiv…

cache(二)直接缓存映射

在知乎发现一份不错得学习资料 请教CPU的cache中关于line,block,index等的理解? PPT 地址 https%3A//cs.slu.edu/%7Efritts/CSCI224_S15/schedule/chap6-cache-memory.pptx 课程主页 https://cs.slu.edu/~fritts/CSCI224_S15/schedule/ 0. 缓存定义 这张图展示了缓…

光流法(Optical Flow)

一、简介 光流法(Optical Flow)是一种用于检测图像序列中像素运动的计算机视觉技术。其基于以下假设: 1.亮度恒定性假设:物体在运动过程中,其像素值在不同帧中保持不变。 2.空间和时间上的连续性:相邻像素之…

打造自己的RAG解析大模型:(可商用)智能文档服务上线部署

通用版面分析介绍 版面解析是一种将文档图像转化为机器可读数据格式的技术,广泛应用于文档管理和信息提取等领域。通过结合OCR、图像处理和机器学习,版面解析能够识别文档中的文本块、图片、表格等版面元素,最终生成结构化数据,大…

【MySQL】MySQL基础知识复习(下)

前言 上一篇博客介绍了MySQL的库操作,表操作以及CRUD。 【MySQL】MySQL基础知识复习(上)-CSDN博客 本篇将进一步介绍CRUD操作,尤其是查找操作 目录 一.数据库约束 1.约束类型 1.1NULL约束 1.2UNIQUE:唯一约束 …

新的服务器Centos7.6 安卓基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了,我基本上都是通过docker去管理一些容器如:mysql、redis、mongoDB等之类的镜像,还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…

性能测试|JMeter接口与性能测试项目

前言 在软件开发和运维过程中,接口性能测试是一项至关重要的工作。JMeter作为一款开源的Java应用,被广泛用于进行各种性能测试,包括接口性能测试。本文将详细介绍如何使用JMeter进行接口性能测试的过程和步骤。 JMeter是Apache组织开发的基…

linux物理内存管理:node,zone,page

一、总览 对于物理内存内存,linux对内存的组织逻辑从上到下依次是:node,zone,page,这些page是根据buddy分配算法组织的,看下面两张图: 上面的概念做下简单的介绍: Node&#xff1a…

Pr:视频过渡快速参考(合集 · 2025版)

Adobe Premiere Pro 自带七组约四十多个视频过渡 Video Transitions效果,包含不同风格和用途,可在两个剪辑之间创造平滑、自然的转场,用来丰富时间、地点或情绪的变化。恰当地应用过渡可让观众更好地理解故事或人物。 提示: 点击下…

使用vscode 连接linux进行开发

1. 在Vscode中安装扩展功能remote ssh 2. 打开命令窗口 3. 在弹出的命令窗口输入ssh,并从弹出的提示中选择 Add New SSH Host 4. 在弹出的输入窗口中输入类似下面形式的 连接地址: 5. 输入回车后出现下面的对话框,这个对话框是说你要用哪个…

面试击穿mysql

Mysql三大范式: 第一范式(1NF): 不符合第一范式的典型情况是在一个字段中存放多种不同类型的详细信息。例如,在商品表中,若将商品名称、价格和类型都存储在同一个字段中,会带来诸多弊端。首先,在…

excel功能

统计excel中每个名字出现的次数 在Excel中统计每个名字出现的次数,您可以使用COUNTIF函数或数据透视表。以下是两种方法的详细步骤: 方法一:使用COUNTIF函数 准备数据:确保您的姓名列表位于一个连续的单元格区域,例如…

单体架构 IM 系统之长轮询方案设计

在上一篇技术短文(单体架构 IM 系统之核心业务功能实现)中,我们讨论了 “信箱模型” 在单体架构 IM 系统中的应用,“信箱模型” 见下图。 客户端 A 将 “信件” 投入到客户端 B 的 “信箱” 中,然后客户端 B 去自己的 …