您的位置: 首頁 >互聯(lián)網(wǎng) >

特斯拉如何使用開源技術(shù)在現(xiàn)代電網(wǎng)中產(chǎn)生彈性

2020-05-12 15:38:45 編輯: 來源:
導(dǎo)讀 你在一個由電網(wǎng)驅(qū)動的發(fā)光屏幕上閱讀這篇文章,這是有史以來最大和最復(fù)雜的機(jī)器。 它主要建立在20世紀(jì)的技術(shù)之上,是數(shù)百萬互聯(lián)設(shè)備以高度同步的方式共同工作的結(jié)果。 這些元素中的每一個都是根據(jù)物理定律單獨行為的。 但是,整體的實際運作方式有一個謎,甚至連復(fù)雜性理論的專家也會感到困惑。 換句話說,我們在理論上知道電網(wǎng)是如何工作的。 它是大量工程設(shè)備的集合,每個設(shè)備都被編程(就像螞蟻)遵循一定的指令,導(dǎo)致高

你在一個由電網(wǎng)驅(qū)動的發(fā)光屏幕上閱讀這篇文章,這是有史以來最大和最復(fù)雜的機(jī)器。 它主要建立在20世紀(jì)的技術(shù)之上,是數(shù)百萬互聯(lián)設(shè)備以高度同步的方式共同工作的結(jié)果。 這些元素中的每一個都是根據(jù)物理定律單獨行為的。 但是,整體的實際運作方式有一個謎,甚至連復(fù)雜性理論的專家也會感到困惑。 換句話說,我們在理論上知道電網(wǎng)是如何工作的。 它是大量工程設(shè)備的集合,每個設(shè)備都被編程(就像螞蟻)遵循一定的指令,導(dǎo)致高度協(xié)調(diào)的集體行為。 但是如果你想建立一個像特斯拉這樣的現(xiàn)代電網(wǎng)呢? 你可能會希望依靠開源創(chuàng)新來在難以想象的尺度上處理復(fù)雜的電網(wǎng)水平。 換句話說,是彈性的開源。 一群聰明的特斯拉工程師最近在英國的一次會議上透露了這一觀點。 他們在很大程度上依賴一個叫做“數(shù)字雙胞胎”的概念。

正如特斯拉工程師科林·布雷克和珀西·林克(PercyLink)所描述的,數(shù)字孿生是物理物聯(lián)網(wǎng)(物聯(lián)網(wǎng))設(shè)備的表示-就像電池、逆變器或幾乎建模的軟件中的充電器一樣-他們進(jìn)行數(shù)字孿生建模,以表示虛擬電力系統(tǒng)構(gòu)建過程中各種資產(chǎn)的當(dāng)前狀態(tài)和關(guān)系。 開源軟件在Breck和Link的故事中起著核心作用。 因為它們涵蓋了很多(復(fù)雜的)領(lǐng)域,我將簡要地關(guān)注兩個對特斯拉來說很重要的開源項目,以解決復(fù)雜性和確保復(fù)原力:Kubernetes和Akka(來自Lightbend,我在2014年首次寫的一個項目)。 它們在分布式計算和物聯(lián)網(wǎng)如何幫助特斯拉保證網(wǎng)格復(fù)原力方面起著至關(guān)重要的交織作用。

Breck說:“我們的大多數(shù)微型服務(wù)都在Kubernetes運行,Akka和Kubernetes的配對真的很棒?!?Kubernetes可以處理縮放過程中的粗粒度故障,這樣就可以像向上或向下縮放豆莢、運行活性探針,或者重新啟動一個指數(shù)后退的失敗豆莢。 然后,我們使用Akka來處理細(xì)粒度故障,如電路中斷或重試單個請求,并模擬單個實體的狀態(tài),如電池正在充電或放電。

對于軟件中的每個站點建模,這個所謂的數(shù)字雙胞胎,他們用一個演員來代表每個站點。 參與者管理狀態(tài),就像最新報告的來自電池的遙測,并執(zhí)行狀態(tài)機(jī),如果站點離線,遙測延遲,則改變其行為。 它還為分發(fā)、并發(fā)、計算和故障轉(zhuǎn)移管理提供了一個方便的模型。 程序員擔(dān)心在演員中建模一個單獨的站點,然后Akka運行時將其擴(kuò)展到數(shù)千或數(shù)百萬個站點。 特別是對于物聯(lián)網(wǎng)來說,它是一個非常強(qiáng)大的抽象,本質(zhì)上消除了對線程、鎖或并發(fā)錯誤的擔(dān)憂。 較高級別的聚合也由單個參與者表示,參與者與描述這種物理或邏輯聚合的其他參與者保持關(guān)系。 然后,遙測是通過在內(nèi)存中實時向上傳遞層次結(jié)構(gòu)來聚合的,聚合在任何級別上的“實時”實際上只是消息量和延遲之間的權(quán)衡。 特斯拉可以在此層次結(jié)構(gòu)中的任何節(jié)點查詢以知道該位置的聚合值,或者從單個站點查詢最新的遙測數(shù)據(jù)。 它還可以從任何點上下導(dǎo)航層次結(jié)構(gòu)。 執(zhí)行這種實時分層聚合的服務(wù)在Akka集群中運行。 Akka集群允許一組具有不同角色的吊艙透明地相互通信。 第一個roll是一組線性可伸縮的pods,它們將數(shù)據(jù)從Apache Kafka中流出來,它們使用AkkaStreams進(jìn)行背壓、有界資源約束,然后進(jìn)行低延遲流處理。

如果您查看由云計算本地計算基金會贊助的項目和圍繞Kubernetes的項目,它們往往是面向底層基礎(chǔ)設(shè)施和操作的。 您發(fā)現(xiàn)應(yīng)用程序開發(fā)和中間件類型的可能性要小得多。

你需要一種方法來編寫那個應(yīng)用程序。 如果只看Kubernetes生態(tài)系統(tǒng)允許的東西——一組很好的低級工具——那么在如何將所有東西拼接成一個工作應(yīng)用程序方面仍然缺乏工具和指導(dǎo)。 你,開發(fā)人員,被留下來解決這些細(xì)節(jié)。 它不會幫助你編寫服務(wù),也不會幫助你弄清楚一些事情,比如:

他們應(yīng)該如何互動,

如何保持?jǐn)?shù)據(jù)的一致性,

你應(yīng)該如何處理失敗/挫折,

如何將它們編排成整體工作流程,或者

如何維護(hù)端到端的保證和SLA..

當(dāng)您以用戶身份發(fā)送消息時,您希望一直到數(shù)據(jù)庫和返回,或者一直到服務(wù)和返回都有保證。 誰能確保這些端到端的保證? 那是中間件。 正如Breck和Link所描述的,特斯拉使用Akka作為那座橋。

Kubernetes為您提供了空框(docker容器,安排在pods中),以確保它們是可用的和可縮放的,但不太關(guān)心您放入框中的應(yīng)用程序代碼的字符(即是否可用和一致)。 因此Akka和Kubernetes在堆棧的不同層操作,共同提供一個單一的相干系統(tǒng)。

是什么使Akka非常適合特斯拉的用例? 它建立在演員模型上。 這個模型是如何工作的? 從這些超級輕量級、完全隔離和自主的演員/服務(wù)開始,他們能夠輕松地在一臺筆記本電腦上運行數(shù)百萬臺,這給了你一種有趣的方法來模擬特斯拉所做的事情。 這是完美的物聯(lián)網(wǎng)和數(shù)字孿生模式,其中每個物理設(shè)備被映射到一個現(xiàn)場演員。 在自然界中可以找到很好的類比,在自然界中,我們有自組織系統(tǒng),由具有突發(fā)行為的自主“行為者”構(gòu)建,如細(xì)菌或螞蟻。

這些類型的系統(tǒng)自然是非常有彈性的。 電網(wǎng)不能失靈--燈滅了。 或者更糟的是,互聯(lián)網(wǎng)閃爍。


免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!

精彩推薦

圖文推薦

點擊排行

2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082   備案號:閩ICP備19027007號-6

本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。