NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Netflix 如何真正使用 Java

  • 2023-11-13
    北京
  • 本文字数:1606 字

    阅读完需:约 5 分钟

大小:756.15K时长:04:18
Netflix 如何真正使用 Java

Paul Bakker,Netflix 的 Java 平台专家、Java 荣誉成员,以及《Java 9 模块化》的合著者,在 2023 年的 QCon 旧金山大会上,发表了题为 《Netflix 对 Java 的真正运用方式》How Netflix Really Uses Java)的演讲。

 

Bakker 在演讲中揭开了 Netflix 全部采用 RxJava 微服务、Hystrix 和 Spring Cloud,以及混沌猴主导的神话背后的真相。

 

Bakker 描述了 Netflix 广为人知的电影应用背后的原始架构,通过电视和其他设备访问,该应用通过 REST 和 gRPC 连接与他们的各种服务连接到他们的 Groovy 启用的 API 服务器。

 


首次的升级涵盖了众多领域,如远程调用、并行计算以及利用 RxJava 和 Hystrix 实现的容错机制。然而,这些升级并非尽善尽美,仍存在一些明显的限制。

 

例如:每个端点都需要一个脚本,这无疑增加了开发的复杂性和难度;开发者通常对 Groovy 和 Java 的 UI 开发并不感兴趣,这使得他们在使用这些技术时感到困扰;尽管响应式编程在理论上具有巨大的潜力,但在实际应用中,其复杂性可能会成为一个难以逾越的障碍。

 


随后,Bakker 详细介绍了 GraphQL 联合,这是一种创新的架构模型,它允许多个 GraphQL 服务(被戏称为子图或联合服务)汇聚成一个完整的架构或 API。他还阐述了 GraphQL 作为一种替代方案,解决了 REST 中普遍存在的过度获取和不足获取问题。

 

他们的 GraphQL 联合网关与域图服务(DGS)紧密相连,基本上取代了传统的 API 服务器,通过 gRPC 与各种服务进行高效通信。这种架构带来了诸多好处:首先,消除了 API 的重复;其次,UI 开发人员无需涉足服务器端开发;再者,实现了共享的 GraphQL 模式;最后,摆脱了对 Java 客户端库的依赖。

 


Netflix 目前仍在积极开发 Java。他们支持 Azul Zulu 17,这是 Azul 的 OpenJDK 下游发行版,正在积极测试 JDK 21,用于运行大约 2800 个应用程序,这些应用程序构建于大约 1500 个库之上。Gradle 以及 Netflix 自己构建的 Gradle 插件集 Nebula 以及 IntelliJ IDEA 是他们首选的构建工具。

 

Bakker 回顾了他们的 JDK 17 升级,该升级带来了性能优势,尤其是考虑到他们最近还在运行 JDK 8。Netflix 观察到在 JDK 17 上,与 JDK 8 相比,CPU 使用率增加了 20%。这主要归因于 G1 垃圾收集器的改进。

 

Netflix 正在积极测试 JDK 21,Bakker 认为随后升级到 JDK 21 将更加简单和快速。在 Netflix 中,使用 Generational ZGC 将更好地适应各种工作负载,最终他们将用虚拟线程替代线程池。然而,Bakker 强调了"虚拟线程并非免费午餐",他警告说,如果库具有高 CPU 使用率,仅仅向应用程序添加虚拟线程实际上可能会降低性能。

 

Netflix 还支持 Spring Cloud,使用 Spring Cloud Netflix,这是为 Spring Boot 应用程序提供 Netflix 开源软件集成的子项目。

 

作者简介:

 

Michael Redlich 在过去的 25 年里一直是 Java 社区的活跃成员。他于 2001 年创立了 Garden State Java User Group(原名 ACGNJ Java Users Group),至今仍在不断运营。自 2016 年以来,Mike 担任 InfoQ 的 Java 社区新闻编辑,他的贡献包括每月的新闻报道、技术写作和技术评论。他曾在一些场合发表演讲,如 Oracle Code One、Emerging Technologies for the Enterprise、Trenton Computer Festival (TCF)、TCF IT Professional Conference,以及众多的 Java 用户组。Mike 是 Jakarta NoSQL 和 Jakarta Data 规范的贡献者,并参与了 Jakarta EE Ambassadors 的领导委员会。他于 2023 年 4 月被授予 Java Champion 荣誉。拥有 33 年半的工作经验,Mike 最近从新泽西州克林顿的 ExxonMobil Technology & Engineering 部门退休,曾在那里开发自定义科学实验室和 Web 应用程序。他还曾在 Ai-Logix, Inc.(现在是 AudioCodes)担任技术支持工程师,为客户提供技术支持并开发电话应用程序。

 

原文链接:

 

https://www.infoq.com/news/2023/10/java-at-netflix-bakker/

 

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

2023-11-13 18:4921712

评论

发布
暂无评论
发现更多内容

2022年保障企业内网安全就用行云管家!免费试用!

行云管家

云计算 云平台 内网 云管平台

必读!如何有效的进行沟通

观测观测

鉴释加入龙蜥社区,助力开源生态建设

OpenAnolis小助手

Linux 开源

Linux之wc命令

入门小站

Linux

来自未来的交互设计!当电影中的一切变为现实,设计师要如何进化?

博文视点Broadview

流批一体技术框架探索及在袋鼠云数栈中的实践

袋鼠云数栈

“以终为始”的正确使用方式

石云升

思维模型 1月月更

企业上云后,不容忽视的管理工具-云管平台

行云管家

云计算 企业上云 云管平台 云管理

第三方测评:GaussDB(for Redis)稳定性与扩容表现

华为云开发者联盟

redis 华为云 GaussDB(for Redis) NoSQL数据库 云原生NoSQL数据库

恒源云(GPUSHARE)_attention decoder效果不佳时如何应对

恒源云

深度学习 计算机视觉

一款基于Java语言开发的,开源商业应用的模块化开发框架和智能管理平台-Axelor

马农驾驾驾

Java 系统开发 BPM 开发框架 智能管理

异步调用如何使用是最好的方式?

CRMEB

恒源云(GPUSHARE)_AdderSR: Towards Energy Efficient Image Super-Resolution学习笔记

恒源云

人工智能 深度学习 计算机视觉

ReactNative进阶(二十九):BloC 模式

No Silver Bullet

React Native 1月月更 BloC

Spring Boot Admin 添加报警提醒和登录验证功能!

王磊

鉴释加入龙蜥社区,助力开源生态建设

OpenAnolis小助手

Linux 开源 社群 合作伙伴

Flutter启动流程分析之插件化升级探索

得物技术

flutter Weex Google 框架 原生

用 docker 快速搭建 kafka(qbit)

qbit

kafka zookeeper docker image

“在线设计”网络资源管理的源头活水

鲸品堂

通信运营商 在线设计平台

一线开发人员,你对项目了解多少?

蜜糖的代码注释

Java 程序员 后端技术

基于Calcite的分布式多数据源查询

麒思妙想

MySQL 数据库 Apache Calcite gbase8a

五步实现HarmonyOS应用(ets)【鸿蒙开发 07】

坚果

鸿蒙 1月月更

微信的业务架构图和学生管理系统的毕业设计

Geek_8d5fe5

架构实战营

TiDB Cloud 上线亚马逊云科技 Marketplace,为全球用户提供云端一栈式实时 HTAP 数据库体验

PingCAP

携程DBA负责人俞榕刚:OceanBase在携程的落地和实践

OceanBase 数据库

数据库 分布式 OceanBase 开源 携程 客户实践

☕【Java深层系列】「并发编程系列」让我们一起探索一下CompletionService的技术原理和使用指南

洛神灬殇

Java 线程池 CompletionService 异步执行 1月日更

手把手教你丨小熊派移植华为 LiteOS-M

华为云开发者联盟

华为 鸿蒙 LiteOS 小熊派 移植

高并发环境下,6个构建缓存服务需要注意的问题

华为云开发者联盟

缓存 高并发 开发 并发 缓存服务

全栈工程师?你知道全流程工程师吗?

蜜糖的代码注释

Java 开发 后端技术

前端工程师 2022 年必备的 7 个工具

开源之巅

JavaScript node.js

在线YAML转TOML工具

入门小站

工具

Netflix 如何真正使用 Java_微服务_Michael Redlich_InfoQ精选文章