Expedia 使用 WebSocket 和 Kafka 实现近实时的数据流查询
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-jing.png)
摘要
Expedia 实现了一种解决方案,该解决方案可以从其平台上近实时地查询点击流数据,这使得产品和工程团队能够实时探索数据,以开发和增强数据驱动的特性。这一系统利用了 WebSocket、Apache Kafka 和 PostgreSQL 的组合,以流式传输查询结果至用户浏览器。
Expedia 面对的一个挑战是如何在数据注入后立即查看数据以确保数据质量。事件驱动的工具允许用户快速有效地查询和查看流数据。解决方案使用 WebSocket 实现了浏览器和服务器之间的双向实时通信,优化了性能并减少了资源开销。
这个解决方案包括 UI 应用程序、WebSocket Handler 和 Filter Worker。UI 提供了查询表单和通过 WebSocket 发送查询结果的小部件。服务器端的 WebSocket Handler 负责处理查询并发送流式结果。Filter Worker 将事件流发布到 Kafka 主题。这些服务在 Kubernetes 上运行,并通过 PostgreSQL 数据库同步查询细节,使用 Postgres 的 LISTEN/NOTIFY 功能保持缓存更新。
Filter Worker 显著减少了发布到筛选主题的事件的数量,并将事件路由给正确的用户。这种方法支持 WebSocket 层的扩展,以应对用户数量增长时的更大负载。
想要了解更多内容?
![](/theme/default/default/images/main/icon-jing.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)