吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于ARM體系架構構建云服務

架構師技術聯(lián)盟 ? 來源: 架構師技術聯(lián)盟 ? 2023-12-06 10:00 ? 次閱讀

1、概述

隨著IT技術的不斷演進,公有云、專屬云、混合云、云原生等相關技術概念層出不窮,云計算已經有了廣泛應用,成為數(shù)字經濟、政企數(shù)字化轉型的新型基礎設施。 在云計算時代,由于功耗低、高性能以及指令集的優(yōu)勢,越來越多的云廠商開始選擇基于ARM體系來構建云服務。從AWS發(fā)布的Graviton2,到Apple的M1芯片,到中國電子云十年磨一劍的“PK架構”,再到華為鯤鵬體系,ARM體系成為了未來的趨勢方向。 對于企業(yè)數(shù)字化轉型來說,應用上云是必經之路。從狹義來說,上云是將運行在物理機上的應用系統(tǒng)搬遷到云上。從廣義上看,上云會涉及到跨架構適配、虛擬化、容器化、云原生等一系列的技術升級和重構。 上云的不同階段,所依賴的技術并不同。從左至右,應用對云的依存度也越來越高。

wKgZomVv1gCAAKiMAACqI8JOSqk436.png

下文對幾個階段涉及到的技術做簡單闡述。

階段1:跨架構適配

傳統(tǒng)應用大部分是基于X86架構來開發(fā)和運行。面對ARM架構越來越流行的今天,越來越多的云計算廠商開始圍繞ARM架構構建云應用生態(tài)。并據(jù)此引發(fā)了大量的適配測試需求。X86和ARM體系架構的差異對于應用有哪些影響?X86應用向ARM體系遷移會碰到哪些技術難題?對于不同編程語言實現(xiàn)的應用來說,遷移的難度是否有區(qū)別? 本文將針對以上問題開展分析。

階段2:虛擬化

計算虛擬化能力是云計算提供的核心能力。截至到今天,很多行業(yè)用戶的上云還是停留在這個階段。虛擬化的最大用途是使得應用與物理機器解耦,將資源池化,按需分配資源,并因此獲得彈性伸縮和遷移能力。這個階段的上云,往往會涉及到P2V和V2V這兩種主要場景。前者是從物理機向虛擬機遷移(Physical to Virtual Migration)),后者是虛擬化的跨云遷移(Virtual Machine to Virtual Machine)。

階段3:容器化

容器化是將應用程序及其所需的庫、框架和配置文件打包在一起的過程,以便可以在各種計算環(huán)境中高效運行它。得益于Docker等技術的流行,應用容器化更進一步促進了應用的配置、依賴以及鏡像的標準化,使得應用交付、運維等領域有極大的提升。這個階段的上云,對于軟件開發(fā)過程有一定的要求,需遵循相應的容器化規(guī)范。

階段4:云原生

云原生時代的到來,是容器化后的必然階段。通過Kubernetes、devops、微服務等技術的不斷發(fā)展,尤其是對有狀態(tài)應用支撐能力的不斷增強,云原生已然成為新一代應用開發(fā)的事實標準。 技術的發(fā)展有天才工程師的靈光一現(xiàn),其背后同樣也需要遵循客觀自然規(guī)律。下文將從階段1入手,嘗試從底層技術進行解構,或許能幫助我們更清晰的看到本質。

2、跨越CPU架構

縱觀計算機技術的發(fā)展史,軟件系統(tǒng)是一個不斷抽象,不斷疊加的過程。操作系統(tǒng)的出現(xiàn),解決的是單機硬件多樣性的難題,為上層應用軟件提供一致的底層運行環(huán)境。云計算的出現(xiàn),解決的是分布式架構引入的多樣性問題,為應用提供跨機器、跨地域的一致運行環(huán)境。 我們先從CPU指令集的差異對比開始。

2.1 CPU指令集對比

在計算機體系結構的發(fā)展過程中,誕生了CISC(復雜指令集)和RISC(精簡指令集)這兩大流派,它們采用了不同的設計理念和方法,CISC采用單條復雜指令完成特定復雜功能,提高了存儲器訪問效率;RISC則采用多條精簡短指令完成特定復雜功能,提高了處理器運行速度。基于這兩類指令集,產生了兩種主流的CPU架構:X86架構,采用的是CISC復雜指令集,而ARM架構則采用了RISC精簡指令集。 CISC指令集指令系統(tǒng)龐大,指令數(shù)目、指令格式和尋址方式復雜,指令字長不固定,各種指令執(zhí)行周期和訪問頻率相差很大,采用微指令碼控制單元的設計。 RISC指令集選取使用頻率最高的精簡指令,避免復雜指令,將指令數(shù)目、指令格式和尋址方式種類減少,指令長度固定,大多數(shù)的指令都可以在一個機器周期里完成。以控制邏輯為主,不用或者少用微指令碼控制。

2.2對應用遷移的影響

應用本質上是一種程序,程序在運行態(tài)是由一系列進程組成,而進程可以說是計算機科學最重要和最成功的概念之一。進程的運行依賴操作系統(tǒng)對CPU、內存的調度和管理,操作系統(tǒng)保持跟蹤進程運行所需的所有狀態(tài)信息。比如寄存器、PC計數(shù)器、邏輯單元ALU等。 綜合來說,X86 和ARM屬于不同的架構。X86屬于復雜指令集,而ARM屬于精簡指令集, X86 上的程序根本不可能毫無阻礙地就可以在ARM上使用,必須經過適配遷移。 從另外的角度來看,應用選擇不同的編程語言,會有不同的跨架構能力。下面分析下主流的C++Java應用在不同架構下的差異表現(xiàn)。

2.3.1 C/C++語言

眾所周知,C/C++程序是計算機系統(tǒng)級別最為成功的語言之一。業(yè)界存在大量的知名開源軟件基于C/C++構建,比如Windows/Linux操作系統(tǒng)自身,以及使用廣泛的分布式存儲系統(tǒng)Ceph。 在C/C++世界里,從源代碼演變成運行中的進程,需要經歷編譯、匯編、鏈接、運行等一系列過程。

a) Step 1編譯

編譯是將源代碼經過處理,轉變成匯編語言的過程。這一過程的關鍵工具是編譯器。有了編譯器的存在,現(xiàn)代編程語言(如C++)的源代碼一般能做到架構無關,通過不同平臺編譯器(如GCC)的處理,可以得到不同體系結構下的匯編代碼。 舉例如下源代碼:

wKgaomVv1gCAbkfCAABU13E2KFw379.png

在X86平臺編譯器編譯后,得到匯編代碼如下:

wKgaomVv1gCAHZrJAAFc9YFyyM4298.png

備注:以上mov、push等均為X86體系架構匯編指令。 在ARM平臺編譯后,得到匯編代碼如下:

wKgaomVv1gCANMqLAAILDdSy_uo062.png

備注:以上mov,STR,LDR均為ARM架構匯編指令。 匯編指令的簡單對比如下:

wKgZomVv1gCAadniAAANomL90Is444.png

僅從常用指令集名稱來看,兩者比較相似,但實際大相徑庭。

舉例說明,在ARM指令中,MOV與ADD之間需要通過STR和LDR兩條指令完成數(shù)據(jù)從內存往寄存器的加載,其原因是ARM算術指令只能運行在寄存器,而X86則無此限制。

其他差異本文不再一一分析。

由此可以看出,X86和ARM架構的指令集差異很大,對于C++語言來說,編譯器幫我們搞定這些差異,但需要從源代碼重新編譯。

b) Step 2 匯編

匯編是將匯編代碼轉變成機器代碼的過程。以上匯編代碼在X86平臺下,得到的機器代碼如下:

wKgZomVv1gCAJm86AAOiAdQHVp0272.png

備注:以上為局部截圖。 而在ARM平臺下,得到的機器代碼會完全不同。

c) Step 3 鏈接

鏈接在C++語言特有的處理機制,將OS里的鏈接庫與程序進行鏈接的過程。這一過程的輸出物即為可執(zhí)行程序。最終的運行,對于C++和Java來說,通常都有Main函數(shù)作為程序的運行入口(某些框架會對其進行封裝,如Java Spring框架)。

綜合以上,對于C/C++開發(fā)的應用程序來說,向ARM架構遷移需要完成重新完成編譯、匯編、鏈接的全過程,應用跨架構遷移的難度較大。

2.3.2 Java語言

Java語言在Web應用開發(fā)占據(jù)絕對的主導地位。Java是基于虛擬機的語言,也是所謂提供跨平臺運行能力的語言。Java應用從源代碼到運行,需經歷編譯、運行兩個環(huán)節(jié)。 **

a) Step 1 編譯

使用javac命令進行編譯,通常得到java字節(jié)碼文件,以.Class后綴命名的文件。

以下面的代碼為例。

wKgZomVv1gCAF1YAAABi1CqFTOM362.png

X86環(huán)境編譯得到的字節(jié)碼如下:

wKgaomVv1gCAbcH8AARUIqXmw3w290.png

備注:以上為局部截圖。

ARM機器上編譯,得到如下字節(jié)碼:

wKgZomVv1gGAEPMqAASAgD9vQQg828.png

經比較,會發(fā)現(xiàn)兩者得到的字節(jié)碼基本一致。

b) Step 2 執(zhí)行

Java體系為X86和ARM分別提供了不同的JVM。在運行時,JVM通過類加載器執(zhí)行以上字節(jié)碼文件。

備注:實際運行時,JVM會將字節(jié)碼轉換成機器碼來運行,這個過程暫且忽略不表。

綜合來看,對于Java應用來說,X86和ARM架構的差異完全由JVM層屏蔽,應用跨架構遷移的難度很小。

上文主要從CPU架構差異、編程語言差異的角度來分析對應用的影響。下面結合中國電子云的實際上云案例來做進一步的闡述。

3、藍信上云實踐

藍信是中國電子云上運行的重量級應用之一,作為中國電子云“一云一端”的戰(zhàn)略組成部分,提供安全可靠的企業(yè)消息通訊、視頻會議和協(xié)同辦公能力,在政企市場有著廣泛的應用場景。

3.1 藍信對中國電子云的適配過程

藍信原生是構建在X86體系架構下的,針對中國電子云底層采用PKS架構,需要做整個系統(tǒng)的適配,主要工作體現(xiàn)以下幾點:

1)針對體系架構改變的適配

代碼級重新編譯以適配ARM架構,由于目前流行的開發(fā)語言早已對ARM體系進行過適配(例如,golang,java,c/c++, python等)這部分工作難度不大。

2)數(shù)據(jù)庫的適配

數(shù)據(jù)庫部分,藍信需要從MySQL遷移到達夢數(shù)據(jù)庫,由于達夢數(shù)據(jù)庫對MySQL語句的良好支持,只有部分語法存在兼容性問題,僅需在數(shù)據(jù)層進行適配,業(yè)務層并不需要改動,整體適配可在一個月內完成,其中主要成本集中在適配后的全量功能測試上。

3)基礎設施及中間件的適配

藍信依賴的基礎設施及中間件也需要適配,例如etcd,k8s,redis,kafka,mongoDB等,這部分工作由于大部分基礎組件已經有了ARM版本,直接使用即可,極個別的組件,需要進行源碼級的編譯。

4、總結和思考

在當前數(shù)字產業(yè)大發(fā)展的背景下, 對ARM架構的關注必然會不斷升溫,各行業(yè)會出現(xiàn)大量應用從X86向AMR架構遷移,也催生了大量的應用跨架構適配測試需求。 通過前文的分析,我們可以得出如下結論:

1、X86架構和ARM架構的確存在較大差異。兩者在指令集、寄存器等方面均有很大的不同,但對于應用系統(tǒng)的移植來說,并非是不可逾越的鴻溝;

2、應用開發(fā)采用的不同編程語言,會導致跨架構移植難度絕然不同。C/C++等系統(tǒng)級語言所編寫的應用程序,其移植需要經過重新編譯、鏈接、運行等全過程,難度相對較大;而以Java為代表的虛擬機語言則具備良好的跨平臺移植性;而對于Python、JavaScript等腳本型語言來說,移植難度會更小。從這個角度來看,在云計算環(huán)境下開發(fā)應用程序,建議優(yōu)先選擇跨架構友好的編程語言。

3、在大型應用系統(tǒng)遷移實踐中,需要深入分析系統(tǒng)架構,有針對性的設計遷移方案。

完成跨CPU架構遷移只是一小步,對于應用來說,如何借助云計算實現(xiàn)更好的可部署性、可伸縮性、便捷運維以及高并發(fā)帶來的性能挑戰(zhàn),值得不斷的探索。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9165

    瀏覽量

    369187
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10902

    瀏覽量

    213002
  • 云計算
    +關注

    關注

    39

    文章

    7859

    瀏覽量

    137862
  • X86
    X86
    +關注

    關注

    5

    文章

    295

    瀏覽量

    43560

原文標題:從X86到ARM,跨越CPU架構鴻溝

文章出處:【微信號:架構師技術聯(lián)盟,微信公眾號:架構師技術聯(lián)盟】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    網(wǎng)絡安全體系基礎架構建

    網(wǎng)絡安全體系基礎架構建設知識 ? ?
    的頭像 發(fā)表于 09-11 09:36 ?1982次閱讀
    網(wǎng)絡安全<b class='flag-5'>體系</b>基礎<b class='flag-5'>架構建</b>設

    基于阿里數(shù)加MaxCompute的企業(yè)大數(shù)據(jù)倉庫架構建設思路

    建設,各集市之間是垂直構建的,需要能夠快速試錯,深度挖掘數(shù)據(jù)價值。 基于阿里數(shù)加搭建大數(shù)據(jù)倉庫 基于阿里數(shù)加搭建大數(shù)據(jù)倉庫的整個業(yè)務流程如下所示: 阿里的數(shù)加
    發(fā)表于 03-15 12:43

    阿里推出內部操作透明化服務 為用戶提供全棧數(shù)據(jù)保護體系

    產品和服務中,幫助企業(yè)提升整體安全水位,構建時代的企業(yè)安全架構。“隨著數(shù)字經濟時代越來越多的企業(yè)上,每個企業(yè)都會基于云原生安全能力構筑下
    發(fā)表于 09-29 15:27

    如何對ARM+DSP體系架構進行調試?

    ARM+DSP系統(tǒng)體系結構是怎樣的?ARM+DSP系統(tǒng)工作流程及特點是什么?如何對ARM+DSP體系架構
    發(fā)表于 04-28 06:29

    基于ARM和Linux的嵌入式Web服務器的構建及應用

    摘要:本文主要研究了基于ARM和Linux的嵌入式Web服務器的構建及應用.隨著互聯(lián)網(wǎng)的飛速發(fā)展,越來越多的信息化產品需要接入互聯(lián)網(wǎng)并通過Web頁面進行遠程訪問和控制,嵌入式Web服務
    發(fā)表于 11-05 06:07

    ARM體系架構基本概念

    1.基本概念ARM體系架構版本:即其所使用的指令集的版本。ARM架構支持32位ARM指令集和1
    發(fā)表于 01-25 06:14

    求一種在Arm服務器上Robox安卓容器的構建與使用方案

    1、在Arm服務器上Robox安卓容器方案的構建編譯過程和使用方法隨著計算相關產業(yè)蓬勃發(fā)展,用戶對移動設備的彈性需求推動出手機、云游戲等
    發(fā)表于 06-17 14:34

    計算在農業(yè)信息服務應用模式構建

    圍繞農業(yè)信息服務的海量數(shù)據(jù)存儲與大規(guī)模數(shù)據(jù)計算問題,資源獲取的便捷性、安全性、可靠性和低成本問題,結合農業(yè)信息服務自身特點,按照計算平臺架構和面向
    發(fā)表于 10-09 15:52 ?17次下載
    <b class='flag-5'>云</b>計算在農業(yè)信息<b class='flag-5'>服務</b>應用模式<b class='flag-5'>構建</b>

    基于計算的農業(yè)信息服務應用模式構建

    圍繞農業(yè)信息服務的海量數(shù)據(jù)存儲與大規(guī)模數(shù)據(jù)計算問題,資源獲取的便捷性、安全性、可靠性和低成本問題,結合農業(yè)信息服務自身特點,按照計算平臺架構和面向
    發(fā)表于 12-14 11:09 ?3次下載
    基于<b class='flag-5'>云</b>計算的農業(yè)信息<b class='flag-5'>服務</b>應用模式<b class='flag-5'>構建</b>

    華為首款Arm架構服務器CPU鯤鵬920,業(yè)界最高性能Arm架構服務器CPU

    TaiShan系列服務器主要面向大數(shù)據(jù)、分布式存儲和ARM原生應用等場景,發(fā)揮ARM架構在多核、高能效等方面的優(yōu)勢,為企業(yè)構建高性能、低功耗
    的頭像 發(fā)表于 01-09 09:39 ?1.2w次閱讀

    米爾科技ARM處理器體系架構介紹

    ARM 體系結構是構建每個 ARM 處理器的基礎。ARM 體系結構隨著時間的推移不斷發(fā)展,其中包
    的頭像 發(fā)表于 11-20 10:04 ?5625次閱讀
    米爾科技<b class='flag-5'>ARM</b>處理器<b class='flag-5'>體系</b><b class='flag-5'>架構</b>介紹

    計算的體系架構_計算的應用領域有哪些

    本文主要介紹了計算的體系架構計算的應用領域。
    發(fā)表于 04-24 10:01 ?4526次閱讀

    Works on Arm計劃讓開發(fā)者通過主流服務使用Arm架構實例

    通過使用基于 Arm 架構的平臺,這些項目將能夠縮短構建時間,并且能夠運行廣泛的測試套件,包括更優(yōu)異的回歸測試和問題修復,以及性能基準測試與優(yōu)化。Arm 正在為提升開發(fā)者的整體體驗奠定
    的頭像 發(fā)表于 11-10 14:21 ?740次閱讀

    華納淺析海外服務器的3種體系架構:SMP、NUMA、MPP

    華納淺析海外服務器的3種體系架構:SMP、NUMA、MPP
    的頭像 發(fā)表于 12-14 11:09 ?1337次閱讀

    服務架構與容器的關系與區(qū)別

    服務架構與容器密切相關又有所區(qū)別。微服務將大型應用拆分為小型、獨立的服務,而容器基于容器技
    的頭像 發(fā)表于 10-21 17:28 ?282次閱讀
    龙虎斗游戏| 申扎县| 环球百家乐娱乐城| 博彩通百家乐概率| 真人百家乐官网出售| 同乐城百家乐官网现金网| 和记国际娱乐| 百家乐创立几年了| 威尼斯人娱乐城打造| 金宝博网址| 马牌百家乐官网娱乐城| 百家乐官网出牌规| 金宝博百家乐娱乐城| 百家乐园首选| 威尼斯人娱乐场有什么玩 | 阴宅24水口| 金彩百家乐的玩法技巧和规则| 新葡京娱乐城怎么样| 百家乐官网黑牌靴| 百家乐官网轮盘一体机厂家| 叶氏百家乐平注技巧| 大发888怎么找不到了| 百家乐官网最好的投注法| 百家乐官网娱乐下载| 百家乐任你博娱乐网| 516棋牌游戏下载| 百家乐官网787| 百家乐官网游戏必赢法| 24楼层风水| 大发888优惠| 哪里有百家乐官网赌博网站| 邯郸百家乐园真钱区| 大发888大发888娱乐游戏| 真人百家乐官网破解软件下载| 玩百家乐技巧看路| 棋牌新闻| 百家乐官网必胜法技巧| 罗浮宫百家乐的玩法技巧和规则 | 网络百家乐赌场| 天堂鸟百家乐官网的玩法技巧和规则| 金木棉百家乐网络破解|