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