OneNET城市物联网平台国产化方案
admin
2023-08-17 10:21:24
0

Labs 导读

“积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。” 时代背景下,我国必须解决关键技术卡脖子的问题,信息产业的核心技术壁垒需要不断被攻克,国产化的发展离不开每一个生态企业。基于国产替代和自主可控的国家战略,OneNET率先开展国产化方案的研发,助力产业链发展,打造物联网行业的解决方案。


作者:张伟
单位:中移物联网有限公司

一、背景

“十四五规划”提出建设数字中国,坚持创新驱动发展,推进数字产业化和产业数字化,推动数字经济和实体经济深度融合,打造具有国际竞争力的数字产业集群。OneNET城市物联网平台定位为PaaS服务,即在物联网应用和真实设备之间搭建高效、稳定、安全的平台;面向设备,适配多种网络环境和常见传输协议,提供各类硬件终端的快速接入方案和设备管理服务;面向应用层,提供丰富的API和数据分发能力以满足各类行业应用系统的开发需求,使物联网企业可以更加专注于自身业务的发展。作为数字化时代的新型基础设施,通过提供统一协议适配、统一物模型、统一设备接入、统一数据共享、统一应用支撑的物联感知服务,助力提升企业经营、城市治理精细化水平,为智慧城市和数字政府建设提供有力底座支撑。

中美贸易战以来,美国对华实施技术封锁,企图遏制我国科技产业的发展,尤其上游核心技术话语权完全不掌握在自己手中。信息化自主可控关乎国家战略,芯片、操作系统、数据库中间件被美国企业垄断。在此背景下,国内信息技术应用创新产业乘势而起,“信创”产业链逐步发展,OneNET城市物联网平台作为物联感知行业的先行者,带头制定了国产化适配方案。

二、总体思路

通过对信创产业链的调研,制定了国产化方案三步走的目标,第一步实现基于国产操作系统的部署运行,第二步基于国产芯片的环境适配,第三步基于国产中间件数据库完成业务重构。每一步骤实施以后,均增加功能测试和高并发测试,确保系统能够稳定可靠的应用到生产环境。

三、操作系统适配

国产操作系统大多以Linux为基础进行二次开发,OneNET原生支持基于Linux内核的CentOS系统,所以适配改造的核心工作是了解用户态系统环境的差异。经过评估,选择了应用广泛的麒麟和欧拉进行适配,由于底层硬件和Linux内核并无变化,所以第一阶段的适配工作直接由运维人员将软件部署到国产化系统之上。经过全量部署,最终除操作系统初始化配置进行少量更改以外,其余模块不进行任何更改即可正常运行。大量技术验证后,又开展了项目交付工作,最终平台经过了长期稳定运行的考验。到此,OneNET城市物联网平台已完成支持基于国产化操作系统进行部署。未来,将进行以阿里龙蜥为代表的第二轮的适配工作,支持更加广泛的生态产业链。

四、芯片适配

第二阶段的任务是完成国产片化芯片的适配,平台选择了当前较成熟的华为鲲鹏计算平台。其中,TaiShan服务器和鲲鹏处理器是构建于arm架构,与传统的X86服务器最大区别是CPU采用RISC精简指令集。这部分适配工作需要从研发编译和运维部署两方面进行着手;程序源代码需重新编译为支持aarch64架构的二进制可执行文件;运维部署需重新获取中间件和数据库的aarch64架构可执行文件,同时需调研安全可控的k8s容器部署实施方案。OneNET平台采用微服务化架构设计,平台中间件和数据库采用虚拟机方式部署,业务采用k8s容器方式部署。于是分步骤从以下流程进行改造:



①首先通过华为官方资源库,下载平台所需要的MongoDB等数据库中间件的二进制程序包,基于新的程序包采用X86服务器相同的方式进行部署。对于资源库中并未提供二进制程序包的程序,采用官方网站下载源码包的方式,再自行进行编译,最后进行部署。

②其次,由于现有成熟的k8s开源方案并未适配arm架构,所以选择回归最原始的kubeadmin方案完成k8s的安装,并使用了nginx代替ingress的7层流量转发。

③再次,通过公有镜像仓库选择了aarch64架构的基础镜像,分别为java、go、nodejs不同语言的研发工程师制定了业务镜像规范。java程序基于jdk运行,在基础镜像之上构建一层jdk程序,jar包不用做任何更改,可直接封装镜像快速移植到新环境;go程序通过交叉编译的方式,生成aarch64架构的二进制可执行文件,再通过dockerfile封装到基础镜像里面;nodejs程序采用支持node环境的基础镜像,再在基础镜像之上对源代码进行编译,达到能够运行到arm架构服务器之上的目的。

④最后,在所有中间件数据库、业务都运行在鲲鹏平台以后,对操作系统配置和业务资源进行了调优,以达到新平台的最大性能指标。

五、数据库适配

如果说操作系统和芯片适配是从编译、部署的层面进行,那么数据库适配则需要从架构设计和系统接口层面进行修改;产品架构从业务逻辑服务调用数据库改为业务逻辑服务调用数据访问服务,数据访问服务再访问数据库;同时系统接口需规避不同数据库特性,采用通用数据库增删改查方法实现产品功能。OneNET平台原生使用Mysql和MongoDB两种数据库,在项目需求中,客户指定腾讯TDSQL作为数据库国产化的替代方案,从由需求指引技术迭代思路出发,方案首先选择基于此进行改造。兼顾考虑更多国产化数据库崛起的现状,于是为达到降低改造难度、架构解耦、设计先进的目的,OneNET采用以下架构分层的设计思路:



①系统分为表示层、业务逻辑层、数据访问层。

②各层之间相互解耦,表示层和业务逻辑层主要是针对具体的问题的操作,也可以理解成对数据访问层的操作,对数据业务逻辑处理时,无论系统采用什么类型数据库,业务逻辑层只需要调用相同的接口,不需要做任何改造。

③数据访问层用于数据库数据的读写操作,具体为业务逻辑层或表示层提供数据服务,针对不同数据库进行开发适配,部署时能够根据系统配置灵活选择底层数据库,同时封装成标准的接口供业务逻辑层业务使用。

通过系统架构优化和数据访问层的适配,平台完成了TDSQL的支持,未来将进行更多成熟国产数据库的支持工作。在适配过程中也发现了部分问题,由于OneNET原生使用了MongoDB数据库,并使用了其数据库特性,在适配过程中也对业务逻辑层做了少量更改,以满足产品功能需求,期待更多国产数据库的出现能够兼容MongoDB等nosql数据库。

经过一系列的工作,OneNET城市物联网平台已完成国产化方案的落地,成为了技术自主可控的产品,避免物联感知领域出现“卡脖子”问题,助力了产业链生态的发展。截至2022年6月,基于国产化适配的产品已交付到雄安等多个项目现场。未来将继续为我国数字化转型助力,支持信创产业链发展,实现自主可控全链条布局,打造城市级物联中台新标杆,持续提升产业赋能水平。

相关内容