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

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

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

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

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

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

其实本质上来说华为的云服务从最底层来说,我们是基于华为公司自己研发的鲲鹏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

智能推荐

什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?_成员内部类和局部内部类的区别-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏42次。一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部_成员内部类和局部内部类的区别

分布式系统_分布式系统运维工具-程序员宅基地

文章浏览阅读118次。分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的..._分布式系统运维工具

用Exce分析l数据极简入门_exce l趋势分析数据量-程序员宅基地

文章浏览阅读174次。1.数据源准备2.数据处理step1:数据表处理应用函数:①VLOOKUP函数; ② CONCATENATE函数终表:step2:数据透视表统计分析(1) 透视表汇总不同渠道用户数, 金额(2)透视表汇总不同日期购买用户数,金额(3)透视表汇总不同用户购买订单数,金额step3:讲第二步结果可视化, 比如, 柱形图(1)不同渠道用户数, 金额(2)不同日期..._exce l趋势分析数据量

宁盾堡垒机双因素认证方案_horizon宁盾双因素配置-程序员宅基地

文章浏览阅读3.3k次。堡垒机可以为企业实现服务器、网络设备、数据库、安全设备等的集中管控和安全可靠运行,帮助IT运维人员提高工作效率。通俗来说,就是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。由于堡垒机内部保存着企业所有的设备资产和权限关系,是企业内部信息安全的重要一环。但目前出现的以下问题产生了很大安全隐患:密码设置过于简单,容易被暴力破解;为方便记忆,设置统一的密码,一旦单点被破,极易引发全面危机。在单一的静态密码验证机制下,登录密码是堡垒机安全的唯一_horizon宁盾双因素配置

谷歌浏览器安装(Win、Linux、离线安装)_chrome linux debian离线安装依赖-程序员宅基地

文章浏览阅读7.7k次,点赞4次,收藏16次。Chrome作为一款挺不错的浏览器,其有着诸多的优良特性,并且支持跨平台。其支持(Windows、Linux、Mac OS X、BSD、Android),在绝大多数情况下,其的安装都很简单,但有时会由于网络原因,无法安装,所以在这里总结下Chrome的安装。Windows下的安装:在线安装:离线安装:Linux下的安装:在线安装:离线安装:..._chrome linux debian离线安装依赖

烤仔TVの尚书房 | 逃离北上广?不如押宝越南“北上广”-程序员宅基地

文章浏览阅读153次。中国发达城市榜单每天都在刷新,但无非是北上广轮流坐庄。北京拥有最顶尖的文化资源,上海是“摩登”的国际化大都市,广州是活力四射的千年商都。GDP和发展潜力是衡量城市的数字指...

随便推点

java spark的使用和配置_使用java调用spark注册进去的程序-程序员宅基地

文章浏览阅读3.3k次。前言spark在java使用比较少,多是scala的用法,我这里介绍一下我在项目中使用的代码配置详细算法的使用请点击我主页列表查看版本jar版本说明spark3.0.1scala2.12这个版本注意和spark版本对应,只是为了引jar包springboot版本2.3.2.RELEASEmaven<!-- spark --> <dependency> <gro_使用java调用spark注册进去的程序

汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用_uds协议栈 源代码-程序员宅基地

文章浏览阅读4.8k次。汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用,代码精简高效,大厂出品有量产保证。:139800617636213023darcy169_uds协议栈 源代码

AUTOSAR基础篇之OS(下)_autosar 定义了 5 种多核支持类型-程序员宅基地

文章浏览阅读4.6k次,点赞20次,收藏148次。AUTOSAR基础篇之OS(下)前言首先,请问大家几个小小的问题,你清楚:你知道多核OS在什么场景下使用吗?多核系统OS又是如何协同启动或者关闭的呢?AUTOSAR OS存在哪些功能安全等方面的要求呢?多核OS之间的启动关闭与单核相比又存在哪些异同呢?。。。。。。今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXrdI0k-1636287756923)(https://gite_autosar 定义了 5 种多核支持类型

VS报错无法打开自己写的头文件_vs2013打不开自己定义的头文件-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏14次。原因:自己写的头文件没有被加入到方案的包含目录中去,无法被检索到,也就无法打开。将自己写的头文件都放入header files。然后在VS界面上,右键方案名,点击属性。将自己头文件夹的目录添加进去。_vs2013打不开自己定义的头文件

【Redis】Redis基础命令集详解_redis命令-程序员宅基地

文章浏览阅读3.3w次,点赞80次,收藏342次。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。_redis命令

URP渲染管线简介-程序员宅基地

文章浏览阅读449次,点赞3次,收藏3次。URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。_urp渲染管线

推荐文章

热门文章

相关标签