应用迁移与适配技术
什么叫做应用迁移与适配技术
应用适配迁移的背景:
国产化历程
1.XC:信息技术应用创新产业
2.863计划:1986年3月启动实施的“高技术研究发展计划(863计划)",旨在提高我国自主创新能力,坚持战略性、前沿性和前瞻性,以前沿技术研究发展为重点,统筹部署高技术的集成应用和产业化示范,充分发挥高技术引领未来发展的先导作用。
3.核高基:是对核心电子器件、高端通用芯片及基础软件产品的简称,是2006年国务院发布的《国家中长期科学和技术发展规划纲要(2006-2020年)》中与载人航天、探月工程并列的16 个重大科技专项之一。
4.AK:面向党政的具备安全可靠特性的国产化替代项目,信息技术应用创新的前身。
信创发展
信创发展—内驱力
中国在信息技术底层标准、架构、生态掌控力等方面非常薄弱,已成为其信息产业发展的重要制约和阻碍;是中国在进军社会主义现代化强国征程中的绊脚石。
信创发展—国家意志
有关信创产业,近期国家又出台了新的政策。 2022年9月底下发的 79 号文,全面指导国资信创产业发展和进度,要求所有央企+地方国企落实信创全替代。
未来的信创为持久化、常态化产业,在国家意志的大背景下各大国产化厂商持续发力,人才缺口星井喷式增长。
信创发展—市场规模
从信创产业整体市场来看,相关数据显示,2021年信创产业整体市场规6886.3亿元近五年复合增速达到 35.7%,预计 2025 年市场规模将达到 23354.6 亿元。
信创发展—行业
国家此前制定的“2+8+N”的信创三步走战略。
1."2”就是首先实现机关范围内的国产替代,同时顺带打磨产品、培育骨干企业。
2."8”指的是金融、电信、电力、石油、交通、航空航天、教育、医疗8大关键行业。在产品相对好用、生态比较成熟后,信创将由党政系统扩大到8大关键行业。
3.“N” 就是其他行业,最终将信创产品扩展到全行业。
应用系统适配与迁移概况
国产操作系统
国产化历程
国产化数据库
国产化中间件
RPM
RPM包的概述
RPM 有五种基本的操作功能:安装、卸载、升级、查询和验证。
有时候为了方便源码包的安装,我们有自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成 rpm 包。
RPM包实操
一.RPMbulid环境准备
#yum install rpm-build rpmdevtools rpmlint -y
二,实操
1.执行rpmdev-setuptree ,创建rpmbuild 目录
#rpmdev-setuptree
2.创建 Demo 软件包
#mkdir rpmbuild-1.0
#vim rpmbuild-1.0/rpmbuild hello.sh
#cat rpmbuild-1.0/rpmbuild hello.sh
#!/usr/bin/env bashecho "Hello rpmbuild'
#chmod +x rpmbuild-1.0/rpmbuild hello.sh
3.打包
#tar czvf rpmbuild/SOURCES/rpmbuild-1.0.tar.gz
4.创建与编辑 SPECFILE
rpmdev-newspec rpmbuild/SPECS/rpmbuild.spec
执行编辑指令
#vim rpmbuild/SPECS/rpmbuild.spec
5.生成 rpm 包
#rpmbuild -bb rpmbuild/SPEcS/rpmbuild.spec
#ls rpmbuild/RPMS/aarch64/rpmbuild/RPMS/aarch64/rpmbuild-1.0-1.ky10.aarch64.rpm
6.安装rpm包并测试
解释型语言应用移植
Java语言简介
Java语言移植
查询本地Java环境
#yum search java
1.安装Java相关的开发环境
2.验证Java,Javac版本
3.编写Java测试代码
4.编译并执行
5.在目标环境中查看Java环境
6.移植Java代码
基于解释型语言开发应用移植方案
解释型语言移植–Python
实验环境
基于Arm架构(鲲鹏920)的麒麟操作系统V10。
实验步骤
Python的情况与Java类似,Python使用PVM虚拟机。
编译器:将源码编译成运行在虚拟机上执行的opcode(pyc文件),pyc文件是在python虚拟机上执行的一种跨平台字节码。
运行时:虚拟机解释器把opcode(pyc文件)解释成具体机器的机器码执行。
查询本地的python环境
在Arm架构(鲲鹏920)的麒麟操作系统V10环境下执行以下命令
[root@jd4 ~]#yum search python
会发现源中有python2与python3
[root@jd4 ~]# python2
Python 2.7.18 (default, Mar 14 2021, 15:03:19)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.>>> quit()
[root@jd4 ~]# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
通过pip 安装numpy 模块
1.加载numpy模块
[root@jd4 ~]# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
>>>
发现没有numpy模块供我们使用。
2.安装pip来管理python模块
yum install python3-pip -y
#由于pip3 默认的search 功能被禁止了,所以先安装pip_search
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
#升级
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#更改pip使用国内源 清华大学开源软件镜像站
pip install pip_search
pip_search numpy
观察输出结果,有numpy模块
3.使用pip命令进行安装
pip install numpy
4.在python3中使用numpy模块
[root@jd4 ~]# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.zeros(2)
array([0., 0.])
>>>quit()
看到np.zeros可以正常使用,代表已经可以在python3的环境中正常使用numpy模块了。
通过重新编译,迁移numpy模块
1.移除刚才pip安装的numpy模块
[root@jd4 ~]# pip uninstall numpy
Found existing installation: numpy 1.21.5
Uninstalling numpy-1.21.5:
Would remove:
/usr/local/bin/f2py
/usr/local/bin/f2py3
/usr/local/bin/f2py3.7
/usr/local/lib64/python3.7/site-packages/numpy-1.21.5.dist-info/*
/usr/local/lib64/python3.7/site-packages/numpy.libs/libgfortran-daac5196.so.5.0.0
/usr/local/lib64/python3.7/site-packages/numpy.libs/libopenblasp-r0-444d0ba0.3.17.so
/usr/local/lib64/python3.7/site-packages/numpy/*
Proceed (Y/n)? y
Successfully uninstalled numpy-1.21.5
2.验证移除效果
[root@jd4 ~]# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
>>> quit()
3.安装编译所需要的编译器
#yum install gcc-gfortran -y
4.下载Numpy源码包
#cd /usr/local/src
从配套资料中找到已经下载好的numpy-1.19.4.tar.gz软件包到此目录下
5.移植-编译安装
tar fvxz numpy-1.19.4.tar.gz
cd numpy-1.19.4/
pip install Cython
python3 setup.py install
6.验证
千万记得第一步退出源码安装路径
#cd ~
# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.zeros(2)
array([0., 0.])
>>> quit()
总结
1.技术驱动力:应用迁移与适配技术的发展受到多种技术驱动力的推动,包括云计算、容器化、微服务架构等。这些技术的发展使得应用迁移变得更加灵活和可行。
2.迁移方法:应用迁移可以采用多种方法,包括重新编写、重构、重建、重新平台化等。选择合适的迁移方法取决于原始应用的复杂度、目标环境的特点以及迁移的成本和风险。
3.自动化工具:为了简化和加速应用迁移的过程,许多自动化工具和平台已经涌现出来,例如迁移工具、容器编排工具、配置管理工具等。这些工具可以帮助开发人员和运维人员在迁移过程中更加高效地完成任务。
4.适配性:在进行应用迁移时,需要考虑目标环境的特点和限制,确保应用程序能够适应新环境的条件。这可能涉及到修改代码、调整配置、解决依赖关系等。
5.性能和安全性:在进行应用迁移时,需要特别关注性能和安全性方面的问题。确保迁移后的应用程序能够达到预期的性能水平,并且在安全方面没有漏洞和风险。
6.监控与优化:应用迁移后,需要对新环境中的应用程序进行监控和优化,及时发现和解决性能问题、安全漏洞等。持续优化可以确保应用程序在新环境中持续稳定地运行。
综和以上六个,应用迁移与适配技术是一项复杂而关键的任务,需要综合考虑多种因素,并利用现有的技术和工具来实现。随着技术的不断发展,应用迁移与适配技术将继续演进,为应用程序的部署和运行提供更加灵活和高效的解决方案。