YardStrong 2019-06-27
能源互联网是物联网和“互联网+”在能源行业深度融合的产物,是中国制造2025的重要组成部分,我们现在还处于能源互联网的早期阶段。绝大部分能源行业的应用都部署在私有局域网内,并且网络结构异常复杂,这是阻碍互联网技术在能源行业落地的最大挑战。6月28日,金风科技数据平台架构师张利出席了Rancher Labs举办的Container Day 2018容器技术大会,并做了题为《混合云场景下容器技术在新能源功率预测产品中的最佳实践》的演讲。
金风科技是中国成立最早、自主研发能力最强的风电设备研发及制造企业之一。作为金风科技数据平台架构师、Team Leader,张利自2014年加入金风科技后,主要负责公司新能源功率预测产品的研发、数据平台的搭建、以及解决方案的规划。他带领基础架构团队建立多云和混合云场景下的持续交付平台、搭建能源气象平台,实现功率预测产品的微服务化改造、完成该产品端到端的交付,实现产品到解决方案的平台化改造。在演讲中,张利从金风科技的实战经验出发,为大家解读了容器技术如何应用在传统能源行业中,如何实现混合云场景下功率预测产品的快速落地。本文由演讲内容整理而成。金风科技主要做的产品是新能源功率预测产品,是一家典型的制造业公司,软件并不是主业。但是随着能源互联网的发展,能源企业开始转型,我们的软件产品也开始变得非常丰富起来,同时有很多场景想强大现有软件的产品线,于是我们开始一点点进行转型,并基于现在的互联网技术去做传统制造业的业务。
金风科技是国际化清洁能源和节能环保的整体解决方案提供商。公司成立了20年,现在管理着38GW的风电场的装机容量,现有风机数量2.5万台,整个在全球排名第3,已经连续至少5年中国市场排名第一。这是目前我们对整个环保做的一些贡献。
功率测产品是个什么样一个场景?它是基于天气预报加上AI两个技术进行预测。天气预报得到了时间跟风速的曲线,然后之后是用AI去训练功率曲线,将风速跟功率的曲线组合,得到的结果就是一个预测的基于时间的功率,也就是整体的发电量的情况,这是我们大概的业务场景。
实际上,我们的软件在网络层非常复杂。我们有严格的安全保护,将网络分成了两个区,一般所有的系统不能部署在外网,都是部署在隔离区内,中间放了一个应景的防火墙,数据只能通过文件的形式往里进,出去是基于UDP跟阉割版的TCP的协议,这里面很多协议是不能用的,这是非常复杂的部分,所以发布软件的时候是十分困难的,大部分时间只能人为地发布软件产品。
还有另外一点是,部署架构也特别复杂。在2010年之前,大部分的电场是分布在中国各个偏远山区、戈壁之类的地方,因为那里的太阳能和风能十分丰富。到了2010年的时候,出现了一些区域的中心,他们会把这些散落在各个电场的数据全部都拿上来进行统一的风电场监控。2010年到2015年之间,这些电场开始有集中化的监控。到了2015年,功率测的产品开始变成一个集中化的产品,我大概是那个时候入职金风,开始做集中式的功率测产品。有一个复杂的地方是,所有的软件系统既要部署在边缘节点的电场,也要部署在省中心的一个小机房,还要部署在客户的总部。
现在我们在边缘节点的架构已经完全的容器化了。在业务层会有一些标准的IOT的场景,比如说采集、存储、ETL展示,这是标准的一个做法。另一方面,由于我们是基于AI进行预测,因此有一部分是基于TensorFlow去做预测,而那个部分是由一个独立的团队进行,因此实际上发布十分困难,尤其是AI的部分。下边会再详细分析这个问题。
这个AI分两部分,一个是离线的AI,这个我们在2015年已经实现了在云端的预测,是短期一天发布一次。在线的预测是15分钟,我们称为超短期的预测,这个业务现在还是在边缘节点,也就是分布在各个场站和省中心、区域中心,我们现在是计划一点点把它部署到公有云上来计算,进而提高预测准确度。
在业务系统上边,现在正在面临一些挑战,比如,客户的需求不稳定。我们从2015年才开始开发这个系统,而且每个客户的需求不完全一致,因此这个系统更新的次数很频繁。大家可能认为一个传统的企业,它的软件的产品发布不应该那么频繁,但是事实上并非如此,随着能源互联网,包括可再生能源这些绿色清洁环保的能源受到中国政府的重视,为了实现平价的上网,考核的力度在不断加大。如果这些新能源要平价的上网,包括功率测的准确度,是在其中起到重要支撑作用的一个业务,因此客户的需求不断的变,系统更新的频率也在不断的增加。另外一点,就是之前提到AI算法,其实想放到云端,但是这是一个在线的业务,涉及到数据的回传,如果算完之后再下发下去,整个过程会变得非常复杂。从偏远山区到一个省中心,再到客户的数据中心,一般是在一个大城市,然后再到我们的公有云上,整个链路非常长,数据的回传跟下发十分复杂,再加上刚才说的网络的结构也非常复杂,导致如果在线AI算法十分麻烦。
另外有一条是在公有云上的业务,底层也是基于容器云平台,我们自己做了一套,数据弧的这一层稍微简单,也分了采集进存储,存储里边是我们自己用的,业务数据库用的是MongoDB,有一部分是Hadoop,GlusterFS,S3。上面分了三部分,一部分是我们做功率测的业务层,包括它的运营也是一条ETL展示。另外一个部分,其中一个核心是天气预报,紫色的那个颜色WRF实际上是天气预报里一个核心的高效能的计算,类似于HPC那样,它一般跑在超算中心或者是公有云上。一般情况下,运行在超算中心,这个超算中心是没有云化的,所以那个业务也比较复杂。另外一点就是一个独立的AI模块,将它做了一个训练进预测的拆分。整个业务是三大业务,再加上底层的容器云平台,把那个存储层作为一个公共的池子,这是现有的业务架构,但实际上这会不断的变化,而且也在不断的扩大。
在公有云上这套业务系统里边,目前最大挑战是要实现跨业务部门,比如做功率测的,还有一些集中监控、预警等很多个部门,整个产品线大概包括10个到20个产品,因此各个部门之间数据要经常的相互流动,要做成公共的平台性的业务。此外,还要实现对外服务,对客户能够发布一个通用的服务。
关于能源气象这个部分,我们开始把它做成一个国际化的能源气象服务。另外,风能和太阳能可以同时去提供服务。虽然我们本身是做风力发电的,但是实际上在功率测方面是不分风和太阳能的,所以这个服务是把两个全部加到一起。
除了在AI算法里边的挑战,在公有云上的挑战就是此前提到的在线的预测系统如何搭建,包括数据的传输层是很复杂的。另外一点就是在大数据跟AI一个整体的解决方案的搭建。
我们现有的机遇跟挑战,从DevOps角度来看,之前我们大概是两周一次的发布频率,速度很慢,因为涉及到很多个电场同时去发布是十分复杂的,但是现在几乎能做到一天一次,这是用容器化的平台的优势,即可以实现更高的发布速度。另外一个挑战是,由于我们是传统企业,大部分的运维人员实际上对新的技术了解得比较少,因此对他们来说要求较高。现在整个运维团队有十几个人,但是实际上真正懂这个技术的只有一两个人,所以这个挑战很大。另外一部分就是在微孵化改造的过程中遇到一些问题,好处是系统扩展性变强了,但是随着业务不断地迭代,业务不断地增加的时候,拆分力度很难把握。现在有些服务开始拆掉,有些服务要合并,这对整个架构是一个非常大的挑战。另外一点挑战就是为了提高准确率,在AI层面会有一些很大的困难。机遇就是对于算法工程师来说,他们不需要再去部署底层的架构,降低运维的成本。首先他们实际上不是在一个公有云、一个集中式的系统上,而是分布在几百个这种电场,运维成本很高。算法工程师在发布这个算法的时候,实际上他们学习Docker技术是十分困难的,因为大部分算法工程师是学数学出身的。
金风科技现在大概使用这个系统已经有两年的时间,目前能够实现运维成本能降低50%左右,迭代速度提高10倍,从两周一次增快到一天一次,并且现在已经覆盖50%的电场,大概的规模是200个左右,覆盖的客户有五个大的集团客户,有十多个省中心的客户。