2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Expedia 使用 WebSocket 和 Kafka 实现近实时的数据流查询

作者:Rafal Gancarz

  • 2024-01-13
    北京
  • 本文字数:1134 字

    阅读完需:约 4 分钟

Expedia 使用 WebSocket 和 Kafka 实现近实时的数据流查询

Expedia 实现了从他们的平台近实时地查询点击流数据的解决方案,这让他们的产品和工程团队可以在开发新的和增强现有数据驱动的特性时能够进行实时的数据探索。该团队使用了 WebSocket、Apache Kafka 和 PostgreSQL 的组合,可以连续向用户浏览器流式传输查询结果。


Expedia 的多个来源会产生大量数据,包括网站上的交互。用户在浏览网站或与网页元素进行交互时收集的点击流数据可以提供宝贵的用户行为见解。Expedia Group 的数据工程师(目前在 Personio)Ryan Lacerna 解释了近实时查询的优势:


为了确保数据质量,我们面临的一个挑战是在数据注入管道后可以立即查看数据。传统的方法,如查询数据湖和数据仓库,需要较长的处理时间,而基于事件驱动的工具可以让用户快速高效地查询和查看流式数据,为数据生产者提供快速反馈,让数据使用者可以了解捕获了哪些数据。


该团队选择使用 WebSocket 实现网页浏览器和服务器之间的双向实时通信。使用 WebSocket 的优势在于可以避免不断刷新服务器数据。此外,WebSocket 基于单个长连接,可以提高性能和最小化资源开销。



近实时查询解决方案的架构(来源:Expedia 工程博客)


该解决方案包含了 UI 应用程序、WebSocket Handler 和 Filter Worker,并使用了 Apache Kafka 主题和 PostgreSQL 数据库。UI 提供了一个简单的查询表单,用户可以指定要显示的点击流事件类型,并提供了一个通过 WebSocket 发送查询结果的小部件。UI 应用程序使用 SockJS 库和 [STOMP 协议] 实现 (https://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol) 与服务器的交互。


在服务器端,WebSocket Handler 负责处理 STOMP 格式的查询,并将流式结果发送回浏览器。Handler 从 Apache Kafka 主题读取经过筛选的点击流事件。Filter Worker 负责基于活动查询将经过筛选的事件流发布到 WebSocket Handler 订阅的 Kafka 主题中。这两个服务在 Kubernetes 运行了多个副本,具备了可伸缩性。


服务使用 PostgreSQL 数据库来同步查询的细节,其中包括点击流事件的筛选条件。WebSocket Handler 将查询过滤器持久化到数据库表中,并在用户断开会话或 TTL(生存时间) 到期(在用户会话存在的情况下)时将其删除。该解决方案依赖了 Postgres 的 LISTEN/NOTIFY 功能,确保 Filter Worker 根据数据库的变更保持其内存缓存的最新状态。



将筛选事件路由给用户(来源:Expedia 工程博客)


与源主题相比,Filter Worker 服务显著减少了发布到筛选主题的事件的数量。发布到筛选主题的消息使用 Filter ID 作为键,WebSocket Handler 利用这个 ID 将消息路由给正确的用户。这种方法还支持对 WebSocket 层进行扩展,在工具用户数量增长时处理更大的负载。


原文链接


https://www.infoq.com/news/2023/12/expedia-websockets-kafka-query/


2024-01-13 08:0012465

评论

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

兼容M1的photoshop 2021 for Mac中文直装版安装包

Rose

Navicat Premium 15中文版:创建、管理和维护数据库

Rose

Autodesk AutoCAD 2021(cad 2021)中文序列号分享

Rose

强化版|伊克罗德信息ECRobot正式接入DeepSeek R1大模型

伊克罗德信息科技

RPA rag AI Agents DeepSeek v3

AI 驱动的视频增强工具 Topaz Video AI 破解安装教程-Mac/win

Rose

想在M1上运行安装iOS软件怎们办?

Rose

DeepSeek:探索AI辅助创作的无限可能

测吧(北京)科技有限公司

测试

【GreatSQL优化器-14】直方图应用

GreatSQL

优化器 直方图

等保三级测评流程解析以及相关问题解答

行云管家

等保 等保测评 等保三级

苹果Mac视频剪辑软件Final Cut Pro 11全新特效库

Rose

安森美芯片·声得乐助听器:重新定义听觉体验

极客天地

告别混乱!浩辰CAD看图王让项目管理井井有条

在路上

cad cad看图 CAD看图王

苹果虚拟机软件VMware Fusion Pro 13 密钥,VM虚拟机下载安装

Rose

CAD神器来了!让你的CAD标注效率翻倍

在路上

cad cad看图 CAD看图王

Microsoft Office 2019专业增强版+绿色精简版

Rose

Downie4最常用的几种下载方法,全能网页视频下载工具Downie使用教程

Rose

AI 聊天机器人开发框架及其特点

北京木奇移动技术有限公司

软件外包公司 AI机器人 AI聊天

AI工作流程开发框架

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI流程

Svelte 最新中文文档教程(12)—— 样式

冴羽

vue.js 前端 React Svelte SvelteKit

ONES 接入 DeepSeek,研发管理效率与体验双升级

万事ONES

ONES 研发管理平台 DeepSeek

macOS Big Sur 11(macOS11系统)v11.7.10正式版

Rose

零信任供应侧稳步发展并持续创新

芯盾时代

身份安全 零信任 统一身份管理平台

越“挖”越有料,天翼云“息壤”助攻DeepSeek变身万能搭子!

天翼云开发者社区

人工智能 算力 AI应用 DeepSeek

AI与低代码结合:中小企业的技术弯道超车之道

天津汇柏科技有限公司

AI 低代码

利用TencentOS 在企业私有化场景中快速部署DeepSeek

TencentOS

Linux 操作系统 DeepSeek TencentOS

终于搞懂MES和WMS系统的区别了

积木链小链

数字化转型 制造业 wms mes

基于条件的访问控制——RBAC

运维有小邓

rbac 身份管理平台 IT 运维

Expedia 使用 WebSocket 和 Kafka 实现近实时的数据流查询_业务架构_InfoQ精选文章