鲲鹏套件实现Java代码分析及迁移【玩转华为云】

举报
龙哥手记 发表于 2022/05/29 11:04:43 2022/05/29
【摘要】 手把手用开发套件来完成Java代码(netty)迁移,里面还是有很多坑已帮你踩记得点赞鼓励下
本文的主要内容有:
  • 一 鲲鹏是啥及优势
  • 二 了解下鲲鹏云服务
  • 三 实现Java代码咋配环境
  • 四 用鲲鹏编译及验证下

2.png

彦祖 懂这个梗不

一 🙈 鲲鹏是啥及优势

首先要明白是很大的生态哈,咱不可能全部讲明白;所以咱们针对开发套件里面的代码迁移工具来详细来讲,咱们马上发车(狗头);

4.png

1.1 如何定义呢

代码迁移工具是能简化客户Linux应用迁到基于鲲鹏916/920的服务器或鲲鹏云服务(也就是弹性云服务器KC1实例、裸金属服务器)过程的工具,当客户有源码的软件迁移到鲲鹏平台上的时候,可用该工具自动分析出需修改的代码内容,并指导如何修改,你说开发起来简直不要爽;

1.2 优势是什么

敲黑板啦:目的帮你解决代码兼容性人工排查困难、迁移经验欠缺、反复依赖调试定位,投入工作量大,整体效率低等这些问题,通过该工具能够分析待迁移软件源码文件,给出代码迁移指导报告,可迁移性评估及迁移建议能够可视化对迁移建议进行分级,部分等级的建议可实现一键自动替换、修改,降低迁移难度,提升迁移效率,记住不支持Windows软件代码那一套;


3.png

内容是这样的:咱们代码迁移工具用的是软件迁移评估这个功能哈,能帮你分析x86环境上软件包安装路径中的SO库文件,并检查这些文件与鲲鹏平台的兼容性到底有多少匹配;


二  🤩 了解下鲲鹏云服务

一图胜千言👍

5.png

7.png

6.png

8.png

三 ⛳ 实现Java代码咋配环境

敲黑板啦:咱们这次用分析扫描工具来识别Java中的依赖库,并在鲲鹏服务器上面完成咱们Java代码的编译迁移哈

3.1 首先安装依赖

前面用户名密码,预置环境那一套我就略过喽,咱们远程登创建好的弹性云服务器ECS,双击桌面的“Xfce终端”打开Terminal,输入以下命令登录云服务器;

请你注意:请用云服务器的公网IP替换命令中的【EIP】

LANG=en_us.UTF-8 ssh root@EIP
  • 云服务器的弹性公网IP地址可以通过点击“控制台”->“服务列表”->“计算”->“弹性云服务器ECS”进入服务器列表,进行查看并复制出来,然后接受秘钥输入“yes”,回车;
  • 输入密码:使用预置环境信息中云服务器名称为ecs-netty的用户密码(输入密码时,命令行窗口不会显示密码,输完之后直接键回车),成功登录云服务器之后如下图所示(实验过程不要关Terminal窗口,否则需要重复此步骤重新建立连接):

请你注意:后续操作请保持Terminal窗口与云服务器的连接状态,以确保所有的操作都在云服务器执行

登录成功后,用“dependency advisor”这个工具来分析jar依赖
执行下面命令下载分析工具:

wget https://sandbox-experiment-resource-east-1.obs.myhuaweicloud.com/netty-praxis/Dependency-advisor-Kunpeng-linux-1.1.3.tar.gz

下载完成后,然后执行以下命令解压并安装web版的工具:

tar zxvf Dependency-advisor-Kunpeng-linux-1.1.3.tar.gz && cd Dependency-advisor-Kunpeng-linux-1.1.3 && bash install.sh web

程序执行过程中,需要你先输入时直接回车,共三处如下图这样

耐心等待5分钟后,安装成功如下图这样

安装完成后,在实验环境浏览器新建tab页面,直接输入地址“https://EIP:8082”访问已安装的分析工具就行哈

操作如下:
① 使用弹性云服务器ECS的公网IP替换链接中的【EIP】;
② 【https】访问浏览器警告不安全,点击“高级”-> “添加例外”-> “确认安全例外”如下图这样

③ 访问成功后,默认用户名:depadmin 密码:Admin@9000;
④ 然后修改默认密码(自定义)然后重新登录

然后切到“Xfce终端”执行以下命令下载需要分析的源码包“netty-all-4.1.34.Final.jar”,注意一定是root权限哈才行

cd ~ && wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/netty-all-4.1.34.Final.jar

输入以下命令创建“/opt/depadv/depadmin/netty”文件夹及“/opt/depadv/depadmin/netty/netty-all-4.1.34.Final”

mkdir /opt/depadv/depadmin/netty && mkdir /opt/depadv/depadmin/netty/netty-all-4.1.34.Final

执行以下命令将源码包“netty-all-4.1.34.Final.jar”解压到“/opt/depadv/depadmin/netty/netty-all-4.1.34.Final”目录下面

mv netty-all-4.1.34.Final.jar /opt/depadv/depadmin/netty/netty-all-4.1.34.Final && cd /opt/depadv/depadmin/netty/netty-all-4.1.34.Final && jar -xvf netty-all-4.1.34.Final.jar && rm -rf netty-all-4.1.34.Final.jar && cd ~

切换到实验桌面浏览器明显可以看到自己已成功登录分析工具的页面,然后网页上选择“分析软件安装包”,然后路径输入框输入netty,如下图这样

点击“分析”,分析完成结果如下图所示:

马上点开“依赖库文件”可以看到“netty”发布的版本是x86版本也就是32位的,里面调用的库为X86下编译的,需要你重新编译成aarch64版本才行

3.2 安装OpenJDK

执行下面命令建一个文件夹并下载OpenJDK安装包到文件夹下

mkdir netty-4.1.34 && cd netty-4.1.34 && wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/OpenJDK8U-jdk_aarch64_linux_hotspot_jdk8u242-b08.tar.gz

执行以下命令解压安装包

tar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_jdk8u242-b08.tar.gz

然后执行以下命令创建安装文件夹

mkdir -pv /opt/tools/installed/

下面命令把已解压的安装文件移动到安装文件夹

mv jdk8u242-b08 /opt/tools/installed/

执行以下命令编辑配置文件

vim /etc/profile

然后键入“Shift+g”进入文件末尾,键入“i”进入文本编辑模式,在最后一行之后新起一行,复制粘贴以下配置

export JAVA_HOME=/opt/tools/installed/jdk8u242-b08
export PATH=$JAVA_HOME/bin:$PATH

编辑完成后,键入“Esc”能退出编辑模式,执行以下命令回车,保存“/etc/profile”文件(就是环境变量)

:wq

3.3 安装Maven

执行以下命令下载Maven安装包

wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/apache-maven-3.6.3-bin.tar.gz

执行以下命令解压安装包

tar -zxf apache-maven-3.6.3-bin.tar.gz

执行以下命令把已解压的安装文件移动到安装文件夹

mv apache-maven-3.6.3 /opt/tools/installed/

执行以下命令替换Maven仓库配置

wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/settings.xml && rm -rf  /opt/tools/installed/apache-maven-3.6.3/conf/settings.xml && cp settings.xml /opt/tools/installed/apache-maven-3.6.3/conf/

执行以下命令编辑配置文件

vim /etc/profile

键入“Shift+g”进入文件末尾,键入“i”进入文本编辑模式,在最后一行之后新起一行,复制粘贴以下配置:

export MAVEN_HOME=/opt/tools/installed/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH

如下图所示:

编辑完成后,键入“Esc”退出编辑模式,执行以下命令回车,保存“/etc/profile”文件:

:wq

执行以下命令使配置生效

source /etc/profile

3.4 装apr-1.6.5

执行以下命令下载apr-1.6.5安装包:

wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/apr-1.6.5.tar.gz

执行以下命令解压安装包

tar -zxf apr-1.6.5.tar.gz

执行以下命令进入“apr-1.6.5”文件夹

cd apr-1.6.5

执行以下命令开始编译

./configure

编译完成后,执行以下命令开始安装“apr-1.6.5”

make -j20 && make install

安装成功如下图这样

四 🚀 用鲲鹏编译及验证下

4.1 配置编译环境

下面命令下载自动化配置脚本

cd /root/netty-4.1.34/ && wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/set_netty_conf.sh

下载完成后,输入以下命令执行自动化配置脚本

sh set_netty_conf.sh

执行成功意味着整个环境配置完成,那么咱们可以顺利进行编译打包啦

4.2 编译netty-tcnative-parent-2.0.22.Final

下面命令进入netty-tcnative-parent-2.0.22.Final文件夹

cd /root/netty-4.1.34/netty-tcnative-netty-tcnative-parent-2.0.22.Final/

执行以下命令开始netty-tcnative-parent-2.0.22.Final编译

mvn install -DskipTests

花了我6分钟......

4.3 编译netty-4.1.34-Final

下面命令解压并进入netty-4.1.34.Final目录

cd .. && tar -zxvf netty-netty-4.1.34.Final.tar.gz && cd netty-netty-4.1.34.Final

执行以下命令开始netty-4.1.34.Final编译

mvn install -DskipTests

花了我5分钟......

4.4 验证编译结果

以下操作是对netty-all-4.1.34.Final.jar包进行分析了哈
下面命令切换到编译结果文件夹

cd /root/.m2/repository/io/netty/netty-all/

执行以下命令解压netty-all-4.1.34.Final.jar

jar -xvf 4.1.34.Final/netty-all-4.1.34.Final.jar && ls

执行以下命令,进入META-INF目录,查看netty-all-4.1.34.Final.jar结构

cd META-INF/ && tree

发现里面生成的是 aarch64版本的SO库,至此实验已全部完成恭喜咱们成功!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。