Tesla VPP 虛擬電廠

London 2020 QCon 技術(shù)演講


全扭矩起步晾蜘、實時動力響應(yīng)构舟,電池儲能Stand By可以在更大規(guī)模更大范圍的電網(wǎng)當(dāng)中運用灾杰,對電力低谷可以快速支撐、對高峰可以高效消納是新能源應(yīng)用之道


電馬電池保證在8年或者16萬公里的使用年限/里程之內(nèi)逢艘,不低于初始70%的電量

Colin Breck 和 Percy Link 將帶大家探索特斯拉VPP虛擬電廠的架構(gòu)演進(jìn)哨颂,VPP物理上是一個分布式電源網(wǎng)絡(luò)(包括solar光伏瓷患、wind風(fēng)電、batteries電池儲能乃至于電動車)塑猖,VPP用軟件將這些分布式電源聚合起來竹祷、對外整體提供更智能更靈活的發(fā)電、配電和可用性羊苟,所以VPP可以看作為是一個聚合系統(tǒng)(不同于系統(tǒng)集成塑陵、ESB,這是一種全新系統(tǒng)架構(gòu)蜡励,與ESB不同在于它本身有很重的業(yè)務(wù)邏輯令花,只是同時還有很重的對外交互,對外交互部分相當(dāng)于ESB的量級且交織在業(yè)務(wù)邏輯流程當(dāng)中凉倚,實際上它就是當(dāng)下的微服務(wù)架構(gòu))兼都,由垂直整合的硬件和軟件組合集成而成,包括云和邊緣計算稽寒。

Transcript

Link:電網(wǎng)是人類有史以來創(chuàng)造的最大最復(fù)雜的機器俯抖,這是一項了不起的工程壯舉,能提供可靠瓦胎、安全芬萍、按需供電。這個電網(wǎng)是建立在20世紀(jì)的技術(shù)基礎(chǔ)上的搔啊,有大型集中式化石燃料發(fā)電柬祠,只有幾個控制點。我們現(xiàn)在面臨著一項迫切的挑戰(zhàn)负芋,即過渡到放棄化石燃料欠雌,以防止氣候變化杂拨。幸運的是,我們現(xiàn)在也有了新的工具。像光伏琅翻、風(fēng)電和水電這樣的清潔能源價格低廉而且越來越便宜。但是:單獨依靠這些新能源不足以取代化石燃料蛇券、是無法獨立支撐像現(xiàn)在這個可靠電網(wǎng)的(電網(wǎng)可靠性會明顯下降缔恳,參考美帝德州冰風(fēng)暴大停電。直接說結(jié)論:新能源發(fā)電具有間歇性和隨機性病袄,高比例新能源并網(wǎng)需要大規(guī)模輸出穩(wěn)定的可調(diào)節(jié)電源進(jìn)行調(diào)峰)

Breck:軟件是聚合各種組件并與電網(wǎng)協(xié)作的關(guān)鍵搂赋,我們用軟件可以實現(xiàn)的是將人們家中的數(shù)千個小電池/電動車聚集在一起赘阀、作為分布式電源、創(chuàng)建虛擬發(fā)電廠脑奠,為電網(wǎng)基公、家庭或企業(yè)提供價值。它結(jié)合了分布式計算中一些最有趣和最具挑戰(zhàn)性的問題宋欺,以及分布式可再生能源中一些最具挑戰(zhàn)性的問題轰豆。這就是我們在特斯拉工作的原因。我們將致力于這些令人興奮的軟件挑戰(zhàn)齿诞,同時也將加速世界向可再生能源的過渡秒咨。我們將帶您經(jīng)歷特斯拉虛擬發(fā)電廠的演變,并分享分布式計算和物聯(lián)網(wǎng)的架構(gòu)掌挚、模式和實踐雨席,幫助我們應(yīng)對這些復(fù)雜和令人興奮的挑戰(zhàn)。

Link:我是Percy [Link]. 技術(shù)團(tuán)隊leader吠式,我們團(tuán)隊負(fù)責(zé)構(gòu)建Tesla's 能源優(yōu)化和電力交易市場平臺陡厘。

Breck:我是Colin[Breck]. 我領(lǐng)導(dǎo)團(tuán)隊構(gòu)建并運維Tesla能源IoT云平臺. 在我們開始之前先聲明一下。我們不代表特斯拉說話特占,我們只是代表我們的個人經(jīng)歷糙置。

How does The Grid Work?

Link:首先先介紹一些關(guān)于電網(wǎng)如何工作的背景知識,以及電池在其中的角色是目,以便您能夠理解軟件問題谤饭。電網(wǎng)的棘手之處在于:供需必須實時匹配 supply and demand have to match in real-time,否則頻率和電壓可能會偏離懊纳、損壞設(shè)備并導(dǎo)致停電揉抵。電網(wǎng)本身沒有儲存電力的能力,所以電力供給側(cè)和需求側(cè)兩端需要某種控制嗤疯,以時刻保持供需平衡冤今。老式集中式化石燃料發(fā)電可以根據(jù)需求增減電力供應(yīng),需要控制的發(fā)電廠數(shù)量相對較少茂缚,這使得維持平衡相對簡單戏罢。隨著更多的可再生能源進(jìn)入電網(wǎng),情況開始變化脚囊,首先:可控性顯著降低龟糕,發(fā)電量不可能輕易跟上需求量,我們也不想減少發(fā)電量(棄風(fēng)棄光)否則我們就會失去這些清潔電量悔耘。第二讲岁,不確定性和快速變化。清潔能源無法精確預(yù)測,更不用說還可能快速地變化波動催首。第三,分布泄鹏。分布式電源會帶來許多獨立郎任、互相隔離的小型發(fā)電機(一盤散沙很難協(xié)調(diào)控制,需要聚合)

? 在一個包含大量風(fēng)電光電電源的電網(wǎng)當(dāng)中备籽,供電高峰和用電高峰在時間上可能完全不匹配舶治,這種偏差會導(dǎo)致電能盈余過剩和緊缺不足,而且變化還可能非吵碘快霉猛。幸好我們有電化學(xué)儲能:電池,電池可以在電能過剩時充電珠闰、在緊缺時放電惜浅,電池的響應(yīng)非常快(想想UPS和電動車的瘋狂加速能力)伏嗜,可以勝任填補這種偏差(比較之下抽水儲能的響應(yīng)速度就不夠了)足以抵消任何快速波動和不平衡坛悉。這種快速反應(yīng)實際上甚至是一種創(chuàng)新,一種超越舊電網(wǎng)的機會承绸!這不僅僅是一種妥協(xié)裸影。

? 要實現(xiàn)這些,需要安裝巨型電池军熏,電池容量相當(dāng)于典型的煤炭或天然氣發(fā)電廠轩猩,電池在整個場景當(dāng)中是關(guān)鍵。我們也可以利用家庭當(dāng)中已經(jīng)安裝的小一些的電池比如備用電源荡澎、家庭太陽能配套電池等均践,我們可以用這些小電池和太陽能將家庭和企業(yè)聚合成虛擬的發(fā)電廠。本次演講當(dāng)中摩幔,我們會帶你領(lǐng)略VPP帶給Tesla能源平臺的進(jìn)化浊猾,分為四個階段,每個階段都為下一階段奠定基礎(chǔ).热鞍,我們從 Tesla能源平臺開始葫慎,之后講一下我們是如何學(xué)習(xí)參與能源市場、以及我們?nèi)绾螌W(xué)習(xí)開發(fā)軟件來對一個電池建模薇宠、在世界上最大的電池上做這個算法偷办。然后說說我們的第一個VPP.? 我們從中學(xué)習(xí)到了如何聚合并且近實時地直接控制上千個家用電池。最后我們聊聊怎么把這一切聚合起來參與到能源市場澄港。

Tesla Energy Platform

Breck:Tesla能源平臺的架構(gòu)對2C居民用戶和2B工業(yè)用戶都要考慮到椒涯,對居民用戶平臺要支持比如power wall電力墻電池(特斯拉產(chǎn)品,停電時可以為家庭提供數(shù)小時或數(shù)日的備用電源)回梧、solar roof太陽能屋頂(特斯拉產(chǎn)品)废岂,它和power wall搭配可以提供不止是備份電源同時也最大化利用太陽能的產(chǎn)品組合(考慮近期的得克薩斯冰風(fēng)暴祖搓、氣候變化導(dǎo)致的中美超級寒潮都會更頻繁:夏天更熱冬天更冷,讓這些產(chǎn)品更具吸引力)

?? Tesla能源平臺是一個集成產(chǎn)品湖苞,聚合了光伏拯欧、儲能,除此以外還創(chuàng)造性提供如Storm Watch(特斯拉服務(wù)财骨,為用戶提供風(fēng)暴潮镐作、冰凍預(yù)警)這種服務(wù),當(dāng)風(fēng)暴接近時可以自動為你的powerwall充滿電隆箩。用戶可以在移動app上體驗該系統(tǒng)的實時性能该贾,用戶還可以在app上控制一些行為,比如在低成本時間優(yōu)先充電捌臊。

? 對于2B端工業(yè)客戶杨蛋,Tesla能源平臺支持用于大規(guī)模儲能的power pack和megapack等產(chǎn)品,以及工業(yè)級太陽能理澎。用戶可以用PowerHub軟件平臺實時監(jiān)控系統(tǒng)性能六荒,或者查詢數(shù)天、數(shù)周甚至數(shù)年的歷史性能》耍現(xiàn)在掏击,這些光伏、儲能秩铆、運輸和充電功能都具備一個邊緣計算平臺砚亭。這個邊緣計算平臺和各種傳感器/控制器交互,比如逆變器殴玛、總線控制器和power stages.

? Tesla能源平臺運行一個完整的Linux操作系統(tǒng)捅膘,并提供本地數(shù)據(jù)存儲、計算和控制滚粟,同時還通過WebSocket與云保持雙向流式bi-directional通信寻仗,因此它可以定期向云發(fā)送一些應(yīng)用的量測數(shù)據(jù),頻率高達(dá)每秒一次凡壤。它也可以接收云端下達(dá)的控制命令署尤。我們主要關(guān)注的是云上的IoT物聯(lián)網(wǎng)平臺:Tesla能源平臺。

? Tesla能源平臺的基礎(chǔ)一是線性可擴(kuò)展的WebSocket前端亚侠,它負(fù)責(zé)連接和安全曹体。它背后有一個Kafka集群,用于接收來自數(shù)百萬物聯(lián)網(wǎng)設(shè)備的大量遙測數(shù)據(jù)硝烂。Kafka可以持久化消息箕别、解耦數(shù)據(jù)生產(chǎn)者和消費者、支持跨多個下游服務(wù)共享遙測數(shù)據(jù),還有一個發(fā)布訂閱服務(wù)串稀,支持雙向的指令傳輸來監(jiān)控IoT設(shè)備除抛。這三個服務(wù)一起作為整個Tesla的共享基礎(chǔ)設(shè)施,在之上我們可以構(gòu)建高層服務(wù)(比如下面即將講到的AutoBidder編排微服務(wù))母截,另外還有一些面向最終用戶的應(yīng)用到忽。

? 能源產(chǎn)品的APIs大致分為三部分:第一個是用于從設(shè)備查詢遙測告警和事件的APIs,可以按時序?qū)⑺鼈兇骰⒊辍5诙€APIs是資產(chǎn)管理服務(wù)绘趋,描述能源資產(chǎn)和這些資產(chǎn)之間關(guān)系颤陶,第三個是用于指揮和控制電池等設(shè)備的APIs】殴埽現(xiàn)在,這些api的后臺服務(wù)由大約150個多種語言的微服務(wù)組成滓走,太多了垦江,在本文中無法詳細(xì)描述。我只提供對每個領(lǐng)域微服務(wù)的概述搅方。

? 我們將在稍后研究虛擬電廠時深入研究其中的一些問題比吭。主要還是介紹在物聯(lián)網(wǎng)規(guī)模下處理實時數(shù)據(jù)的挑戰(zhàn)。想象當(dāng)每個人家里都安裝了電池姨涡。要支持交互式查詢和遙測數(shù)據(jù)匯總衩藤,這些查詢包括過去一天或一周的電力輸出是多少,我們使用了InfluxDB涛漂,這是一個專用的開源時間序列數(shù)據(jù)庫赏表,我們的目標(biāo)是客戶可以隨時查詢歷史數(shù)據(jù)。我們開發(fā)了很多低延遲流式服務(wù)匈仗,用于數(shù)據(jù)入庫和轉(zhuǎn)換ETL瓢剿。在一開始我們就創(chuàng)建了規(guī)范化的Kafka主題,進(jìn)入其中的數(shù)據(jù)經(jīng)過過濾清洗成為嚴(yán)格規(guī)范的數(shù)據(jù)格式悠轩,這是最佳實踐间狂,這樣下游消費服務(wù)得到的都是統(tǒng)一的規(guī)范數(shù)據(jù)。這里的一個獨特挑戰(zhàn)就是流式遙測數(shù)據(jù)的實時聚合火架,這些數(shù)據(jù)來自上千個電池鉴象,我們會詳細(xì)剖析這個服務(wù)因為它是VPP的基礎(chǔ)之一。

? 資產(chǎn)管理服務(wù)有四個目標(biāo):一是把各種業(yè)務(wù)系統(tǒng)抽象統(tǒng)一到一個一致的API.? 二是提供數(shù)據(jù)的唯一源端何鸡,有沖突數(shù)據(jù)的時候以他為準(zhǔn)炼列。三是提供了一種類型系統(tǒng),應(yīng)用程序可以依賴于相同類型設(shè)備(如電池)的相同屬性音比。第四它描述了能源資產(chǎn)之間唯一的關(guān)聯(lián)關(guān)系俭尖,比如哪些設(shè)備可以與哪些設(shè)備相互通訊、誰可以控制什么設(shè)備。該服務(wù)完全依賴于Postgres 數(shù)據(jù)庫來描述關(guān)聯(lián)關(guān)系(傳統(tǒng)關(guān)系庫負(fù)責(zé)關(guān)聯(lián)關(guān)系)稽犁,我們用Kafka集成各種業(yè)務(wù)系統(tǒng)的變更焰望,直接從IoT設(shè)備采集變更,系統(tǒng)規(guī)模伸縮的時候這樣更可靠已亥,因為設(shè)備本身往往是最可靠的數(shù)據(jù)來源熊赖,自我報告它們的配置、狀態(tài)和關(guān)系虑椎。Digital twin數(shù)字孿生是一種對物理設(shè)備如電池震鹉、逆變器、充電器在軟件中進(jìn)行虛擬建模的表達(dá)方式捆姜,我們做了大量的數(shù)字孿生建模來表示各種資產(chǎn)的當(dāng)前狀態(tài)和關(guān)系(用Akka)

? 最后還有一些服務(wù)負(fù)責(zé)對IoT設(shè)備下達(dá)指令做控制传趾,比如命令電池在某個電力設(shè)定條件下持續(xù)放電特定時間。類似遙測和資產(chǎn)泥技,我們需要一種實時表達(dá)方式浆兰、表達(dá)大規(guī)模的、有狀態(tài)的珊豹、時刻接收流式數(shù)據(jù)的物聯(lián)網(wǎng)設(shè)備簸呈。還要考慮到通過網(wǎng)絡(luò)控制IoT設(shè)備的不確定性、對這種不確定也要建模表達(dá)(聚合系統(tǒng)對各種級別上的容錯店茶、時序蜕便、狀態(tài)提出了更高要求)

Akka登場

? Akka是整個微服務(wù)系統(tǒng)的核心,Akka可以看做是一個用于構(gòu)建分布式計算的工具集贩幻,它倡導(dǎo)actor模型轿腺,這是建立獨立實體狀態(tài)的最佳模型沒有之一,actor提供了基于全異步段直、不變消息的并發(fā)并行開發(fā)模型吃溅,對于IoT來說actor模型確實超棒,我會演示一些例子鸯檬。另一個我們大量使用的Akka功能組件是反應(yīng)式流Akka Streams.? 它提供一系列復(fù)雜原語(與業(yè)務(wù)完全無關(guān)的精簡指令)用于flow control流控决侈、concurrency并發(fā)、data management數(shù)據(jù)管理喧务,而且全都自帶反壓backpressure(構(gòu)建真正高可靠系統(tǒng)的核心要素)赖歌,這樣可以確保服務(wù)具備有界資源約束,一般來說功茴,所有開發(fā)人員開發(fā)的都只是個函數(shù)庐冯,由Akka Streams來處理所有的系統(tǒng)動態(tài)、進(jìn)程的隨需伸縮坎穿,以此自適應(yīng)系統(tǒng)和消息容量的變化展父。

? Alpakka子項目提供大量Reactive Streams反應(yīng)式流接口返劲,用于鏈接Kafka or AWS S3,我們大量使用Alpakka來與Kafka 交互栖茉,我們實際上沒有直接使用Kafka streams篮绿,因為我們發(fā)現(xiàn)它的接口太簡陋了,而且是生態(tài)圈鎖定的吕漂,Akka Streams則提供了更通用的流式工具亲配。就像任何的大型平臺一樣,我們也有混合使用各種語言惶凝,但是我們的首選是Scala. 因為它是Akka的開發(fā)語言吼虎,之后我們愛死了這個語言豐富的類型系統(tǒng),我們也成了函數(shù)式編程的超級粉苍鲜,我們用函數(shù)式構(gòu)建大型復(fù)雜分布式系統(tǒng)思灰。我們喜歡編譯時安全、不可變性坡贺、純函數(shù)官辈、組合箱舞、還有把錯誤建模為數(shù)據(jù)而不是拋出異常這些讓人見微知著的細(xì)節(jié)遍坟。

? 對于小團(tuán)隊,深入掌握一門首選語言及其生態(tài)圈最高效的工具能讓你生產(chǎn)力爆棚晴股、工作變得順滑愿伴、復(fù)雜系統(tǒng)整體質(zhì)量提升。我們主要的微服務(wù)運行在Kubernetes电湘,Akka 和K8s 的搭配不能再贊了

? 1. Kubernetes可以處理coarse-grained粗粒度失效隔节,比如pods上線下線、運行或重啟寂呛;

? 2. Akka可以處理fine-grained細(xì)粒度失效比如circuit breaking或者是重試一個請求怎诫、還有對實體狀態(tài)的建模比如電池的充放電;

? 3. Akka Streams則用于處理實時消息流贷痪;一開始平臺使用原始的 HTTP 和 JSON 幻妓,有利于快速開發(fā),近兩年我們轉(zhuǎn)向了gRPC劫拢,我們選對了肉津。

? gRPC現(xiàn)在是我們開發(fā)新服務(wù)的首選,對舊服務(wù)的擴(kuò)展也用它舱沧,它帶來三方面好處:嚴(yán)格的格式協(xié)議妹沙,使得系統(tǒng)更可靠;客戶端代碼生成很方便熟吏;最后有點出乎預(yù)料的好處是我們看到因為有嚴(yán)格格式協(xié)議跨團(tuán)隊協(xié)作改善了很多距糖,我們不只是在gRPC上看到這個玄窝,因為我們也用protobuf做流式消息格式,包括Kafka上的消息悍引,我們有一個共享倉庫哆料,格式協(xié)議放在上面跨項目共享。我已經(jīng)多次提到嚴(yán)格格式吗铐、Scala中的豐富類型东亦、protobuf中的嚴(yán)格模式,以及用于系統(tǒng)集成的這些嚴(yán)格資產(chǎn)模型唬渗。約束最終提供了自由典阵,它們允許微服務(wù)和團(tuán)隊的解耦,約束實際上是大規(guī)模分布式系統(tǒng)可靠性的基礎(chǔ)镊逝。

? 構(gòu)建特斯拉能源平臺的收獲:我們很幸運壮啊,從第一天起就接受了反應(yīng)式系統(tǒng)的原則,這產(chǎn)生了令人難以置信的強大incredibly robust,撑蒜、可靠reliable和高效effective的系統(tǒng)歹啼。響應(yīng)流是處理系統(tǒng)動態(tài)和提供資源約束的重要組件,同時也為流提供了豐富的通用API座菠。構(gòu)建這些復(fù)雜的服務(wù)狸眼,尤其是在物聯(lián)網(wǎng)中,需要的是分布式計算的工具包浴滴。對我們來說拓萌,那就是Akka。對于其他人來說升略,可能是Erlang OTP微王;我認(rèn)為現(xiàn)在我們也看到了支持相同構(gòu)建塊的有狀態(tài)無服務(wù)器serverless平臺的發(fā)展。我想象了一下品嚣,這就是我們未來為這些系統(tǒng)編程的方式炕倘。這包括狀態(tài)管理、對單個實體進(jìn)行規(guī)暮渤牛化建模罩旋、工作流管理、流接口额嘿,然后允許運行時處理并發(fā)性瘸恼、分布和故障。嚴(yán)格契約使系統(tǒng)可靠册养、使服務(wù)和團(tuán)隊解耦并且改進(jìn)協(xié)作东帅。

Single Battery Market-Participation 單電池參與市場交易

Link:在Tesla能源平臺之上,我們構(gòu)建了第一個電廠app球拦,在這個階段靠闭,我們學(xué)習(xí)了如何將電池的實時預(yù)測和優(yōu)化功能產(chǎn)品化帐我。在這個例子中,我們從一個非常大的電池開始愧膀,也就是Hornsdale霍恩斯代爾電池拦键,這是世界上最大的電池,100兆瓦M(jìn)W檩淋,129兆瓦時MWh芬为,大約是一個燃?xì)鉁u輪機的大小◇霸茫霍恩斯代爾不僅是當(dāng)前媚朦、還能在未來更多可再生能源不斷投入使用的情況下,持續(xù)幫助保持電網(wǎng)的穩(wěn)定日戈。它實際上還降低了用戶成本(指參與調(diào)頻):在極端情況下询张,比如發(fā)電機解列下線時,霍恩斯代爾會幾乎瞬間做出反應(yīng)浙炼,以平衡可能導(dǎo)致停電的大頻率擾動份氧。即使在正常情況下,傳統(tǒng)發(fā)電機的響應(yīng)也比指令信號滯后幾分鐘弯屈,而電池幾乎可以在瞬間遵循頻率調(diào)節(jié)指令蜗帜。這有助于維護(hù)一個安全的電網(wǎng)頻率(緊急調(diào)頻支撐,參與調(diào)頻服務(wù)以及備用容量服務(wù)可以直接從電網(wǎng)公司獲得固定收益季俩,但是對服務(wù)質(zhì)量和功率有高可靠要求钮糖。電池儲能因為容量限制梅掠,難以支撐大電網(wǎng)的調(diào)峰服務(wù)酌住,調(diào)峰一般由抽水儲能等大容量儲能支持)

這個大電池通過能源市場為電網(wǎng)提供服務(wù),為什么我們必須參與能源市場?回想一下供需必須實時平衡的要求阎抒,而市場是使兩者保持平衡的經(jīng)濟(jì)有效途徑酪我。市場參與者就未來的電能生產(chǎn)、消費提出報價和時間要求且叁;運營商采用能夠以最低價格提供服務(wù)的參與者都哭。我們想用電池協(xié)助消納新能源、在未來更多可再生能源上線時幫助電網(wǎng)保持穩(wěn)定逞带,我們就必須要參與能源市場欺矫。怎么參與能源市場?通過軟件展氓!為此穆趴,我們建立了Autobidder自動投標(biāo)機器人來運營Hornsdale大電池,現(xiàn)在我們已經(jīng)把它打包為一個產(chǎn)品提供遇汞,這是自動投標(biāo)機器人的UI:

Autobidder運行在云上未妹、管理數(shù)百兆瓦時電力資產(chǎn)簿废、支持G兆瓦時的電網(wǎng)服務(wù)交易,支持范圍從智能電表用戶聚合體到100MW的發(fā)電廠络它,Autobidder一經(jīng)投入使用即可在24/7全天候動態(tài)環(huán)境中持續(xù)自動賺取收益

? 這是一個專業(yè)的工具族檬,是為控制室操作員準(zhǔn)備的,他們每天都在看它化戳。屏幕上有很多信息单料,但它的基本工作流程就是獲取數(shù)據(jù)(比如從Tesla能源平臺獲取霍恩斯代爾大電池的實時信息)、預(yù)測價格(請求預(yù)測和優(yōu)化服務(wù))和可再生能源產(chǎn)量点楼、決定一個最優(yōu)出價看尼、然后提交、5分鐘運行一次盟步,這是澳大利亞電力市場的固定節(jié)奏藏斩。

? 宏觀上看,優(yōu)化問題是一種折中却盘,在各種市場產(chǎn)品當(dāng)中折中狰域,對于電池來說它可以為電網(wǎng)削峰平谷,但是它的電能有上限黄橘,所以需要折中選擇時段啟用它兆览。Autobidder自動投標(biāo)機器人構(gòu)建在Colin 所介紹的 Tesla能源平臺的應(yīng)用層,Autobidder包含好幾個微服務(wù)塞关,它與Tesla 能源平臺以及第三方APIs(比如電力市場數(shù)據(jù)服務(wù))都有交互抬探,Autobidder本質(zhì)上是一個工作流編排平臺,那么你可能會問我們?yōu)槭裁匆约洪_發(fā)而不是直接找一個開源來用帆赢?這里面的關(guān)鍵在于這是一個運營系統(tǒng)小压,不同于批處理任務(wù)或者離線作業(yè),它涉及到錢和物理操作椰于、它很關(guān)鍵怠益。Autobidder也重度使用Akka、scala瘾婿,避免引入其他新語言和過多技術(shù)棧蜻牢,系統(tǒng)核心是編排微服務(wù),它運行自動競標(biāo)工作流程偏陪,這就是我們的原則:保持核心盡可能簡單抢呆、外圍服務(wù)繼續(xù)復(fù)雜。

? 市場數(shù)據(jù)服務(wù)封裝了復(fù)雜輸入數(shù)據(jù)的ETL笛谦,這些數(shù)據(jù)會在市場周期相關(guān)的不同時間線上進(jìn)入系統(tǒng)抱虐。市場數(shù)據(jù)服務(wù)處理這些時間線,并且在讀取揪罕、寫入數(shù)據(jù)或丟失數(shù)據(jù)時處理回調(diào)梯码。

? 預(yù)測和優(yōu)化服務(wù)用來跑算法代碼宝泵,還有一個與電力市場接口交互的投標(biāo)服務(wù)。Autobidder編排微服務(wù)轩娶、市場數(shù)據(jù)服務(wù)和投標(biāo)服務(wù)都是用Scala寫的儿奶,Scala給我們提供了很棒的并發(fā)語義、函數(shù)式編程類型安全性以及跨團(tuán)隊組合最佳實踐鳄抒。不過預(yù)測和優(yōu)化服務(wù)是Python寫的闯捎,這是因為實現(xiàn)算法的快速改進(jìn)和迭代開發(fā)對我們來說非常重要,Python中有一些關(guān)鍵的數(shù)值計算和解析庫许溅,而且我們團(tuán)隊中的算法工程師對Python用的更流暢瓤鼻。用Python寫這些服務(wù)的核心邏輯可以更順暢地迭代(特斯拉由經(jīng)驗豐富的機器學(xué)習(xí)工程師、優(yōu)化工程師和市場交易專家組成的團(tuán)隊創(chuàng)建了一個預(yù)測和優(yōu)化算法庫贤重,算法包括經(jīng)典統(tǒng)計茬祷,機器學(xué)習(xí)和數(shù)值優(yōu)化。標(biāo)準(zhǔn)庫包含以下功能:價格預(yù)測并蝗、負(fù)荷預(yù)測祭犯、發(fā)電預(yù)測、調(diào)度優(yōu)化滚停、智能投標(biāo)沃粗。算法可以適應(yīng)新的市場和服務(wù),并通過體驗數(shù)據(jù)不斷改進(jìn)键畴,以在動態(tài)的市場環(huán)境中保持高財務(wù)表現(xiàn)最盅。預(yù)測和優(yōu)化服務(wù)的算法保持持續(xù)的迭代更新)

? 市場數(shù)據(jù)服務(wù)投標(biāo)服務(wù)編排微服務(wù)之間通過gRPC通訊起惕,就像Colin所說它的好處是嚴(yán)格的契約涡贱、代碼生成和協(xié)作。編排微服務(wù)與預(yù)測和優(yōu)化服務(wù)之間的通信使用AmazonSQS消息隊列疤祭,這個MQ為我們提供了消息持久化盼产,有四個好處:一是在消費端失敗的情況下可以重試;二是服務(wù)之間不必保持網(wǎng)絡(luò)長連接情況下也很容易支持長時間運行的任務(wù)(support long-running tasks without a long-lived network connection between services.)我們使用不可變的輸入-輸出消息模型勺馆、消息具有嚴(yán)格的模式格式;第三:這允許我們持久化不可變的輸入和輸出消息侨核,并將它們用于回歸測試backtesting草穆,這是我們整個團(tuán)隊任務(wù)的一個重要部分(預(yù)測和優(yōu)化服務(wù)算法持續(xù)更新迭代以及配套回歸測試,相應(yīng)的采用了python以及歷史消息持久化)

? 最后搓译,SQS可以支持我們的worker池模式(Akka典型模式)悲柱,預(yù)測和優(yōu)化是Python寫的,它的并發(fā)語義支持很笨些己,而SQS消息隊列允許我們實現(xiàn)跨worker并發(fā)豌鸡,而不是在worker中做并發(fā)嘿般。值得注意的是,這些服務(wù)是純函數(shù):接收輸入數(shù)據(jù)涯冠、產(chǎn)出輸出數(shù)據(jù)炉奴、沒有副作用,這使它們更具可測試性蛇更,并使這些重要的算法更改改進(jìn)更加安全瞻赶,同時還減輕了算法工程師編寫I/O代碼的負(fù)擔(dān)、允許我們用Scala并發(fā)來寫I/O(聚合系統(tǒng)需要重度對外交互派任,須要強有力的I/O砸逊、并發(fā)支持).? 從宏觀、整體的角度上俯瞰這些workflows工作流會發(fā)現(xiàn):他們都是有狀態(tài)的掌逛,這種狀態(tài)是由業(yè)務(wù)事件驅(qū)動的一系列事實數(shù)據(jù)按照時序疊加而成师逸,狀態(tài)包括當(dāng)前是什么業(yè)務(wù)事件以及之前業(yè)務(wù)事件的疊加,業(yè)務(wù)事件之間可能會有多個依賴豆混,比如預(yù)測業(yè)務(wù)事件就需要依賴其他數(shù)個業(yè)務(wù)事件的結(jié)果才能進(jìn)行字旭。

? 在宕機情況下,比如重新啟動編排微服務(wù)pod(K8S)崖叫,我們不希望丟失當(dāng)前工作流的狀態(tài)遗淳,我們不希望從空白重新啟動它。我們可以在檢查點checkpoints拍下snapshots快照心傀。如果工作流失敗屈暗,可以從最后一個檢查點恢復(fù)它(EventSource)。我們將這種狀態(tài)保存在表示工作流狀態(tài)機的actor中。Akka持久化特性通過檢查點和事件日志event journal.支持透明狀態(tài)恢復(fù)泌射。

? 我們學(xué)到的重要一課是:業(yè)務(wù)事件的業(yè)務(wù)邏輯(business logic of stage execution)和純函數(shù)盡可能與 actor保持隔離炒考,這樣讓業(yè)務(wù)邏輯的測試和組合更簡單 and the new archetyped API naturally helps with that decomposition. 在我們的團(tuán)隊中,實現(xiàn)算法的快速開發(fā)和迭代改進(jìn)是非常重要的弃甥,所以我們在系統(tǒng)的特定位置使用了Python。我們還需要最小化算法迭代破壞工作流的風(fēng)險汁讼。有幾件事對我們來說非常有效淆攻,可以將風(fēng)險降至最低,那就是要有一個算法服務(wù)的輸入-輸出模型嘿架,它可以使代碼更簡單瓶珊、更易于測試和嚴(yán)格的契約,還允許自由地更改算法的內(nèi)部邏輯耸彪,而系統(tǒng)其余部分不受影響伞芹。

? 對我們來說,從核心系統(tǒng)中抽象出外部數(shù)據(jù)源和服務(wù)的雜亂細(xì)節(jié)是很重要的。這實際上是整個云平臺的一個基本租戶唱较。這些工作流必然是有狀態(tài)的扎唾,但是將狀態(tài)與業(yè)務(wù)邏輯事件糾纏在一起會導(dǎo)致代碼復(fù)雜化,隔離開來才能保持業(yè)務(wù)邏輯事件的可測試和可組合性南缓。

Peak-Shaving Virtual Power Plant 虛擬電廠參與調(diào)峰

Breck:我們來看看我們的第一個VPP.? Percy剛才講了我們?nèi)绾位谄脚_和算法用一塊大電池參與電力市場胸遇,現(xiàn)在來看看我們怎么擴(kuò)展它的應(yīng)用、如何衡量西乖、建模和控制上千個居民電力墻電池來對電網(wǎng)削峰平谷狐榔。先看看需求:這是電網(wǎng)總負(fù)荷的圖表,以兆瓦為單位获雕。電網(wǎng)負(fù)荷隨天氣和季節(jié)的變化而變化薄腻。這是一個溫暖夏日的典型負(fù)荷圖。左邊是午夜届案,最小負(fù)荷在凌晨4點左右庵楷,那時大多數(shù)人都在睡覺,然后高峰負(fù)荷是下午6點左右楣颠,那時很多人都在開空調(diào)或做飯尽纽。

? 高峰負(fù)荷非常昂貴,電網(wǎng)一年只需要滿足幾個小時的高峰負(fù)荷童漩。要滿足負(fù)荷高峰電網(wǎng)就得按最大容量冗余建設(shè)弄贿,這導(dǎo)致大量成本浪費,除了滿足負(fù)荷峰值矫膨,冗余的容量沒有得到充分利用差凹。另一種選擇是從另一個電源區(qū)引入電力(比如德州從相鄰州買電)而這通常要付出很高的代價。

? 如果我們能抵消需求侧馅、使負(fù)荷曲線更均勻危尿,電力就會更便宜,這就是我們的目標(biāo)馁痴。我們想在電網(wǎng)負(fù)荷高峰的時候介入:讓powerwall電力墻電池放電谊娇,在其他時候由業(yè)主自主使用我們不介入。當(dāng)我們的虛擬電廠增長到上千個powerwall電力墻和數(shù)十兆瓦的功率時罗晕,我們很快就得到了一個教訓(xùn)济欢,那就是在峰值后立即給電池充電又會導(dǎo)致我們自己的峰值,弄巧成拙攀例。解決方案是:不僅要控制電池何時放電船逮,還要控制電池何時充電,并在時間上平均分布充電粤铭、有序充電、延長總的充電時間杂靶。

? 這是我們希望達(dá)成的目標(biāo)圖(現(xiàn)場演示)梆惯,這是中午酱鸭,我們想要預(yù)測是否將會出現(xiàn)負(fù)荷峰值,出現(xiàn)的話就讓電池放電垛吗,一旦決定了凹髓,我們只控制在特定的虛擬發(fā)電廠項目中注冊的power walls電力墻。我們不會隨意控制沒有登記在這些項目中的電源墻怯屉,所以不是每個客戶都有這個功能蔚舀。

? Percy講過,電網(wǎng)不是設(shè)計用來和小體量的市場主體交互的锨络,所以我們需要聚合:把所有power walls電力墻聚合起來成為一個整體赌躺,就像一個傳統(tǒng)的大型汽輪機。為此我們做了層次化的聚合羡儿、表達(dá)為云上的虛擬資源礼患,第一層是表示一個地點site的數(shù)字孿生表達(dá),所以這是一個帶有power wall電力墻的房子掠归;第二層是電氣拓?fù)浣M合比如一個變電站substation缅叠、或者是地理含義上的一個地市/縣,第三層又可以是物理分組表達(dá)比如一個電力鏈接點虏冻、或者也可以是邏輯上的肤粱,就像帶一個電池的或電池加太陽能的站點sites,根據(jù)類型不同以不同的方式控制或優(yōu)化厨相。

? 所有站點sites 一起構(gòu)成上層VPP领曼,這樣我們就可以像查詢一個power wall一樣快速查詢上千個powerwalls、并以聚合為單位進(jìn)行全局優(yōu)化(很明顯這都是actor)领铐。對外悯森,VPP可以很直觀的看做為一個整體,但是在內(nèi)部有各種各樣的安裝方式和家庭負(fù)荷绪撵,一些家庭有一塊電池瓢姻、一些有兩塊三塊、電池并不是全部充滿電音诈,一些可能有一半電或接近沒電幻碱,這得看家用負(fù)荷情況、當(dāng)天的時段细溅、光伏產(chǎn)量以及使用方式褥傍。

? 在這些sites的通訊上也有不確定性,因為它們都是通過internet聯(lián)通的喇聊,有一些可能臨時離線恍风,最后,還會有新的sites定期上線,這都需要管理起來朋贬。隨著時間的推移凯楔,固件在整個機群和正在升級和替換的硬件方面的能力不統(tǒng)一。業(yè)務(wù)邏輯中的數(shù)據(jù)模型如何表達(dá)這些不確定性非常關(guān)鍵锦募,我們希望的是能明確比如說有10兆瓦時megawatt-hours的可用能源摆屯,但只有95%的sites在線上報信息,只有服務(wù)端才能基于服務(wù)的本地上下文決策如何處理這些不確定性糠亩,我們處理這些不確定性的方式之一就是站點級抽象site-level abstraction.? 即使站點是異構(gòu)的虐骑,這個邊緣計算平臺也提供了站點級的遙測數(shù)據(jù),如功率power赎线、頻率frequency和電壓voltage廷没,為我們提供了一致的抽象、一致的軟件氛驮。

? 另一種處理這些不確定性的方式是在虛擬電廠中匯總遙測數(shù)據(jù)腕柜。人們不想面對怎么控制單個的 power wall電池這種問題,他們想/能操心的是為了削峰在下午5點到6點放電10兆瓦這種明確需求矫废,這是一個非常困難的工程挑戰(zhàn)盏缤,它結(jié)合了流式遙測和資產(chǎn)建模技術(shù),為了在軟件中為每個站點建模蓖扑,也就是所謂的數(shù)字孿生唉铜,我們用actor來表示站點,actor會管理狀態(tài)律杠,比如來自電池的最新遙測值潭流,actor會運行一個狀態(tài)機,如果站點離線柜去、遙測延遲灰嫉,則相應(yīng)更改其行為,同時它還為并發(fā)和計算提供了方便的模型嗓奢。

? 程序員需要操心的是用actor為單個站點建模讼撒,Akka運行時會將其擴(kuò)展到數(shù)千或數(shù)百萬個站點,它們之間的交互都是一致的股耽,而您不需要擔(dān)心這個問題根盒。特別是對于物聯(lián)網(wǎng)來說,這是一個非常強大的抽象物蝙,我們基本上從不擔(dān)心線程炎滞、鎖或并發(fā)bug。更高級別的聚合也可以由單個actors表示诬乞,actors“自動”維護(hù)它們之間的關(guān)系册赛,也就是所表達(dá)的物理/邏輯聚合之間的關(guān)系(數(shù)字孿生)钠导。然后,通過近實時地向內(nèi)存中的層次結(jié)構(gòu)發(fā)送消息來聚合遙測數(shù)據(jù)击奶,而在任何級別上聚合的實時程度實際上只是消息量和延遲之間的權(quán)衡(可控) Then the telemetry is aggregated by messaging up the hierarchy in-memory in near real-time, and how real-time the aggregate is at any level is really just a trade-off between messaging volume and latency.

? 我們可以查詢層次當(dāng)中的任意節(jié)點辈双,得知任意一個點的聚合值责掏、或者查詢一個站點的最新遙測值柜砾、還可以在層次中從任意一個點開始向上向下導(dǎo)航、由一個運行在Akka cluster中的服務(wù)執(zhí)行這種實時分層聚合换衬,Akka cluster支持一組不同角色的pods彼此透明通訊痰驱、第一組是線性伸縮pods、它從Kafka流式讀取數(shù)據(jù)瞳浦,基于Akka Streams的反壓担映、有界資源約束進(jìn)行低延遲流式數(shù)據(jù)處理、之后會與另一組運行所有上述數(shù)字孿生虛擬表達(dá)actors 的pods進(jìn)行消息通訊叫潦,流式處理從Kafka讀取到一個站點site的消息時蝇完、它們會基于site ID將消息轉(zhuǎn)發(fā)給表達(dá)該site 的actor ,它們不必關(guān)心這個actor在集群的確切位置矗蕊,Akka運行時透明處理消息投遞短蜕,這就叫位置透明location transparency.? 這個site actors用同樣方式與上級父actors通訊,整個聚合層次都是如此傻咖。

還有一組API pods內(nèi)存聚合服務(wù)負(fù)責(zé)在site站點級別保存客戶端請求或聚合遙測朋魔,因為它們可以位置透明滴自由查詢集群,這就是整個服務(wù)組合卿操,這個組合為上千個power walls提供內(nèi)存化in-memory警检、準(zhǔn)實時的遙測聚合。這是一種架構(gòu)害淤,提供了極佳靈活性的架構(gòu)扇雕,特別是當(dāng)與Kubernetes一起管理pod時,因為actor只是在計算機的這個基底上運行窥摄。它們是在堆上運行的镶奉。

? 單個pod失敗或重新啟動時在這個pod上的actors將簡單地遷移到另一個pod上恢復(fù),運行時處理這一切溪王。程序員不需要操心腮鞍。集群也可以伸展或縮小,actors將在集群之間自動再平衡莹菱。Actors可以使用Akka持久性自動恢復(fù)他們的狀態(tài)移国。在本例中,我們實際上不需要使用Akka持久性道伟,因為當(dāng)電池的下一條消息在幾秒鐘后到達(dá)時迹缀,actor可以重新發(fā)現(xiàn)rediscover它的關(guān)系以及最新狀態(tài)使碾。

? 為了結(jié)束本節(jié),在匯總了遙測技術(shù)以了解虛擬發(fā)電廠的可用容量之后祝懂,讓我們看看電池實際上是如何被控制的票摇。第一步是采取過去的測量,預(yù)測砚蓬,并決定多少兆瓦的排放矢门,如果我們將達(dá)到高峰。在高層次上灰蛙,這個度量祟剔、預(yù)測、優(yōu)化和控制的循環(huán)基本上是連續(xù)運行的摩梧。這個回路的控制部分是真正的閉環(huán)控制物延。

? 一旦確定了一個聚合控制設(shè)定值、我們就可以持續(xù)監(jiān)控每個站點的離散遙測仅父、觀測站點的響應(yīng)叛薯、為該站點調(diào)整設(shè)定值以使誤差最小化、還可以觀察這整個過程笙纤。Autobidder可以決策控制整個系統(tǒng)耗溜,從規(guī)模上看,這可能足以抵消新建一座天然氣尖峰發(fā)電廠的需求粪糙。也可以根據(jù)目標(biāo)決定控制層次結(jié)構(gòu)的某一個子集强霎。

? 我前面提到的控制服務(wù)通過查詢資產(chǎn)管理服務(wù)動態(tài)地解析這個目標(biāo)下的各個站點sites ,這是因為站點可以隨時間變化:安裝了新的站點(為新校區(qū)新增變電站)蓉冈、虛擬層次結(jié)構(gòu)也可能改變城舞、單個站點的屬性也可能會改變,比如你添加了第二個電池寞酿〖叶幔控制服務(wù)在每個站點查詢電池遙測,可能有上千個站點使用內(nèi)存聚合服務(wù)來決策如何讓每個站點的電池放電伐弹。給快沒電的電池放電是沒有意義的拉馋,您可以將其看作有點類似于數(shù)據(jù)庫查詢計劃 database query planner,基本上是嘗試計劃執(zhí)行惨好。

? 然后煌茴,控制服務(wù)向每個站點site發(fā)送一條帶有放電設(shè)定值和時間段的消息,這條消息必須要得到ack/acknowledgment(它將不斷地重試日川,直到獲得站點的ack蔓腐、或者超時)。因為這些電池的邏輯聚合非常龐大龄句,我們使用Akka Streams在這些巨大的集合上處理流式數(shù)據(jù)以保持資源約束回论,包括:解析站點sites散罕、讀取所有的遙測數(shù)據(jù)、發(fā)送所有的控制設(shè)定傀蓉。

? 大規(guī)模的聚合系統(tǒng)需要與各種不同APIs和數(shù)據(jù)處理模式交互欧漱,不要妄想可以繼續(xù)開發(fā)傻瓜crud微服務(wù)就能解決,那樣其實你沒有做任何有效工作(比如認(rèn)為VPP+電力市場只是個toB接單平臺或者競價排名論壇葬燎、調(diào)度交易撮合)误甚。你需要流式語義來處理海量數(shù)據(jù),還得做到低延遲萨蚕、資源限制(準(zhǔn)實時流式處理海量數(shù)據(jù))靶草,這只是個開始,真正需要的是支持對有狀態(tài)實體建模的運行時平臺岳遥,它支持位置透明location transparency、并發(fā)concurrency裕寨、伸縮性scaling和彈性resilience.不確定性是分布式物聯(lián)網(wǎng)系統(tǒng)固有的浩蓉,因此我們需要在數(shù)據(jù)模型、業(yè)務(wù)邏輯甚至客戶體驗中接受它宾袜,而不是試圖逃避它捻艳。物聯(lián)網(wǎng)設(shè)備之間的物理和虛擬關(guān)系的表達(dá),尤其是它們還會隨時間變化庆猫,是物聯(lián)網(wǎng)中最困難的問題认轨,相信我,但也是創(chuàng)建偉大產(chǎn)品的關(guān)鍵月培。

? 基于一個全局大目標(biāo)的直接控制沒有考慮本地需求嘁字,這會導(dǎo)致矛盾,比如一場風(fēng)暴正在接近杉畜,全局大目標(biāo)是讓電池放電以避免高峰纪蜒,但是房主想要一個充滿的電池以防停電。這就引出了我們演示的最后一部分:聯(lián)合優(yōu)化的虛擬電廠co-optimized virtual power plant.

Market-Participation Virtual Power Plant 虛擬電廠參與電力市場

Link:回顧一下此叠,到目前為止纯续,我們已經(jīng)建立了一個基礎(chǔ)平臺,首先灭袁,優(yōu)化單個大電池猬错,以參與電力市場,然后聚集茸歧、優(yōu)化和控制數(shù)千個電池倦炒,以達(dá)到一個全局大目標(biāo)。在最后一部分举娩,就像Colin說的析校,再次聚集构罗、優(yōu)化和控制數(shù)千個電池,但這一次不僅僅是為了一個全局大目標(biāo)智玻,我們要協(xié)同優(yōu)化本地和全局目標(biāo)遂唧。

? Colin演示的削峰平谷虛擬電廠以一個全局大目標(biāo)為優(yōu)化方向,并將控制決策向下傳遞到站點吊奢,而市場虛擬電廠將優(yōu)化本身分配到云中的站點盖彭。在這種情況下,這些站點實際上參與了控制決策页滚。這種分布式優(yōu)化之所以成為可能召边,是因為特斯拉建立了自己的硬件,并完全控制固件和軟件裹驰。這使得本地和中心的程序以及它們之間的相互關(guān)系能夠快速迭代隧熙,而且這種協(xié)作是跨團(tuán)隊的,而不是跨公司的幻林。

? 我們說這個虛擬發(fā)電廠能協(xié)同優(yōu)化局部和全局目標(biāo)贞盯,這是什么意思呢?讓我們以一個非虛擬的發(fā)電家庭為例:一個擁有太陽能發(fā)電的家庭沪饺,使用了power wall電力墻家庭電池躏敢,電力墻可以在太陽能發(fā)電過剩時充電,在高負(fù)荷時放電整葡。這要歸功于設(shè)備上的本地程序件余,目的是要么使客戶的賬單最小化,要么使他們自己使用的太陽能產(chǎn)量最大化遭居。這就是局部優(yōu)化啼器。

? 協(xié)同優(yōu)化本地和全局目標(biāo)又是什么樣的呢?一種方式是魏滚,局部優(yōu)化可以考慮進(jìn)來全局目標(biāo)的信息镀首,如市場電價(這是電網(wǎng)為了實時平衡全局目標(biāo)而報的市場價格)。在這個例子中鼠次,負(fù)電價出現(xiàn)在夜里更哄,也許是風(fēng)電過剩造成的、可能會讓電池提前充電腥寇。而下午的高電價可能是意料之外的用電高峰造成成翩、它會要求電池放電,而不是按以往的節(jié)奏等到晚上赦役。要注意的是麻敌,這一切都得遵守關(guān)于向電網(wǎng)饋電的當(dāng)?shù)匾?guī)定。

? 在協(xié)同優(yōu)化虛擬電廠中掂摔,Autobidder每15分鐘生成一個價格預(yù)測時間序列术羔,特斯拉能源平臺控制組件將這些預(yù)測分發(fā)到站點赢赊。然后局部優(yōu)化開始運行、在給定的局部和全局目標(biāo)的情況下為電池制定計劃级历。然后站點將這些計劃反饋給特斯拉能源平臺释移,平臺接收、聚集計劃(類似接收聚集遙測)寥殖,然后Autobidder自動投標(biāo)機器人使用這些匯總的計劃來決定如何投標(biāo)玩讳。

? 這種分布式算法有兩個很大的優(yōu)點。一個是伸縮性嚼贡。我們在這里利用了邊緣計算能力熏纯,我們并沒有解決跨整個站點的一個巨大的優(yōu)化問題,所以隨著更多的站點加入聚合粤策,我們不必?fù)?dān)心我們的優(yōu)化中心會失效樟澜。另一個巨大的好處是應(yīng)對不可避免的通訊時斷時續(xù)的彈性,當(dāng)站點短時或較長時間掉線時掐场,它們?nèi)匀怀钟腥謨r格時序數(shù)據(jù)最后一個版本往扔、它們?nèi)匀豢梢曰谧罱咏娜帜繕?biāo)繼續(xù)參與協(xié)同優(yōu)化,然后熊户,如果站點離線時間超過了價格時間序列的長度,它們就會恢復(fù)到純粹的局部優(yōu)化吭服。在連接服務(wù)降級情況下嚷堡,這是合理的行為,它仍在為本地站點創(chuàng)造價值艇棕。然后蝌戒,從服務(wù)的另一個角度來看,遙測聚合對下線的站點開箱即用沼琉。如果站點在一定時間內(nèi)沒有報告信號北苟,它們將被聚合排除掉(聚合判斷其下線)。然后Autobidder自動投標(biāo)機器人可以保守地出價(假定離線站點無法參與市場投標(biāo))

? 特斯拉獨特的垂直硬件打瘪、固件和軟件集成使這種分布式算法成為可能友鼻。垂直集成使我們能夠構(gòu)建更好的整體解決方案。這種分布式算法使虛擬電廠更有彈性闺骚。在分布式系統(tǒng)不可避免的通信故障中彩扔,設(shè)備仍能夠以合理的方式運行。

? 這種算法之所以成為可能僻爽,是因為特斯拉能源平臺的高質(zhì)量和擴(kuò)展性虫碉,擁抱不確定性和真實模型。同時胸梆,該算法對軟件平臺也有一定的幫助敦捧。算法提高了產(chǎn)品的整體價值须板。在構(gòu)建特斯拉能源虛擬發(fā)電廠的過程中,我們發(fā)現(xiàn)兢卵,雖然算法顯然對虛擬發(fā)電廠的成功很重要习瑰,但整個系統(tǒng)的架構(gòu)和可靠性是解決方案的關(guān)鍵

Breck:這個系統(tǒng)允許我們提供前所未有的可靠綠電济蝉。

Link:為電網(wǎng)平衡可再生能源杰刽。

Breck:在寒潮風(fēng)暴災(zāi)難情況下提供靈活的能源方案。

Link:高度集成的產(chǎn)品和服務(wù)給予用戶超級體驗王滤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贺嫂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子雁乡,更是在濱河造成了極大的恐慌第喳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踱稍,死亡現(xiàn)場離奇詭異曲饱,居然都是意外死亡,警方通過查閱死者的電腦和手機珠月,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門扩淀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人啤挎,你說我怎么就攤上這事驻谆。” “怎么了庆聘?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵胜臊,是天一觀的道長。 經(jīng)常有香客問我伙判,道長象对,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任宴抚,我火速辦了婚禮勒魔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酱塔。我一直安慰自己沥邻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布羊娃。 她就那樣靜靜地躺著唐全,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邮利,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天弥雹,我揣著相機與錄音,去河邊找鬼延届。 笑死剪勿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的方庭。 我是一名探鬼主播厕吉,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼械念!你這毒婦竟也來了头朱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤龄减,失蹤者是張志新(化名)和其女友劉穎项钮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體希停,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡烁巫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宠能。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亚隙。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖违崇,靈堂內(nèi)的尸體忽然破棺而出恃鞋,到底是詐尸還是另有隱情,我是刑警寧澤亦歉,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站畅哑,受9級特大地震影響肴楷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荠呐,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一赛蔫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泥张,春花似錦呵恢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春鳄橘,著一層夾襖步出監(jiān)牢的瞬間声离,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工瘫怜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留术徊,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓鲸湃,卻偏偏與公主長得像赠涮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子暗挑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 姜斌 作者:阮一峰 2015年的五一節(jié)笋除,有一件重大的科技新聞。國內(nèi)正好是假期窿祥,并沒有得到足夠報道株憾。 那天晚上,特斯...
    技術(shù)汪閱讀 401評論 0 0
  • 夜鶯2517閱讀 127,726評論 1 9
  • 版本:ios 1.2.1 亮點: 1.app角標(biāo)可以實時更新天氣溫度或選擇空氣質(zhì)量晒衩,建議處女座就不要選了嗤瞎,不然老想...
    我就是沉沉閱讀 6,902評論 1 6
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭听系,有人歡樂有人憂愁贝奇,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,544評論 28 53
  • 兔子雖然是枚小碩 但學(xué)校的碩士四人寢不夠 就被分到了博士樓里 兩人一間 在學(xué)校的最西邊 靠山 兔子的室友身體不好 ...
    待業(yè)的兔子閱讀 2,609評論 2 9