东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

工业软件云化突围战,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:484673

评论

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

CGBTN2108-DAY05总结复习

爱好编程进阶

Java 程序员 后端开发

JavaCV人脸识别三部曲之三:识别和预览

爱好编程进阶

Java 程序员 后端开发

编码的底层原理

程序员猪小哼

java面试 底层原理 死磕 Java 基础

API 文档构建工具 - Swagger2简单应用

爱好编程进阶

Java 程序员 后端开发

Day163

爱好编程进阶

Java 程序员 后端开发

IntelliJ IDEA 中集成并使用 Git 图文教程

爱好编程进阶

Java 程序员 后端开发

为什么boolean存储需要32bit?

程序员猪小哼

java基础 底层原理

我推荐的Flutter项目结构

坚果

4月月更

2020年Java面试复盘,收获Offer,金三银四程序员面试精装版pdf,分享给跳槽面试的程序员

爱好编程进阶

Java 程序员 后端开发

Day180

爱好编程进阶

Java 程序员 后端开发

Java 输入一个字符串格式日期,获取对应的自然月开始结束时间,对应的自然年开始结束时间(1)

爱好编程进阶

Java 程序员 后端开发

架构实战营作业四

热猫

13 高可用的服务

爱好编程进阶

Java 程序员 后端开发

关于「应变力」这个超能力|ONES 人物

万事ONES

管理

2hutool源码分析:DateUtil(时间工具类)-常用的时间类型Date,DateTime

爱好编程进阶

Java 程序员 后端开发

docker限制容器的cpu内存使用率

爱好编程进阶

Java 程序员 后端开发

influxdb基础(七)

爱好编程进阶

Java 程序员 后端开发

谈谈对 Database Plus 认识与畅想

SphereEx

Apache 数据库 SphereEx ShaardingSphere

avatar Logo

爱好编程进阶

Java 程序员 后端开发

CentOS 7

爱好编程进阶

Java 程序员 后端开发

Java EE开发系列教程 - 添加JPA模块

爱好编程进阶

Java 程序员 后端开发

JavaWeb静态网页

爱好编程进阶

Java 程序员 后端开发

大数据培训Hive架构思想与设计原理

@零度

hive 大数据开发

CDH5部署三部曲之一:准备工作

爱好编程进阶

Java 程序员 后端开发

Java8设计模式最佳实战-设计模式概述(第七天学习记录)

爱好编程进阶

Java 程序员 后端开发

Java中关于内存泄漏分析和解决方案,都在这里了

爱好编程进阶

Java 程序员 后端开发

java培训Stream遍历树形结构案例分享

@零度

stream JAVA开发

API 分页探讨:offset 来分页真的有效率吗?

爱好编程进阶

Java 程序员 后端开发

从Flutter开始聊聊跨平台移动开发框架

FinClip

Day06-Java代码操作阿里云oss,开发前准备,开发参考文档

爱好编程进阶

Java 程序员 后端开发

Java 输入一个字符串格式日期,获取对应的自然月开始结束时间,对应的自然年开始结束时间

爱好编程进阶

Java 程序员 后端开发

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