2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復制必究 聯(lián)系QQ280 715 8082 備案號:閩ICP備19027007號-6
本站除標明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。
你在一個由電網(wǎng)驅(qū)動的發(fā)光屏幕上閱讀這篇文章,這是有史以來最大和最復雜的機器。 它主要建立在20世紀的技術(shù)之上,是數(shù)百萬互聯(lián)設備以高度同步的方式共同工作的結(jié)果。 這些元素中的每一個都是根據(jù)物理定律單獨行為的。 但是,整體的實際運作方式有一個謎,甚至連復雜性理論的專家也會感到困惑。 換句話說,我們在理論上知道電網(wǎng)是如何工作的。 它是大量工程設備的集合,每個設備都被編程(就像螞蟻)遵循一定的指令,導致高度協(xié)調(diào)的集體行為。 但是如果你想建立一個像特斯拉這樣的現(xiàn)代電網(wǎng)呢? 你可能會希望依靠開源創(chuàng)新來在難以想象的尺度上處理復雜的電網(wǎng)水平。 換句話說,是彈性的開源。 一群聰明的特斯拉工程師最近在英國的一次會議上透露了這一觀點。 他們在很大程度上依賴一個叫做“數(shù)字雙胞胎”的概念。
正如特斯拉工程師科林·布雷克和珀西·林克(PercyLink)所描述的,數(shù)字孿生是物理物聯(lián)網(wǎng)(物聯(lián)網(wǎng))設備的表示-就像電池、逆變器或幾乎建模的軟件中的充電器一樣-他們進行數(shù)字孿生建模,以表示虛擬電力系統(tǒng)構(gòu)建過程中各種資產(chǎn)的當前狀態(tài)和關系。 開源軟件在Breck和Link的故事中起著核心作用。 因為它們涵蓋了很多(復雜的)領域,我將簡要地關注兩個對特斯拉來說很重要的開源項目,以解決復雜性和確保復原力:Kubernetes和Akka(來自Lightbend,我在2014年首次寫的一個項目)。 它們在分布式計算和物聯(lián)網(wǎng)如何幫助特斯拉保證網(wǎng)格復原力方面起著至關重要的交織作用。
Breck說:“我們的大多數(shù)微型服務都在Kubernetes運行,Akka和Kubernetes的配對真的很棒。” Kubernetes可以處理縮放過程中的粗粒度故障,這樣就可以像向上或向下縮放豆莢、運行活性探針,或者重新啟動一個指數(shù)后退的失敗豆莢。 然后,我們使用Akka來處理細粒度故障,如電路中斷或重試單個請求,并模擬單個實體的狀態(tài),如電池正在充電或放電。
對于軟件中的每個站點建模,這個所謂的數(shù)字雙胞胎,他們用一個演員來代表每個站點。 參與者管理狀態(tài),就像最新報告的來自電池的遙測,并執(zhí)行狀態(tài)機,如果站點離線,遙測延遲,則改變其行為。 它還為分發(fā)、并發(fā)、計算和故障轉(zhuǎn)移管理提供了一個方便的模型。 程序員擔心在演員中建模一個單獨的站點,然后Akka運行時將其擴展到數(shù)千或數(shù)百萬個站點。 特別是對于物聯(lián)網(wǎng)來說,它是一個非常強大的抽象,本質(zhì)上消除了對線程、鎖或并發(fā)錯誤的擔憂。 較高級別的聚合也由單個參與者表示,參與者與描述這種物理或邏輯聚合的其他參與者保持關系。 然后,遙測是通過在內(nèi)存中實時向上傳遞層次結(jié)構(gòu)來聚合的,聚合在任何級別上的“實時”實際上只是消息量和延遲之間的權(quán)衡。 特斯拉可以在此層次結(jié)構(gòu)中的任何節(jié)點查詢以知道該位置的聚合值,或者從單個站點查詢最新的遙測數(shù)據(jù)。 它還可以從任何點上下導航層次結(jié)構(gòu)。 執(zhí)行這種實時分層聚合的服務在Akka集群中運行。 Akka集群允許一組具有不同角色的吊艙透明地相互通信。 第一個roll是一組線性可伸縮的pods,它們將數(shù)據(jù)從Apache Kafka中流出來,它們使用AkkaStreams進行背壓、有界資源約束,然后進行低延遲流處理。
如果您查看由云計算本地計算基金會贊助的項目和圍繞Kubernetes的項目,它們往往是面向底層基礎設施和操作的。 您發(fā)現(xiàn)應用程序開發(fā)和中間件類型的可能性要小得多。
你需要一種方法來編寫那個應用程序。 如果只看Kubernetes生態(tài)系統(tǒng)允許的東西——一組很好的低級工具——那么在如何將所有東西拼接成一個工作應用程序方面仍然缺乏工具和指導。 你,開發(fā)人員,被留下來解決這些細節(jié)。 它不會幫助你編寫服務,也不會幫助你弄清楚一些事情,比如:
他們應該如何互動,
如何保持數(shù)據(jù)的一致性,
你應該如何處理失敗/挫折,
如何將它們編排成整體工作流程,或者
如何維護端到端的保證和SLA..
當您以用戶身份發(fā)送消息時,您希望一直到數(shù)據(jù)庫和返回,或者一直到服務和返回都有保證。 誰能確保這些端到端的保證? 那是中間件。 正如Breck和Link所描述的,特斯拉使用Akka作為那座橋。
Kubernetes為您提供了空框(docker容器,安排在pods中),以確保它們是可用的和可縮放的,但不太關心您放入框中的應用程序代碼的字符(即是否可用和一致)。 因此Akka和Kubernetes在堆棧的不同層操作,共同提供一個單一的相干系統(tǒng)。
是什么使Akka非常適合特斯拉的用例? 它建立在演員模型上。 這個模型是如何工作的? 從這些超級輕量級、完全隔離和自主的演員/服務開始,他們能夠輕松地在一臺筆記本電腦上運行數(shù)百萬臺,這給了你一種有趣的方法來模擬特斯拉所做的事情。 這是完美的物聯(lián)網(wǎng)和數(shù)字孿生模式,其中每個物理設備被映射到一個現(xiàn)場演員。 在自然界中可以找到很好的類比,在自然界中,我們有自組織系統(tǒng),由具有突發(fā)行為的自主“行為者”構(gòu)建,如細菌或螞蟻。
這些類型的系統(tǒng)自然是非常有彈性的。 電網(wǎng)不能失靈--燈滅了。 或者更糟的是,互聯(lián)網(wǎng)閃爍。
2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復制必究 聯(lián)系QQ280 715 8082 備案號:閩ICP備19027007號-6
本站除標明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。