关于国产化服务器ARM架构CPU相关问题梳理

知识贯穿:Java程序→中间件→编译器→机器语言→指令集→CPU→ARM架构和X86架构

ARM架构CPU和x86架构CPU的区别,前者使用精简指令集,后者使用复杂指令集;比如盖房子,精简指令集都是告诉你砖放哪放哪;复杂指令集混合用,会告诉你砖放哪和让你盖一个高的围墙这两种精确的和宽泛的指令混合用。

指令集用的是是机器语言,比如0101110这种二进制语言。

高级语言需要使用软件译为机器语言,比如Java和c语言。

高级语言翻译成机器语言需要使用编译器,Java的编译器是jvm,在jre里,即在jdk里,每个Java程序启动的时候会启动一个jvm;所以CPU架构的不同,自然就需要不同版本的jdk去翻译机器语言下达指令。

Redis的编译器是gcc,操作系统兼容CPU的话(比如centos7.6 64bit with ARM、openeuler),自然操作系统自带的gcc也是兼容的。那就能正常编译安装。

MySQL的编译器在MySQL安装包里也有一部分,所以ARM架构的CPU和x86架构的CPU使用的MySQL安装包也不一样。(并且一般都是用二进制或rpm安装,这种肯定是区别版本的)

Linux安装包主流举例 rpm包源代码tar包;rpm包red hat已经帮忙编译配置好了,直接安装即可,所以依赖呀,编译器呀都是特定的版本,所以要安装在相对应的系统和平台上;源码tar包,./configure、make、make install,配置、编译、安装三步骤,编译成二进制安装包的时候,会把系统上的依赖呀,编译器呀,都打进安装包里,所以源码tar包一般适用于多种平台安装。(一般源码tar包的软件版本都是最新的)

程序运行在操作系统上,最终影响程序能否正常运行的包含程序要使用的编译器。

x86架构的处理器,有32位的和64位的,代号x86和x86-64(x64),AMD的是amd64。

华为ARM架构服务器安装举例:
nginx和redis是编译安装,不区分架构;es是rpm安装,使用的aarch架构版本的;mysql是rpm安装,使用的aarch版本的;activemq是二进制安装,不区分架构;jdk二进制安装,区分架构;

软件安装问题总结:
Java服务:不受架构影响(架构问题主要是jdk的工作)
编译:不区分架构
二进制方式:有的区分(jdk)有的不区分(activemq)架构
rpm方式:区分架构

注:文章内容主要是帮助理解,知识点比较细碎,细节问题请自行百度。