云计算 频道

华为DevRun第四讲,华为云鲲鹏云服务移植快速入门与实践

  6月23日,华为DevRun开发者沙龙系列活动在线上举行,“华为云和TA的朋友们公开课”第四次直播课程顺利结束,本次公开课的主题是《华为云鲲鹏云服务移植快速入门及实践》,课程由华为云鲲鹏云服务高级产品经理卢启主讲。

  主讲人卢启多年从事华为云研发与产品管理工作,深入理解华为云产品与解决方案,主导设计和开发了华为认证鲲鹏应用开发工程师HCIA课程,作为技术专家曾帮助众多客户与合作伙伴成功实践鲲鹏应用项目和鲲鹏云改造。

  本次课程从介绍鲲鹏云服务和鲲鹏计算开始,并根据编译型语言、解释型语言的不同特点,介绍了鲲鹏软件的移植方法,着重介绍了容器移植的基本方法。最后通过实际案例,完整体验了鲲鹏云服务移植的过程。

  鲲鹏云服务介绍

  鲲鹏云的底层是擎天架构,包含软硬件协同系统、智慧云脑,实现多元算力的智慧调度、云边端的全场景的打通。

  在擎天架构之上,是鲲鹏云的各种具体服务,目前有69款之多。如ECS虚拟机、BMS裸金属、Kubernetes容器CCE等等。

  再上一层则是BigData Pro、HPC、云手机、云游戏、Stack混合云等鲲鹏解决方案。

  为更好地服务客户,鲲鹏正在大力发展技术生态、产业生态、开发者生态,包括服务器、存储、操作系统、中间件、虚拟化、数据库、云服务、行业应用以及咨询管理服务等,华为针对生态合作伙伴的“鲲鹏凌云伙伴计划”已经吸纳500多家企业加入,在鲲鹏严选商城发布100多款商品。

  在计算服务上,鲲鹏云针对不同行业、不同场景提供多元化计算服务。除了高性价比、高安全性的鲲鹏弹性云服务器,外以及多核算力、高并发性能的鲲鹏裸金属服务器之外,还有通用计算、内存密集、存储密集、计算密集、计算加速、云手机等不同类型的计算服务。

  从开发语言看鲲鹏移植

  计算机编程语言,主要是分成三大类:

  第一大类是解析性语言,它的代表语言是Java,Python,还有Nodejs等,这一类语言本身就能支持跨平台运行,不需要维护两个分支代码,不存在增加工作负担的问题。

  第二大类是编译型语言,如C或者是C++,由于这些语言的交互还是和底层的CPU、架构、指令集等有一定的关系,需要重新编译,需要根据具体情况Case by case完成移植。

  第三大类是Windows强依赖的产品,暂不支持鲲鹏,建议转化到Linux再移植。

  由以上分类分析可以看出,从X86到鲲鹏平台的移植,主要难点在编译型语言的适配。

  编译型语言移植方法

  从编译型语言程序运行原理及编译方式可以看出:源码需要由编译器、汇编器翻译成机器指令,再通过链接器链接库函数生成机器语言程序。机器语言必须与CPU的指令集匹配,在运行时通过加载器加载到内存,由CPU执行指令。

  在鲲鹏平台和X86平台,处理器的指令存在2大差异:一是指令长度不同,鲲鹏指令等长,X86指令不等长。这一差异,让X86更擅长串行处理,而鲲鹏的指令流水并发度较X86更高,在高性能计算等高并发场景下性价比提升30%。二是汇编指令不一致, 这也让X86程序无法直接移植到鲲鹏,必须经过重新编译才能运行。

  以C/C++程序GCC编译运行的过程为例,需要以下四步,就能实现编译:

  1、配置GCC环境变量

  2、修改C/C++源码

  3、编译C/C++源码,生成可执行程序

  4、启动C/C++程序,调试功能

  在编译过程中,GCC编译器将C、C++语言源程序通过预处理、编译、汇编、链接等过程生成可执行文件。

  编译型代码的适配过程中,需要针对ARM和x86的环境差异,在源码及编译过程中做相应调整,典型修改如下表所示。

  解释型语言移植方法

  解释型语言因为各平台都有对应的JDK,屏蔽了底层差异,可移植性很好 , 一般不需要重新编译,就能实现跨平台运行。

  以在鲲鹏云上运行纯解释型语言Java程序为例,只需要完成以下四步,就可以实现程序移植:

  1、准备JDK:安装ARM版本JDK;

  2、配置环境变量:配置JDK路径等环境变量;

  3、编译:Java源码生成字节码;

  4、测试:启动Java程序,调试功能。

  但在实际应用上,很多程序里都存在解释型语言 + 编译型语言混合的情况,例如Java 和 C/C++程序的混编程序。这种情况也并不难处理,只需要将jar包中包含的SO库文件替换为鲲鹏版本或获取C/C++源码重新编译,再使用新的依赖库重新打jar包即可。

  容器移植方法

  容器是一种轻量级、可移植(同处理器平台移植)、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

  当前最流行的容器技术Docker支持X86/ARM等多平台。

  可以通过镜像仓库拉取、镜像打包、Dockerfile自动构建三种方式在鲲鹏云服务器上制作Docker镜像。其中,Dockerfile自动构建的方式最为常用。

  由于鲲鹏与X86的指令存在差异,X86平台中构建的Docker镜像均与平台相关,在鲲鹏平台运行会出现格式不支持等错误,不能直接移植使用,需要采用相类似的镜像,通过修改Dockerfile的方式重新构建。

  体验和使用鲲鹏云服务

  卢启老师在介绍完鲲鹏软件移植方法之后,还着重介绍了鲲鹏社区的情况,之后通过华为云全新上线的“云端实验室”,为在线学习者演示了如何使用华为云鲲鹏弹性云服务器安装、部署并测试一个Node.js的案例。

=

  最新上线的云端实验室,拥有丰富的鲲鹏实践内容,模仿具体应用案例,以动手操作的方式模拟实践,每天限量免费,不容错过。

  本次课程深入浅出地为开发者介绍了鲲鹏云服务移植方法、并以具体案例演示,为学习者直观呈现了整个操作过程,在线问答环节的互动问答,进一步回答了学习者的疑问,受到学习者的点赞支持。

  华为DevRun开发者沙龙系列活动致力于服务开发者,为开发者提供更多硬核支持。下一次的“华为云与TA的伙伴们”公开课时间为7月2日(周四),将会由华为云的合作伙伴为大家带来企业的实践经验和智能化转型故事。我们不见不散。

0
相关文章