您的位置: 首页 >互联网 >

特斯拉如何使用开源技术在现代电网中产生弹性

2020-05-12 15:38:45 编辑: 来源:
导读 你在一个由电网驱动的发光屏幕上阅读这篇文章,这是有史以来最大和最复杂的机器。 它主要建立在20世纪的技术之上,是数百万互联设备以高度同步的方式共同工作的结果。 这些元素中的每一个都是根据物理定律单独行为的。 但是,整体的实际运作方式有一个谜,甚至连复杂性理论的专家也会感到困惑。 换句话说,我们在理论上知道电网是如何工作的。 它是大量工程设备的集合,每个设备都被编程(就像蚂蚁)遵循一定的指令,导致高

你在一个由电网驱动的发光屏幕上阅读这篇文章,这是有史以来最大和最复杂的机器。 它主要建立在20世纪的技术之上,是数百万互联设备以高度同步的方式共同工作的结果。 这些元素中的每一个都是根据物理定律单独行为的。 但是,整体的实际运作方式有一个谜,甚至连复杂性理论的专家也会感到困惑。 换句话说,我们在理论上知道电网是如何工作的。 它是大量工程设备的集合,每个设备都被编程(就像蚂蚁)遵循一定的指令,导致高度协调的集体行为。 但是如果你想建立一个像特斯拉这样的现代电网呢? 你可能会希望依靠开源创新来在难以想象的尺度上处理复杂的电网水平。 换句话说,是弹性的开源。 一群聪明的特斯拉工程师最近在英国的一次会议上透露了这一观点。 他们在很大程度上依赖一个叫做“数字双胞胎”的概念。

正如特斯拉工程师科林·布雷克和珀西·林克(PercyLink)所描述的,数字孪生是物理物联网(物联网)设备的表示-就像电池、逆变器或几乎建模的软件中的充电器一样-他们进行数字孪生建模,以表示虚拟电力系统构建过程中各种资产的当前状态和关系。 开源软件在Breck和Link的故事中起着核心作用。 因为它们涵盖了很多(复杂的)领域,我将简要地关注两个对特斯拉来说很重要的开源项目,以解决复杂性和确保复原力:Kubernetes和Akka(来自Lightbend,我在2014年首次写的一个项目)。 它们在分布式计算和物联网如何帮助特斯拉保证网格复原力方面起着至关重要的交织作用。

Breck说:“我们的大多数微型服务都在Kubernetes运行,Akka和Kubernetes的配对真的很棒。” Kubernetes可以处理缩放过程中的粗粒度故障,这样就可以像向上或向下缩放豆荚、运行活性探针,或者重新启动一个指数后退的失败豆荚。 然后,我们使用Akka来处理细粒度故障,如电路中断或重试单个请求,并模拟单个实体的状态,如电池正在充电或放电。

对于软件中的每个站点建模,这个所谓的数字双胞胎,他们用一个演员来代表每个站点。 参与者管理状态,就像最新报告的来自电池的遥测,并执行状态机,如果站点离线,遥测延迟,则改变其行为。 它还为分发、并发、计算和故障转移管理提供了一个方便的模型。 程序员担心在演员中建模一个单独的站点,然后Akka运行时将其扩展到数千或数百万个站点。 特别是对于物联网来说,它是一个非常强大的抽象,本质上消除了对线程、锁或并发错误的担忧。 较高级别的聚合也由单个参与者表示,参与者与描述这种物理或逻辑聚合的其他参与者保持关系。 然后,遥测是通过在内存中实时向上传递层次结构来聚合的,聚合在任何级别上的“实时”实际上只是消息量和延迟之间的权衡。 特斯拉可以在此层次结构中的任何节点查询以知道该位置的聚合值,或者从单个站点查询最新的遥测数据。 它还可以从任何点上下导航层次结构。 执行这种实时分层聚合的服务在Akka集群中运行。 Akka集群允许一组具有不同角色的吊舱透明地相互通信。 第一个roll是一组线性可伸缩的pods,它们将数据从Apache Kafka中流出来,它们使用AkkaStreams进行背压、有界资源约束,然后进行低延迟流处理。

如果您查看由云计算本地计算基金会赞助的项目和围绕Kubernetes的项目,它们往往是面向底层基础设施和操作的。 您发现应用程序开发和中间件类型的可能性要小得多。

你需要一种方法来编写那个应用程序。 如果只看Kubernetes生态系统允许的东西——一组很好的低级工具——那么在如何将所有东西拼接成一个工作应用程序方面仍然缺乏工具和指导。 你,开发人员,被留下来解决这些细节。 它不会帮助你编写服务,也不会帮助你弄清楚一些事情,比如:

他们应该如何互动,

如何保持数据的一致性,

你应该如何处理失败/挫折,

如何将它们编排成整体工作流程,或者

如何维护端到端的保证和SLA..

当您以用户身份发送消息时,您希望一直到数据库和返回,或者一直到服务和返回都有保证。 谁能确保这些端到端的保证? 那是中间件。 正如Breck和Link所描述的,特斯拉使用Akka作为那座桥。

Kubernetes为您提供了空框(docker容器,安排在pods中),以确保它们是可用的和可缩放的,但不太关心您放入框中的应用程序代码的字符(即是否可用和一致)。 因此Akka和Kubernetes在堆栈的不同层操作,共同提供一个单一的相干系统。

是什么使Akka非常适合特斯拉的用例? 它建立在演员模型上。 这个模型是如何工作的? 从这些超级轻量级、完全隔离和自主的演员/服务开始,他们能够轻松地在一台笔记本电脑上运行数百万台,这给了你一种有趣的方法来模拟特斯拉所做的事情。 这是完美的物联网和数字孪生模式,其中每个物理设备被映射到一个现场演员。 在自然界中可以找到很好的类比,在自然界中,我们有自组织系统,由具有突发行为的自主“行为者”构建,如细菌或蚂蚁。

这些类型的系统自然是非常有弹性的。 电网不能失灵--灯灭了。 或者更糟的是,互联网闪烁。


免责声明:本文由用户上传,如有侵权请联系删除!

2016-2022 All Rights Reserved.平安财经网.复制必究 联系QQ280 715 8082   备案号:闽ICP备19027007号-6

本站除标明“本站原创”外所有信息均转载自互联网 版权归原作者所有。