数字孪生架构

news2024/9/20 17:00:21

很多同学对数字孪生特别感兴趣,经常有同学问我:

数据孪生系统怎么做?有没有教程?

除了Unity开发,开发数字孪生还需要掌握什么技能?

有人介绍了一个数字孪生的外包,从来没做过,能不能接?

有幸参与或指导过一些数字孪生的科研、商业项目,把我的一些经验分享一下。

如果独立开发数字孪生系统,对技术要求还是比较高的,具体要掌握哪些技能呢?

在数字孪生系统中,Unity用于前端呈现,是整个系统的一部分,可以称之为数字孪生中的“数字”。

数字孪生,更重要的是“孪生”。孪生代表了什么呢?是与现实世界的同步。

所以数字孪生系统除了前端可视化的展示,更重要的是数据的采集同步。

那么一个完整的数字孪生系统如何架构呢?最简单的系统架构是这样的。

这种是最简单的数字孪生系统架构,用Unity开发可视化部分,需要啥数据从外部系统接入啥数据。有些小项目(外包10W以内)用这种架构完全就可以搞定。

这种架构的优点是简单,你只需要掌握Unity开发和一些网络开发的技能就可以。

缺点呢?有很多。

安全性是个问题,客户端直接接入外部系统,相当于外部系统的口令全部存储在客户端中,很危险。

性能是个问题,客户端直接连外部系统,当开n个客户端的时候,就会和外部系统有n个连接,特别是有的数据需要轮询去获取,可能会对外部系统造成比较大的压力

灵活性是个问题,由于直接连接外部系统,外部系统一旦变化可能就会造成客户端宕机,就需要升级客户端

有些功能实现不了,客户端在PC运行还好,如果客户端想要放到web/VR/MR上,一方面平台限制,很多操作是不支持的,比如连接数据库、UDP传输等等,另外一方面这些平台渲染压力已经很大了,很难支撑庞大的数据工作

针对上面这些问题,架构可以如何改进呢?

这个架构引进了一个数据服务器,这个数据服务器在这是做什么的呢?

这个服务器主要是用来中转数据,与外部系统的数据连接都由这个服务器负责。但通常监控系统中的视频流还是客户端直接连接。

针对1.0架构中的几个问题,数据服务器可以解决:

安全性:数据服务器负责中转外部系统中的数据,客户端只需要与数据服务器通信即可,避免了外部系统口令在客户端的暴露。

性能:数据服务器只从外部系统采集一次数据,如果缓存在数据服务器上,不管有多少个客户端,只需要数据服务器能抗住并发压力即可,不会对外部已有系统造成影响。

灵活性:客户端与服务器制定好数据协议即可,数据服务器负责处理与外部系统的数据对接,隔绝了客户端的频繁改动,也给客户端增加了一定的稳定性

功能性:可以支持客户端在web平台运行,客户端与数据服务器通过HTTP或者TCP等支持的通信协议进行通信即可,由服务器去处理外部系统的数据对接。

但是2.0架构中也存在问题,那就是数据服务器的压力太大,职责太多,它需要负责:

从外部系统采集、处理数据。原来数据都是由外部系统负责存储,不需要考虑数据存储的事情。但是引入数据服务器后,采集到的数据可能需要进行保存,到这全栈的技能中就得增加一个数据库了。

响应客户端的数据请求

后续可能需要添加的一系列业务功能也需要添加到这个服务器上,比如用户、权限等等

所以演化到3.0的架构时,提高服务端的并发能力,可以将数据服务器根据需要进行拆分,加入数据库,这里面没有一个固定的架构模式,初步是将数据、应用模块拆分开,有计算量较大的模块(比如AI预测、数据分析等等)可以单独再拆分出来。

比如:

数字孪生全栈开发能架构到这一步基本上就能Hold住几十万的项目了。

这里面需要的技能主要包括:

Unity开发

网络通信

数据库

服务器架构与开发

服务器运维

3.0的架构再往后演进,就需要很强的服务器开发能力了,主要核心目标还是提高服务端的并发能力,加入分布式等等,此处就不再多说了。

————————————————

https://blog.csdn.net/zhenghongzhi6/article/details/126064238

https://blog.csdn.net/u011618339/article/details/106164001

https://blog.csdn.net/yyl80/article/details/125227111

https://github.com/DTUAV

https://space.bilibili.com/403212208/channel/seriesdetail?sid=371283

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

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

相关文章

Spring 中常用的几个工具类

AnnotatedElementUtils 类 获取某个类的某个方法上是否有标注注解,并可以通过其他 API 获取到这个类注解上的属性值,该工具类其他 API 下面截图可以查看。 public static boolean isBeanAnnotated(Method method) {return AnnotatedElementUtils.hasAn…

Redis 应用问题解决

缓存穿透 key 对应的数据在数据源并不存在,每次针对此key的请求从缓存中获取不到,请求会都压到数据源,从而可能压垮数据源。 解决方案 一个一定不存在的缓存及查询不到的数据,由于缓存是不命中时被动写的,并且处于容…

docker 19.03构建跨平台的镜像包并推送到私有仓库

默认的docker构建image镜像是不能跨平台的,如果需要构建跨平台的镜像,需要docker的版本在19.03版本以上,并开启buildx。以下为具体的步骤 版本:docker 19.03。 一.安装/开启 buildx 1.1.手动开启dockerx开关 docker 19.3 暂默认不开启dockerx,需要手动开启 vim /etc/pro…

Scala 数据结构-集合

文章目录Scala 数据结构-集合一、集合简介1、不可变集合继承图2、可变集合继承图二、数组1、不可变数组(1) 创建数组(2) 访问数组(3) 遍历数组(4) 添加元素Scala 数据结构-集合 一、集合简介 1)Scala的集合有三大类:序列seq,集合Set&#x…

解决fstab丢失,重启系统变为只读模式

现象描述: 背景:openEuler20.03 在/etc/fstab文件丢失、重启系统后,系统变为只读模式 [rootlocalhost ~]# echo 111 > 1.txt -bash: 1.txt: Read-only file system 解决方法: 查看系统信息,确认挂载信息&#…

【C进阶】数据在内存中的存储

数据在内存中的存储前言一、数据类型介绍(一)基本概念(二)类型的基本归类1.整型家族2.浮点型家族3.构造类型4.指针类型5.空类型二、整形在内存中的存储(一)原码、反码、补码1.概念2.为什么内存中存的是补码…

android input 事件分发 --- 注册input

android input 事件分发 --- 注册input应用注册input事件应用注册input事件 应用如果要监听input的事件,那么肯定就存在一个注册监听input事件的过程,跟随着addView方法我们跟着走一下frameworks/base/core/java/android/view/WindowManagerImpl.java Ov…

Centos7 安装 MongoDB

使用docker安装Mongo 1、拉取镜像 注:需要科学上网 docker pull mongo [rootlocalhost ~]# docker pull mongo Using default tag: latest latest: Pulling from library/mongo 846c0b181fff: Pull complete ef773e84b43a: Pull complete 2bfad1efb664: Pull co…

LeetCode:14. 最长公共前缀

14. 最长公共前缀1)题目2)思路3)代码4)结果1)题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs [“flo…

python常用快捷键

一、编辑(Editing)Ctrl Space 基本的代码完成(类、方法、属性)Ctrl Alt Space 快速导入任意类Ctrl Shift Enter 语句完成Ctrl P 参数信息(在方法中调用参数)Ctrl Q 快速查看文档F1 外部文档Shift F…

c语言 通讯录 动态内存开辟

通讯录 通讯录中能够存放1000人信息 每个人信息: 姓名年龄性别电话地址 2.增加人的信息 3.删除指定人的信息 4修改指定人的信息 5.查找指定人的信息 6.排序通讯录的信息 contact.h 放头文件的声明 tset.c 测试通讯录模块 contact.c 函数的实现 test.c #include &…

基于不同操作系统升级知行之桥的常见问题

此前的文章知行之桥2022版本升级之页面变化以及监控邮件答疑给大家分享了一些升级到知行之桥最新版本关于Web页面显示和监控邮件的一些问题,本篇将分享一些windows和Linux不同操作系统升级部署知行之桥最新版本的一些Q&A。 EDI服务器是windows服务器 Windows操…

Smart JavaScript UI 14.4.0 Crack【htmlelements】

Smart是一个建立在 JavaScript、HTML 和 CSS 之上的全面且创新的 UI 库。Ω578867473使开发人员能够交付专业的、跨浏览器兼容的 Web 应用程序,同时显着缩短他们的开发时间。Smart HTML Elements 包含 60 多个 UI 组件,是 Web 上发展最快的 JavaScript U…

Centos7配置阿里云yum源及epel源

Background 踩坑记录吧。下次可以直接复制粘贴,不用再去排查是哪个字母字符少了多了,我这都是执行成功的命令粘贴过来的。 1、基础知识简介 yum: 全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器…

ubuntu 18.04 Pytorch安装GPU版本

先上成功的图片 过程总结: 之前也配置过,但是时间流逝,之前的方法也过时了(旧方法一般会提到先装nvidia驱动,再cuda,再cudnn之类)。 我今天尝试安装cuda 11.7时,发现cuda会自动安装…

使用 dict 对象创建多重索引 DataFrame

使用 dict 对象创建多重索引 DataFrame创作背景查看所需 dict 的格式结尾创作背景 本菜鸡最近碰到了需要使用字典创建多重索引 DataFrame 的场景,谨以本文记录解决过程。 如果觉得我这篇文章写的好的话,能不能给我 点个赞 ,评论 、收藏 一条…

对近似算法概念的学习

近似算法基本概念可近似分类最小顶点覆盖问题近似算法的分析:多机调度问题近似算法贪心G-MPS近似算法递降贪心法DG-MPS货郎问题最近邻NN算法最小生成树法MST最小权匹配MM算法0-1背包问题贪心G-KK多项式近似方案完全多项式时间的近似方案背包问题的对偶问题总结基本概…

彻底搞懂UML图

用例图 用例图的结构主要分为三个部分:参与者、用例、参与者与用例之间的关系。 参与者:不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间…

关于alpine如何制作JDK镜像

Docker制作jdk镜像(v1.0)1.1首先编写Dockerfile文件#1.指定基础镜像,并且必须是第一条指令RROM centos:7#2.指明该镜像的作者和其电子邮件MAINTAINER xnx "zwcqq.com"#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作…

Python自制简易版计算器小程序

前言 今天来给你们分享一个自制的桌面小程序【简易版计算器】 文章内有效果展示,你们可以自行看看哦 不想看文章,想直接领取源码的话,可以直接点击文章末尾的名片哈 环境准备 Python 3.6 Pycharm 代码展示 界面设置 导入模块 所有 源码 …