在德国铁路公司使用事件流、Kafka和Confluent平台的经验

项目背景与目标

德国铁路公司(Deutsche Bahn, DB)为向570万铁路乘客提供关键的旅行信息,开发了基于Apache Kafka和Kafka Streams的RI-Plattform(乘客信息应用)。该系统作为单一信息源,计划通过该系统整合公司所有信息渠道。

技术选型与开发过程

  • 初始方案评估:DB最初评估了Kafka与Apache Storm的组合,但发现Storm在构建、部署和运行应用方面过于复杂,因此改用Kafka Streams。
  • 技术优势:Kafka Streams简化了开发周期,降低了环境复杂性,并使其更容易实现小型用例和高级用例。
  • 性能优化:通过使用本地状态存储而非远程数据库,平台公告服务的处理时间从20分钟减少到2分钟,提升了90%。

技术栈与团队结构

  • 技术栈:包括Apache Kafka、Apache Cassandra和Kubernetes,运行在AWS的三个可用区上。
  • 团队结构:RI-Platform开发团队由110人组成,分为13个Scrum团队,开发了约100个微服务,每天生成和处理1.8亿个事件。

部署与测试

  • 部署频率:每天部署4-8次。
  • 测试框架:团队开发了包含300万测试用例的自有测试框架,部署前运行。

系统优势与未来计划

  • 优势:基于Confluent平台的RI-Plattform加快了新功能的交付速度,使新微服务能快速投入运行,并简化了添加新信息源的过程。
  • 未来计划:包括使用KSQL、从自营Kafka转向使用Confluent Cloud,以及将系统扩展到处理市内交通,预计负载将增加20倍。

系统运行与性能

  • 运行情况:系统已在德国80个车站运行一年,实现了99.8%的可用性,部分应用的中断时间少于7小时。
  • 性能挑战:部署Kafka Streams应用时会出现短暂的“停止世界”效应,希望通过新的Static Membership增强功能解决。

项目总结

该项目是Löhn和Eisele参与的最复杂项目,团队创建的系统显著改善了数百万使用德国铁路公司服务的旅客的旅行体验。

阅读 14
0 条评论