QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Kotlin HTTP Toolkit Ktor 3.0 改进性能,并支持服务器发送事件

作者:Sergio De Simone

  • 2024-11-21
    北京
  • 本文字数:870 字

    阅读完需:约 3 分钟

Kotlin HTTP Toolkit Ktor 3.0改进性能,并支持服务器发送事件

Ktor 是一个原生的 Kotlin 框架,可用于创建异步 HTTP 服务器和客户端应用程序。Ktor 3.0 已发布。该版本采用了 kotlinx-io,虽然带来了一些破坏性更改,但性能却有所提升,并且增加了服务器发送事件、CSFR、从 ZIP 文件提供静态资源等特性。


kotlinx-io 是围绕Buffer这个抽象概念构建的底层 I/O 库。Buffer是一个可变的字节序列,它的工作方式和队列类似。也就是说,你可以向其尾部写入数据,并从其头部读取数据。Ktor 3 的破坏性变化主要影响了底层 IO API,涉及InputOutputByteReadChannelByteWriteChannel等类型。直接使用它们的开发人员需要修改他们的应用程序,迁移到新的 API。


kotlinx-io 的主要好处是提升了性能:


我们减少了 ByteReadChannel、ByteWriteChannel 与网络接口之间不必要的字节复制。这样可以提高字节转换和解析的效率,为未来的性能提升留出空间。


JetBrains 表示,根据他们自己的基准测试,Ktor 的这个新版本显著缩短了文件和套接字操作所需的时间,在某些情况下可缩短 90%。


除了性能提升之外,Ktor 3.0 最重要的变化是支持服务器发送事件。这是一种服务器推送技术,可以创建服务器到客户端的通信通道。在数据以单向流动为主的情况下,尤其是需要规避防火墙阻塞或处理连接中断时,服务器发送事件比 WebSockets 更为可取。另一方面,WebSockets 效率更高,延迟更低。


Ktor 3.0 还提供了其他一些有用的特性,包括支持跨站点请求伪造(CSRF)(可以针对任何给定的路由指定)以及直接从 ZIP 文件提供静态资源的能力。ZIP 文件从基本路径提供,可能会包括子目录,这会反映在 URL 结构中。


关于 Ktor 3,最后一点需要注意的是,Ktor 客户端现在支持将 Wasm 作为构建目标。不过,Kotlin/Wasm 仍处于 Alpha 测试阶段,因此,Ktor 3 中的 Wasm 支持尚未到达生产就绪状态。


要使用 Ktor 启动一个新项目,请访问 Ktor 网站并选择最符合你需求的插件,涉及身份验证、路由、监控、序列化等。如果你想将现有的 Ktor 2 项目改为使用 Ktor 3,请务必阅读 JetBrains 提供的迁移指南。


查看原文链接:

https://www.infoq.com/news/2024/10/ktor-3-kotlin-http-server/

2024-11-21 08:008299

评论

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

react源码分析:组件的创建和更新

flyzz177

React

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

手写一个react,看透react运行机制

flyzz177

React

容量保障落地四步走

老张

性能测试 服务治理 稳定性保障 容量测试 容量保障

深度分析React源码中的合成事件

flyzz177

React

java开发哪家机构比较好?

小谷哥

使用JMeter模拟设备通过MQTT发送数据

石云升

测试 Jmeter mqtt

详述TLS握手流程

穿过生命散发芬芳

TLS 12月月更

在西安怎么选择java培训?

小谷哥

Verilog 过程赋值

芯动大师

Verilog Verilog语法 Verilog过程赋值

工作中常用的设计模式--享元模式

lpe234

Java 设计模式 享元模式 spring-boot

react源码分析:深度理解React.Context

flyzz177

React

【Alibaba微服务技术系列】「SpringCloud技术专题」基于SpringCloud-Alibaba的微服务2.0模式架构搭建实战指南(解析版本对应关系)

洛神灬殇

SpringCloud SpringCloud Alibaba 12 月 PK 榜 服务搭建

架构实战营 模块2作业

西山薄凉

「架构实战营」

JavaScript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

JavaScript刷LeetCode拿offer-栈相关题目

js2030code

JavaScript LeetCode

前端一面高频面试题(附答案)

loveX001

JavaScript

22道js输出顺序问题,你能做出几道

loveX001

JavaScript

架构实战营模块二作业

张贺

架构训练营

伙伴福利,100个项目彻底精通Java!【开源】

JavaPub

Java 源码 javaWeb

秒云荣获2022爱分析·中国运维最佳实践案例大奖

MIAOYUN

运维 解决方案 容器云平台 云原生容器 IT解决方案

极客时间运维进阶训练营第八周作业

独钓寒江

前端开发需不需要通过培训来学习

小谷哥

大数据开发培训机构该怎么选择?

小谷哥

前端必会面试题汇总

loveX001

JavaScript

银行普惠金融可持续发展能力建设——风控科技应用

易观分析

金融 银行

2022-12-13:游戏玩法分析 I。写一条 SQL 查询语句获取每位玩家 第一次登陆平台的日期。 +-----------+-------------+ | player_id | first_l

福大大架构师每日一题

数据库 福大大

Zebec正在以流支付的方式,推动加密资产支付走上正轨

鳄鱼视界

深入React源码揭开渲染更新流程的面纱

flyzz177

React

react的useState源码分析

flyzz177

React

大数据培训课程哪里比较好?

小谷哥

Kotlin HTTP Toolkit Ktor 3.0改进性能,并支持服务器发送事件_编程语言_InfoQ精选文章