在这篇文章中,我们将讨论以下话题:
- Apache Kafka 3 分钟
- Netflix 技术栈
- C++、Java、Python 如何工作
- 5 大 Kafka 用例
- 数据如何在应用之间传输
Netflix 技术栈
这篇文章基于许多 Netflix 工程博客和开源项目的研究。
完整技术栈
- 移动和 Web:Netflix 采用 Swift 和 Kotlin 构建原生移动应用。对于 Web 应用,它使用 React
- 前端/服务器通信:GraphQL
- 后端服务:Netflix 依赖 ZUUL、Eureka、Spring Boot 框架和其他技术
- 数据库:Netflix 利用 EV cache、Cassandra、CockroachDB 和其他数据库
- 消息/流媒体:Netflix 采用 Apache Kafka 和 Flink 进行消息和流媒体目的
- 视频存储:Netflix 使用 S3 和 Open Connect 进行视频存储
- 数据处理:Netflix 利用 Flink 和 Spark 进行数据处理,然后使用 Tableau 可视化。Redshift 用于处理结构化数据仓库信息
- CI/CD:Netflix 采用各种工具,如 JIRA、Confluence、PagerDuty、Jenkins、Gradle、Chaos Monkey、Spinnaker、Atlas 等
编译语言 vs. 解释语言
下图显示了编译和执行如何工作。
编译语言
编译语言由编译器编译为机器码。机器码稍后可由 CPU 直接执行。 示例:C、C++、Go
字节码语言
像 Java 这样的字节码语言,首先将源代码编译为字节码,然后 JVM 执行程序。有时 JIT(即时)编译器将源代码编译为机器码以加速执行。 示例:Java、C#
解释语言
解释语言不编译。它们在运行时由解释器解释。 示例:Python、JavaScript、Ruby
编译语言通常比解释语言运行更快。
问题:你更喜欢哪种类型的语言?
Kafka 5 大用例
Kafka 最初为大规模日志处理而构建。它保留消息直到过期,让消费者按自己的节奏拉取消息。
与其前身不同,Kafka 不仅仅是消息队列,它是用于各种用例的开源事件流平台。
让我们回顾流行的 Kafka 用例。
1. 日志处理和分析
下图显示了典型的 ELK(Elastic-Logstash-Kibana)栈。Kafka 高效地从每个实例收集日志流。ElasticSearch 从 Kafka 消费日志并索引它们。Kibana 在 ElasticSearch 之上提供搜索和可视化 UI。
2. 推荐中的数据流
像 Amazon 这样的电商网站使用过去行为和相似用户来计算产品推荐。下图显示了推荐系统如何工作。Kafka 流式传输原始点击流数据,Flink 处理它,模型训练从数据湖消费聚合数据。这允许持续改进每个用户推荐的相关性。
3. 系统监控和警报
类似于日志分析系统,我们需要收集系统指标进行监控和故障排除。区别在于指标是结构化数据,而日志是非结构化文本。指标数据发送到 Kafka 并在 Flink 中聚合。聚合数据由实时监控仪表板和警报系统消费(例如 PagerDuty)。
4. CDC(变更数据捕获)
变更数据捕获(CDC)将数据库变更流式传输到其他系统进行复制或缓存/索引更新。例如,在下图中,事务日志发送到 Kafka 并由 ElasticSearch、Redis 和辅助数据库摄取。
5. 系统迁移
升级传统服务具有挑战性——旧语言、复杂逻辑、缺乏测试。我们可以通过利用消息中间件来降低风险。在下图中,为了升级图中的订单服务,我们更新传统订单服务从 Kafka 消费输入并将结果写入 ORDER 主题。新订单服务消费相同输入并将结果写入 ORDERNEW 主题。对账服务比较 ORDER 和 ORDERNEW。如果它们相同,新服务通过测试。
问题:你还有其他 Kafka 用例可以分享吗?
数据如何在服务器之间传输
下图显示了服务器如何发送数据到另一个服务器。
假设运行在用户空间的聊天应用发送聊天消息。消息发送到内核空间中的发送缓冲区。然后数据通过网络栈,并包裹 TCP 头、IP 头和 MAC 头。数据还通过 qdisc(队列规则)进行流量控制。然后数据通过环形缓冲区发送到 NIC(网络接口卡)。
数据通过 NIC 发送到互联网。在路由器和交换机之间多次跳转后,数据到达接收服务器的 NIC。
接收服务器的 NIC 将数据放入环形缓冲区并向 CPU 发送硬中断。CPU 发送软中断,使 ksoftirqd 从环形缓冲区接收数据。然后数据通过数据链路层、网络层和传输层解包。最终,数据(聊天消息)复制到用户空间并到达接收侧的聊天应用。
问题:当环形缓冲区满时会发生什么?会丢包吗?
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP76: Netflix’s Tech Stack。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。