HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

工业软件云化突围战,Webassembly 如何成为重要一环?| 专访三维家陈江豪

  • 2022-08-24
    北京
  • 本文字数:3837 字

    阅读完需:约 13 分钟

工业软件云化突围战,Webassembly 如何成为重要一环?| 专访三维家陈江豪

采访嘉宾 | 陈江豪

采访编辑 | 闫园园

 

Webassembly (以下简称 Wasm)专题系列文章中,InfoQ 对《深入浅出 Webassembly》作者于航就 Wasm 应用现状进行了采访。访谈中,于航提到一个值得关注的现象:当下对于更多开发者来说,关注点已经从 Wasm 这门技术本身转移到了它的具体应用场景中。

 

近日,InfoQ 有幸接触到了聚焦于大家居产业的云工业软件服务商三维家,通过了解,三维家在软件云化过程中正是应用了 Wasm。那么,工业软件和 Wasm 之间能擦出怎样的火花,其中有何可以借鉴的经验呢?带着对这些问题,InfoQ 采访了三维家技术研究院基础平台负责人陈江豪。此外值得关注的是,陈江豪老师还将在 9 月 17 日-19 日 的 QCon全球软件开发大会前端前沿技术】专题分会场分享《百万级代码工业软件的云端综合实战》的演讲,进一步分享三维家在家居行业利用 Wasm 和 Web3D 等技术的前沿研究探索和技术成果,以及新一代云工业软件的未来趋势。

 

工业软件的出路在于云化

 

众所周知,工业软件“卡脖子”问题由来已久。所谓工业软件,是指专用于或主要用于工业领域,为提高工业企业研发、制造、生产管理水平和工业装备性能的软件。其中,根据产品形态、用途和特点的不同,业界一般分为研发设计、生产控制、经营管理、运维服务四大类。

 

根据统计数据显示,截至 2018 年底,中国工业软件市场规模只占全球总量的 6% 左右。可以看出,国内工业软件整体发展受限,被国外垄断现象严重。究其背后的原因在于国外起步较早,形成了一定的市场生态,同时工业软件需要跨学科和复杂的知识系统沉淀,而国内在这些方面起步较晚,因此差距也逐渐形成。

 

为了缩小差距,国内工业软件纷纷寻找解决方法。从实际来看,垂直领域的“突围战”正在进行中。以三维家为例,其所在的家居工业软件赛道正是典型的垂类工业软件,“目前家居工业软件赛道跟国外相比,甚至在设计软件的某些方面我们是领先的。”陈江豪介绍道。

 

同时,云时代的到来,工业软件的云化也逐渐成为新的趋势。这也给工业软件带来又一个机遇,毕竟在云化方面,大家所处同一起跑线,谁能抢先一步,也意味着将在行业处于领先位置。“云时代,把 PC 端的工业软件搬到云上去,是此时家居工业软件赛道的重要任务。”

 

而面对这个重要任务,三维家选择了 Wasm 作为重要技术支撑之一。


三维家产品使用场景

Wasm :为工业软件云化提供一把梯子

 

2015 年 Wasm 诞生。而早在 2017 年,三维家技术团队就开始尝试采用了 Wasm 。谈及为何相关实践走在如此前列时,陈江豪谈到主要在于团队抓住 Wasm 的特性,并且认为它能够很好的契合项目需求。首先,从 Wasm 本身来看,它有三个比较大的技术优势值得关注:

 

  • 高性能。这是 Wasm 最值得称道的优势,毕竟从定义看,Wasm 就是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行。

  • 跨平台。众所周知,在 Wasm 诞生之初,是运行在浏览器中的,而浏览器可以运行在 PC 端或是移动端,所以它天生就拥有跨平台特性。从这方面来说,Wasm 可以实现一套代码多端应用,从而也做到了节约开发成本。

  • 安全性。Wasm 是一种二进制文件,对于一般语言而言,比较难破解;另一方面,因为它运行在浏览器中,自然也拥有浏览器提供的安全沙箱环境,这样一来,可以有效弥补自身漏洞,防止被攻击或者被黑客挟持。

 

“云时代,Wasm 能为我们上云提供一把便利的梯子。”时间拨回到 2017 年之前,三维家早期开发的家装工业软件属于前端软件,并且前端网页基于 Flash——一款当时最方便易用的矢量工具、动画工具、结合矢量位图动画的编程工具。然而,在 2017 年,Adobe 宣布将放弃 Flash,而这一消息直接促使三维家技术团队开始寻求以最新的云化方案重构原来的方案。

 

陈江豪回忆,最新的云化方案,也面临着诸多挑战。不过,虽然任务紧迫,但团队对云化方案中的技术选型还是非常谨慎的,并且根据当时的技术体系提出了两点要求:

 

  • 第一,满足核心诉求。把在 Flash 上积累的经验,包括一些核心 C++ 资产库等快速地投入使用。

  • 第二,满足个性要求。三维家自研软件功能庞大,并且有高密度计算,对性能要求高;同时为了提高用户体验,软件体积要求轻量化。

 

在这两点要求下,三维家最终将目光瞄准了 Wasm,并开始了正式接触及研发 。


云设计软件界面

Wasm 应用实践之路

 

作为家装类的工业软件,三维家平台涉及诸多算法,特别是 CAD,都是基于 C++ 的。如果为了上云而将之前积累的模型库、工艺库等资产进行重写是性价比极低的,因此,三维家开始尝试将核心的 C++ 库,其中主要是低运算密度高聚合的 C++ 库进行 Wasm 转换。“Wasm 给我们带来的好处是巨大的,特别在性能方面。”陈江豪谈到。

 

通过实践,三维家将渲染引擎和几何引擎核心库等底层模块 Wasm 化,同时将应用层的业务部分转换成 Typescript,如此结合,既实现了使 C++ 资产能够快速转应用,又满足了项目敏捷开发的需求,逐渐成为团队最常见的技术路线。据了解,三维家核心 C++ 库的 Wasm 的转换在将近半年左右时间上线了 MVP 版本,而后便进入了不断打磨的过程。

 

然而,三维家对 Wasm 的应用并未止步于此,在后续项目开发过程中,诸多新的业务场景中也继续采用了 Wasm。陈江豪举例,“目前三维家三大基础底座之一的 AI 引擎的功能以及自研 CAD 部分均使用了 Wasm 。”

 

那么在应用 Wasm 之后,对于项目来说究竟能否感知到变化呢?陈江豪告诉 InfoQ,其中的变化,要分为两个方面来看:

 

一方面,三维家把原来的 C++ 库进行 Wasm 化,并且转移到云端上去。首先,项目转换后,在性能方面不但没有太大的损耗,甚至在某些场景下超越了之前,其次,也使得核心资产库能够在云化过程中得到快速复用,从而提升了云化效率;

 

第二方面,在新场景中采用 Wasm,也是利用了这门技术的诸多优势,如高并行、计算性高、跨平台等特性。

 

“从结果来看,应用的效果也在这些方面得到了体现。”陈江豪表示,“当然,没有数据支撑多少有点耍流氓,从我们的相关测试用例来看,从性能方面来说,转换完成后有十倍到十几倍的提升。官方用例也是这个程度。”

 

不难看到,作为国内最早一批 Wasm 的先行者,三维家技术团队利用 Wasm,的确为工业软件上云带来了极大的便利。但是,作为一门还属于创新阶段的新技术,除了能够带来诸多优势之外,其本身的局限性也不免会给开发工作带来一定难度。这里,三维家也分享了自己踩过的“坑”。

 

首先,Wasm 的内存限制。目前,Wasm 能使用的最大内存有限制,各个浏览器的限制都不同,一般为 2G,最多支持 4G。

 

“内存问题是我们遇到的一个很大的挑战。”陈江豪坦言。对此,他介绍三维家技术团队采用了三个方法来解决这个问题:

 

  • 在技术手段上面,重构一部分代码,对内存进行控制;

  • 尝试使用内存技术,比如内存池,对象池等;

  • 最后,从产品形态上去规避内存高峰。所谓内存高峰是导致 Wasm 内存限制的条件之一,因此,从这方面入手,三维家技术团队也采用了相关错峰技术手段。

 

其次,Wasm 性能问题。引入 SIMD 做性能提升,尤其是在高密度运算方面,能够有更高的提升性能的效果。但陈江豪也在这里提醒大家,SIMD 本身也有缺陷,即不是所有浏览器都支持。

 

最后,在项目进行 Wasm 化过程中,需要 Wasm 化的 C++代码与业务深度绑定的问题也时常存在。“类似这种问题,无法避免地,我们需要对业务代码进行解耦。”

 

写在最后

 

从三维家对于 Wasm 的实践中,不难看到,Wasm 能够帮助工业软件在云化过程中,快速复用原有资产库,提高云化效率,并且使应用获得跨平台、更轻量等诸多新特性。那么,对于更多项目和团队来说,看到了诸多好处,又如何快速、准确的自己在技术选型过程中判断是否应该采用 Wasm 呢?在本次采访的最后,陈江豪对此提出了自己的几点看法:

 

首先,Web 项目中如若涉及跨平台、提升性能、控制包大小以及高密度计算等需求,比较适合采用 Wasm。 Wasm 天生适合 Web,性能也是 js 的几倍到几十倍,而二进制的 Wasm 也比文本式的脚本语言体积小。此外,Wasm 的使用是有技术门槛的,选择 Wasm 的团队需要衡量更多因素包括技术和非技术因素。

 

第二,C++ 资产云化。“C++资产云化有多种手段,如各种服务器编程语言调用 C++、直接包装 C++提供 HTTP 服务、使用阿里的函数式服务等等。但偏前端的 C++模块云化的路线,Wasm 是一个比较理想的选择。”

 

当然,采用任何一门新技术,不免都需要考虑到其自身的不稳定性和未知性。因此,在项目研发过程中,陈江豪建议最好尝试先做最小产品闭环,一旦验证符合预期,能够契合项目需求,再做进一步大规模应用。

嘉宾介绍:



陈江豪

三维家技术研究院 基础平台负责人

 

广东三维家信息科技有限公司技术研究院基础平台负责人 &高级平台技术专家。主要技术方向为前端底层平台技术及后端微服务和云原生技术。先后从事教育、游戏及家居行业,对互联网和工业软件有独特见解,负责过公司百万级前端代码的技术转型项目及公司前沿产品的平台支持。现负责三维家渲染及 AI 基础平台支持。


9 月 17 日-19 日,QCon全球软件开发大会即将落地北京·富力万丽酒店,陈江豪老师将在【前端前沿技术】专题分会场分享《百万级代码工业软件的云端综合实战》的演讲,带你了解三维家在家居行业利用 WebAssembly 和 Web3D 等技术的前沿研究探索和技术成果,以及新一代云工业软件的未来趋势。除此之外,本次 QCon 邀请来自微软、华为、腾讯、百度、阿里、蚂蚁、火山引擎、网易、美团、快手、小红书、涛思数据、OPPO、大疆、德邦、华泰证券、PingCAP、OpenResty、Second State、DCloud 等国内外一线大咖分享 100+ 精彩演讲,不容错过,点击直达大会官网

2022-08-24 16:485133

评论

发布
暂无评论
发现更多内容

坚如磐石:TiDB 基于时间点的恢复(PiTR)特性优化之路丨6.5 新特性解析

TiDB 社区干货传送门

新版本/特性解读

Region is unavailable的排查总结

TiDB 社区干货传送门

管理与运维 故障排查/诊断 扩/缩容

首届玄铁 RISC-V 生态大会上海举办 龙蜥操作系统持续深度参与标准共建

OpenAnolis小助手

芯片 risc-v 龙蜥操作系统 平头哥 生态大会

PCB焊盘设计应掌握哪些要素?

华秋电子

关于加解密、加签验签的那些事 | 得物技术

得物技术

java

DBT 收购 Transform,指标平台已成现代数据栈关键拼图

Kyligence

数据分析 指标管理

你没有必要完全辞去工作

宇宙之一粟

创业 个人成长 思维方式 工作 打工人

通过Chaos-Mesh打造更稳定TiDB数据库高可用架构(二)

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 故障排查/诊断 安装 & 部署

通过TiDB Operator为已有TiDB集群部署异构集群

TiDB 社区干货传送门

集群管理 管理与运维 故障排查/诊断 安装 & 部署 扩/缩容

MQTT 5.0连接属性

EMQ映云科技

物联网 IoT mqtt 企业号 3 月 PK 榜 连接属性

对TiDB监控方式的一点点研究

TiDB 社区干货传送门

监控 TiDB 源码解读

通过Chaos-Mesh打造更稳定TiDB数据库高可用架构(一)

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 扩/缩容 数据库架构设计

课程作业及比赛任务,已支持 Notebook 内直接提交|ModelWhale 版本更新

ModelWhale

人工智能 机器学习 数据分析 canvas 模型管理

详解命令模式本质及其在高复杂调用中的实践案例

阿里技术

设计模式 命令模式

从代理机制到Spring AOP,这篇给你安排得明明白白的

做梦都在改BUG

Java spring aop 代理机制

CI/CD | 不可忽略的Jenkins基础架构修复问题

龙智—DevSecOps解决方案

ci cicd jenkins CI/CD CloudBees

TIDB升级发生故障时,快速强行回退方案

TiDB 社区干货传送门

实践案例

Stable Diffusion原理详解

jarodyv

人工智能 机器学习 计算机视觉 Stable Diffusion 生成式AI

AI+人类,实现高效网络安全

HummerCloud

人工智能 网络安全

研讨会回顾 | Perforce发布数字资产管理工具Helix DAM,帮助您按时按预算交付虚拟产品

龙智—DevSecOps解决方案

版本控制 数字资产 游戏开发 数字资产管理 芯片研发

云图说丨Astro Canvas一站式数据可视化开发,分钟级构建业务大屏

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

DTO、VO、BO、PO、DO的用法区别,居然这么多人搞不清楚.....

程序知音

TiDB 的事务和一致性校验工具 BANK

TiDB 社区干货传送门

实践案例 故障排查/诊断 数据库架构选型

GitHub上线重量级分布式事务笔记,再也不怕面试官问分布式了

小小怪下士

Java 程序员 分布式 分布式事务 后端

代码质量与安全 | SAST与DAST有什么区别?

龙智—DevSecOps解决方案

klocwork SAST DAST 静态应用程序安全测试 动态应用程序安全测试

【征文大赛】TiDB 社区第二届征文大赛,一次性带走社区全部新周边,还有bose 降噪耳机、倍轻松按摩仪等你拿!

TiDB 社区干货传送门

手把手教你改 sysbench 代码

TiDB 社区干货传送门

开发语言 管理与运维

物理机安装 TiKV 时 RAID 卡在线配置方式

TiDB 社区干货传送门

实践案例 集群管理 安装 & 部署

Atlassian Server用户新选择 | 云版和本地部署的数据中心版,总有一个适合您

龙智—DevSecOps解决方案

迁移 Server Atlassian

Oracle ASM磁盘组配置、日常运维、故障处理等操作资料汇总

墨天轮

数据库 oracle asm 磁盘管理

数据标注工具,多维度体验优化|ModelWhale 版本更新

ModelWhale

人工智能 标注 标注工具 团队协同 模型管理

工业软件云化突围战,Webassembly 如何成为重要一环?| 专访三维家陈江豪_大前端_闫园园_InfoQ精选文章