【华为云技术分享】华为云鲲鹏云服务移植指南和实践案例(上)_哪些软件可以鲲鹏移植-程序员宅基地

技术标签: 鲲鹏凌云计划  运维  云服务  华为云  鲲鹏  技术交流  

【摘要】 从应用语言出发,分享应用鲲鹏移植理论和方案,基于应用移植案例,分享鲲鹏应用移植成功经验。

主讲人:华为云鲲鹏云服务与解决方案架构师  王龙江

一、鲲鹏云服务解决方案回顾

前期,在上一次直播,我们的同事应该已经给大家分享过了华为云的鲲鹏云服务以及鲲鹏云服务解决方案,本次,我们先来回顾一下。因为有些朋友可能是第一次听,所以,给大家简单回顾一下华为云的鲲鹏云服务以及解决方案。

其实本质上来说华为的云服务从最底层来说,我们是基于华为公司自己研发的鲲鹏920的这样一个高性能的CPU,然后完成了以后,我们之后还做成了华为自己的云服务器,在服务器之上,我们构建了自己的一个云的操作系统,我们把它叫做瑶光。然后完成了以后基于云的操作系统之上,我们把基于华为云的鲲鹏920这个CPU,做成了各种各样的云服务,我们有我们的弹性云服务器的服务,我们有裸金属服务器的服务,我们有鲲鹏的服务器服务,鲲鹏的数据库服务,鲲鹏的缓存服务以及后面我们的鲲鹏的微服务平台,鲲鹏的大数据服务,等等这样一个鲲鹏系列的云服务。

在鲲鹏系列的这样一个云服务之上,我们现在也在积极的孵化一些解决方案,包括我们现在的高性能计算解决方案,大数据+AI的解决方案,一些基于鲲鹏架构的原生方案以及一些企业应用,或者说国产应用的一个联合的解决方案,做华为云这样一个平台,我们现在也在积极的拓展多样化的生态。我们现在主要是从技术这一个维度的生态,产业生态,以及开发者的生态这三个维度在积极拓展我们鲲鹏云服务的生态。从这些图上大家可以看到对于华为云,我们不只是单单有芯片或者设备,我们是努力的基于鲲鹏做成一个全栈的这样一个云服务的解决方案。这是鲲鹏云服务的大致的介绍背景的内容,这和上次我们的同事介绍的内容应该是一致的。

image.png

二、鲲鹏云服务移植流程

接下来,我们会重点介绍一下干货。就是说对于鲲鹏云服务,因为大家知道华为的这个鲲鹏云服务是兼容ARM架构的,然后,它有别于传统的x86的架构,那么如何去使用,或者说如何把应用移植到华为的鲲鹏云服务上呢?之前有些朋友可能不是很了解,所以会觉得这个东西会不会很难或者说会不会有一些坑。关于鲲鹏云服务,我们有一个概念,但其实,我想真正给大家介绍一下鲲鹏的这种移植流程,大家可以通过这样一个移植流程去进一步的了解到原来鲲鹏云服务其实和大家正常使用的这种弹性云服务器,物理服务器或者数据库服务器其实是一样的。

其实在华为云上只有三个元素,大家能够强烈的感知到这是鲲鹏云服务,那么是哪三个服务呢?就是我们的弹性云服务器,我们的裸金属服务器服务,还有我们的容器服务。因为这三个服务都是直接的运行的应用程序,但是在其它的鲲鹏云服务,比如基于鲲鹏芯片的云存储服务,基于数据库服务器的服务,其实大家更关心的是,例如,我们购买了一个MySQL5.6的计算实例,但是其实大家不太关心这个数据库底层运行的是x86还是鲲鹏,但是对于刚才我们所说的我们的弹性云服务器,也就是我们的ECS服务,我们的裸金属服务,我们的容器来说,因为我们底层的这个CPU的架构,是有别于传统的x86的这样的架构,我们底层的架构,是华为自己的鲲鹏架构,虽然我们也兼容一个ARM的应用架构,但是,我们在做应用移植的时候我们就需要根据应用的特点来区分怎么样去移植。首先其实我们比较好的一个切入维度,就是我们应用所使用的语言作为第一个切入维度,去分析我们这个应用合不合适跑在鲲鹏云服务器上。

语言的话,我们做了一个简单的分类,主要是分成三大类,第一大类是解析性语言,它的代表语言是Java,Python,还有Go语言,其实这三类语言本身就是能够支持跨平台运行的,所以说这三个语言,对我们来说,只要运行环境是可以的,例如Java,只要我们能很好的支持jdk这样的语言的运行环境,那么这语言本身就是跨平台的,无论底下是x86也好,鲲鹏也好,我们其实是基本上可以做到没有困难地迁移到华为云的这个鲲鹏云服务器上面去。如果说是C或者是C++这样的编译型语言,因为这些语言的交互还是会和底层的CPU有一定的关系, CPU架构和指令集架构是有一定的关系的,所以,我们需要去区分这些应用程序的来源,如果是开源的一些软件,我们华为云其实可以连同一些社区去做协同,然后你做相应应用语言的重新编译来做到与鲲鹏云服务器的适配。如果说是自研软件的话,我们一些合作伙伴自己研发的软件,我们可以支撑我们的合作伙伴在云服务器上重新编译一次,然后来做鲲鹏云服务的一个应用适配。

但是确实也会遇到一些商业的闭源软件,商业闭源软件的话,我们可以通过商业合作的这样一个方式去做重新编译,或者说暂时商业闭源软件重新编译需要一定时间的话,华为云上我们其实也是可以考虑x86和鲲鹏云服务器的混合部署的一个方案。当然,实话实说,目前如果是基于windows操作系统的一些开发语言,例如像.net这样一些语言,我们现在暂时还是不能够支持的,所以,现在我们会推荐鲲鹏云服务和x86混合应用的方案,因为华为的云服务,既有x86的计算平台,也有鲲鹏的计算平台。所以通过从语言入手,其实我们就已经很清晰的解释了哪一类应用比较容易上鲲鹏云服务器,其实就是基于Java,Python,Go等解析语言的,因为它天生就是跨平台的。对于C++的,我们就需要重新去编译一次。

image.png

除了上一页以外,其实我们还有一些更详细的介绍。其实对我们来说,有一部分,特别是C和C++,特别是需要涉及到一些汇编的话,这些相应的应用程序,我们确实是需要一定的工作量,然后我们需要重新去编译,或者说重新去做一些代码级别的修改,这也是有可能会产生的一些工作量,但是如果是Java类的这种语言或者说Python或者Go,本质上来说我们在安装好了的这样一个公共版本的JVM的话,我们就可以直接支持相应的这样一个语言的软件的移植。

image.png

这里简单的举两个例子,就是类似像解释性语言的这种开发环境,我们大概去做这样一个应用程序的更新的话其实比较简单。以Java为例,第一步,我们需要把语言的这种环境安装好,CentOS上面像Java的openjdk,其实只要简单的操作,因为我们现在能够支持的操作系统有CentOS,有华为自己的欧拉操作系统,后面我们会支持一些国产的操作系统,例如中标、银河麒麟等国产操作系统,这些操作系统本质上已经带好了这种支撑,能够支持鲲鹏架构的基础的一些运营环境,一些相关的依赖的软件的环境。所以现在在CentOS上面,我们可以直接用样本命令行去安装openjdk,我们把这个装好以后,需要把这个相应的Java程序代码拷上来,然后完成以后,如果需要组件的话,我们需要把相关的应用组件安装上,例如我们常用的一些MySQL、Nginx、TomCat这种组件,都可以在鲲鹏云服务器上做安装部署。安装部署完成以后,我们就可以很好的去把相关的应用在鲲鹏云服务器上做性能测试和兼容性测试。

image.png

如果是基于编译型语言的话,其实大家都知道,例如像C和C++这样的语言的应用程序,我们可以把源码下载下来,下下来了以后,我们可以去做一个相应的编译的工作,熟悉C语言编译的朋友应该会知道,标准的编译执行就是configure,make,make install等,这种方式和x86的服务方式是一样的,然后如果我们把这个程序在我们的鲲鹏的云服务器上面重新做一次编译的话,我们也能做到基于C语言的这种相关的应用程序能够在鲲鹏云服务器上的适配。

image.png

现在,基于我们的一些成功经验,其实大量的应用程序,它的物理架构,大多数都还是比较简单的,但这种比较简单的应用程序的物理架构是什么样的呢?是负载均衡作为接入,然后加上我们的应用服务器,加上数据库服务器的这样一个物理架构,那么它对我们的一些要求就是我们的鲲鹏云服务器应该支持什么,我们要支持相应的Haproxy,Nginx,Apache,我们要支持Redis,Memcrched这种缓存,以及一些数据库,例如MySQL数据库,PostgreSQL数据库,还要支持数据库的一些HA,例如Keepalived这种工具性的组件。像这些组件的话,我们画在图上的相应的组件,其实现在华为的鲲鹏云服务都已经能够支持了,所以绝大多数上市的这种应用系统,或者说咱们绝大多数企业所使用到的相关的这些应用软件,在我们的这个鲲鹏云服务器上面,都已经能够很好的适配了,后面,我们也会介绍我们其实把相关的组件适配以后,都放在了我们的华为云官网上线的鲲鹏的开发者社区里面,后面我会给大家展示一下。

image.png

然后完成了以后,用这些相应的组件,我们就可以去支撑相应的一些Web服务或者Web应用,像论坛、电商、网站这类的应用在华为的鲲鹏云服务器上的运行,其实我们这些组件,还是可以支持我们的一些设备,不管是虚拟机,还是我们的裸金属服务器,还是我们的容器,我们都是可以去支持的。但是这一块,实话实说,之前会有一些朋友产生一些困扰,就是我如果把我的应用部署在容器平台里面,我只要有容器的镜像,我是不是就不用关心底层用的是鲲鹏也好,用的x86也好,但实际上确实是因为我们底层的CPU架构的指令集的不同,如果是容器平台的这种传统的x86的这种镜像的话,也需要做一次鲲鹏云服务器的适配。只有我们在鲲鹏云服务器上打包好了这样一个镜像,才能在鲲鹏的容器平台上很好的运行。之前我们会有一些朋友产生一些误解,当然,我们刚才上一页讲到的主要都是一些开源的组件,我们现在也能够支持一些商业版本的国产的组件,例如东方通中间件,金蝶天燕的中间件,中标麒麟的操作系统,银河麒麟的操作系统,我们也能够支撑国产的一些数据库,像达梦数据库,南大数据库,都是我们鲲鹏云服务器现在已经能够支撑的国产的商业级服务。

image.png

这里给大家举一个例子,这个例子是我们之前的一个合作伙伴,他做一个智慧消防的应用,然后能成功移植到华为的鲲鹏云服务器上面的这样一个例子。为什么用这个应用来举例子呢?因为这个应用是非常有代表性的,它对外提供的是一个智慧消防的数据呈现的一个应用平台,但本质上来说它其实是一个Web服务,他用到了TomCat,也用到了Nginx,他外部缓存用的是Redis数据库,用的是MySQL,他下面的语言是Java和PHP都用了一部分,其实他们做华为云服务的这样一个移植,是非常非常简单的,那么这个怎么做呢?其实第一步是先把组件安装好,比如我们把openjdk安装好,剩下的我们可以把一些组件例如TomCat,Redis等yum install一下。但是有一些组件暂时还不能通过操作系统直接做yum install操作,例如MySQL,我们可以做到支持客户和合作伙伴的自己去编译,我们现在已经有MySQL这样一个最佳实践了。通过这个实践,我们可以做到支撑MySQL的自己编译的这样一个部署。只要我们把数据库MySQL部署好,Nginx和Redis部署好,然后把Java的运行环境部署好,把客户的应用程序上传,然后传完了以后就可以做相应的启动。

image.png

现在大家也知道,包括华为云,我们现在也在积极的支持我们的很多的合作伙伴,还有我们的很多的客户去发展这样一个鲲鹏的生态,所以我们现在也构建了一个非常完善的服务体系,来支撑我们的鲲鹏生态,我们能够帮助到我们的合作伙伴或者我们的客户,来做相应的鲲鹏应用的移植的可行性分析,来帮助指导我们的移植方案设计,如果在移植过程中有一些重大的困难点,我们可以做一些重难点攻关,包括一些专家的攻关,或者说对一些我们现在的能力的不满足,我们可以基于我们现在的合作伙伴的需求,重新做一些新的需求。我们能够支持一些合作伙伴应用系统的性能调优,然后调优以后,如果还是不满足,我们可以有专家再支持攻关,我们也可以支持合作伙伴做相应的上云的方案设计,因为我们做完了应用移植,最终还是希望能够真正的有终端的用户去使用我们基于鲲鹏云服务器的相关的方案,所以我们就会去支持合作伙伴,或者帮助客户去做单元的方案的设计。不只是说部署方案,我们还要帮助设计迁移、容灾、混合云的方案,而且我们能够支持所相应的公有云、专属云、HCSO等多种方案以及安全性的设计。最后我们其实是有相应的运维和服务来给客户和合作伙伴提供相应的后续服务。

image.png

这里其实我们也准备了很多相关的材料,来提供给我们的合作伙伴和客户,其实根据我们相关的材料和指导文档,大家都可以做到去鲲鹏云服务器上去做应用移植和编译。其实现在华为鲲鹏云服务发展的也非常快,所以我们也准备了一些为了方便沟通的客户信息调研或者伙伴软件信息调研的表,如果在华为云鲲鹏云服务器上,做完了一个应用测试,后面想加入华为云的鲲鹏凌云计划,想成为华为的合作伙伴,一些应用想通过华为云的鲲鹏云服务的兼容性认证,我们都准备好了测试报告的模板。其实只要大家后续提出加入我们这个鲲鹏凌云计划,我们都会有同事来联系大家,去做相应的信息收集以及方案评估。

戳→视频

以上文字内容由【内容众创小组-栀】整理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/devcloud/article/details/104511858

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法