什么是信创?
信创全称为“信息技术应用创新”,主要包含应用于通信、云计算、大数据、人工智能、工业互联网等诸多高新产业的基础技术。基础技术则包含基础硬件、基础软件、应用软件、信息安全四大板块。其中:
基础硬件主要包括:芯片、服务器/PC、存储等;
基础软件包括:数据库、操作系统、中间件等;应用软件包括:办公软件、ERP和其它软件等;
信息安全包括:硬件安全、软件安全、安全服务等各类产品。
信创的核心是通过国产和自主创新实现信息技术产业的“自主可控、安全可信、高效可用”。
为什么要做信创?
长期以来,欧美国际IT巨头利用技术优势占据了大量的市场份额,垄断了全球的信息基础设施,也几乎完全控制了IT底层技术的制定标准,把控了整个信息技术产业的核心生态。
我国自改革开放以来,在信息技术领域发展迅速,但在底层基础核心技术领域依然一直处于模仿和追随者的被动地位。
近些年,随着外部环境的逐渐恶劣,一系列的事件倒逼着我国信创产业向自主可控的方向发展。诸如:
2008年微软的黑屏事件
2010年伊朗震网病毒事件
2013年美国棱镜门事件
2018年美国中兴芯片断供事件
2019年华为芯片断供事件
2020年微软windows7停服事件
于是,2020年在国家政策的大力支持下,信创产业开始全面爆发和布局,成为信创元年。
至今,2023年,信创经过三年的大力发展和推广,覆盖的领域越来越广,信创产品和应用从最初的党政领域,向医疗、教育、交通、金融等行业全面推进。因此,极光的消息产品在服务这些行业时,也面临着信创的改造和升级。
极光服务的信创改造之路
近些年,极光服务积极拓展了金融,党政机关等多个行业的私有云客户。为了配合客户的信创需求,极光服务于2022年也开启了信创改造之路。极光服务信创改造主要涉及使用到的诸多中间件。
以下是极光服务重点对接适配的几个信创中间件:
1、RocketMQ 替换为东方通 TongHtp2.0
在获得相关文档后,极光开发对东方通提供的十来个资料进行了查阅调研。
一开始,我们选择基于异步接口进行系统改造,一般来说,异步接口在每次请求后都会收到一个对应的回调,是适用于UMS 业务需要的,但在实际调试时,我们发现只有第一条才会有回调返回,这样的逻辑让UMS系统无法判断消息是否已发送。而东方通表示该异步接口的设计现状就是如此,不得已,我们只好对同步接口进行封装后再集成到UMS 中使用,浪费了一些时间。
在对「文件上传功能」进行适配时,发现TongHtp2.0 出现字符流数据读取乱码的问题,分析发现是因为TongHtp2.0 不支持gzip格式。在这个情况下,我们需要对业务涉及字符流的地方进行特殊编码处理才能完成兼容适配,最后通过修改成十六进制的编码解决了这个问题。
由于 TongHtp2.0 依赖.so动态库,无法在本地的开发环境进行调试,必须在部署脚本中指定依赖的动态库,然后打包放到服务器上,通过打日志的方式来进行调试。因为调试方式复杂使得适配工期拉长。
经过反复的调试、沟通讨论,最终我们在8 月末顺利完成东方通TongHtp2.0 的开发、自测。
2、Redis 替换为东方通 TongRDS2.2.1.2
9 月,我们在测试环境中安装了TongRDS ,编写了一个测试Client 与测试Server 测试其对Redis 协议的兼容性,其中Client 用于实现数据的写,Server用于实现数据的查询,我们测试验证了string、list、set、hash、zset等几种常见的数据类型,同时验证了ttl 以及数据持久化。
在 Redis兼容性验证之后,由于东方通TongRDS 有原生的Go sdk,因此我们用TongRDS 替换Redis,部署在我们的UMS 测试环境中,验证UMS 的业务功能是否正常。
3、Nginx 替换为东方通 TongHttpServer
9 月,我们在测试环境中安装了TonghttpServer,替换UMS 系统使用的Nginx 后验证 UMS Portal 基本功能,可以正常运行。
在验证高级功能时,因为在频率限制、黑白名单等功能中用到了Nginx Lua,所以需要验证TonghttpServer 对Nginx lua 的支持和兼容性。我们编写了Nginx lua 脚本,将其放到TonghttpServer 的对应目录并更新配置文件,重启后验证api limit 以及路由转发功能是否正常。
4、MySQL 替换为 TiDB
经过调研发现,TiDB基本可以兼容 MySQL,因此我们直接利用TiDB 的数据迁移工具,将MySQL数据库的存量数据迁移到TiDB,进行基本功能验证即可。
5、 宝兰德的适配
为了以最快的速度完成信创的兼容,确保上线时间,我们在宝兰德和东方通的调研、适配上安排了多个开发同步进行,当遇到阻碍时及时商讨方案,调整选型和人力配置,最后按时完成了开发提测。以下是我们在宝兰德适配上遇到的问题和经验分享:
从宝兰德厂商获得BESMQ、BCS(对应Redis)以及 Web服务器 bws3.1 的测试Licence,将UMS系统使用的 RocketMQ、Redis以及 Nginx等中间件替换为对应的宝蓝德组件,开始进行兼容适配工作。
在验证 BCS(对应Redis)时,因为宝兰德不支持原生的Go 客户端,所以极光必须自行开发一个中间服务做Redis 协议转发,通过把Go 的协议转发给Java 的 SDK来实现。我们先调用 Java SDK 客户端对 Redis的几种数据类型(string、set、hash、list、zset)做了兼容性验证,发现数据读写都是正常的。
另外,也写了一个简单的协议转发服务proxysrv,用于将umsserver 对 Redis的操作转发给 BCS的原生SDK,在对基本场景验证后确认方案可行,但是由于协议转发存在性能损耗,同时由于proxy 与 ums server 之间是一个长连接,涉及连接保活的机制,要完美实现可能会有点复杂,因此决定放弃适配宝兰德,选用东方通RDS。
在验证 BESMQ时,同样遇到了没有 Go SDK的问题,我们自研开发了一个代理服务用于协议转发,但在自测过程中遇到了连接无法保活的问题,如果要保活则需要实现心跳机制,心跳机制相对比较复杂,因此决定放弃适配,选用东方通TongHtp。
因上述组件选用了东方通,而东方通的 TonghttpServer 已验证通过,因此未继续验证bws3.1 替代 Nginx。
信创改造实践总结
在经过一段时间繁琐的适配开发后,极光私有云服务已改造成能适配绝大部分需求,但对接的过程中也遇到了不少问题,诸如:
- 各行业信创标准不统一,尤其同类型不同信创组件,对接接口不一致,适配工作量重复且繁琐
- 国产信创组件搭建稳定的测试验证环境困难,很多时候只能在客户集成测试环境才能完成最终验证
- 国产信创组件三方交付配合,尤其在问题定位时,沟通成本较高
展望未来,信创改造是一项长期需要投入的工作,为了提高后续的接入开发和交付效率。信创改造依然有许多值得优化的地方,目前总结有以下几点:
- 开发过程中,对中间件的使用接口应抽象成泛型,并以插件的形式快速接入不同类型的信创组件
- 交付过程中,对已能支持的组件,使用配置化的方式支持定制化切换
- 提高不同信创组件的使用经验和运维能力,包括开发定制化的工具支持系统组件的可视化,故障监控告警,完善标准化文档等等。
关于极光
极光(Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的客户互动和营销科技服务商。成立之初,极光专注于为企业提供稳定高效的消息推送服务,凭借先发优势,已经成长为市场份额遥遥领先的移动消息推送服务商。随着企业对客户触达和营销增长需求的不断加强,极光前瞻性地推出了消息云和营销云等解决方案,帮助企业实现多渠道的客户触达和互动需求,以及人工智能和大数据驱动的营销科技应用,助力企业数字化转型。