写点什么

Samza 的应用场景、优势、新特性与未来规划

  • 2016-10-30
  • 本文字数:1934 字

    阅读完需:约 6 分钟

Samza 是 LinkedIn 开源的一款流处理器,本文介绍了 Samza 在 LinkedIn 公司的应用情况,Samza 在流处理方面的优势、新特性以及下一步的规划

LinkedIn 使用 Samza 提升实时用户体验

  • 中央流量控制:在 LinkedIn,发送给用户的所有邮件都会经由中央 Email 分发 Samza 任务处理,该任务会根据特定的策略和窗口标准将同一用户的所有邮件进行聚合,最终向用户发送一个汇总的 Email,而不是将每个应用程序的 Email 单独发送给用户。
  • 广告关联:使用 Samza 计算广告点击率(CTR),通过 Samza 连接广告点击事件流和广告展现事件流,并聚合一些其他维度的数据来计算点击率。
  • 新闻递送:使用 Samza 连接包含“用户查看事件”的事件流和包含所有“新闻条目”的事件流从而判断为每个用户推送新闻的推送质量。该系统每天会处理数十亿事件。
  • 标准化和关联管道:基于 Samza 构建标准化平台,当用户在 LinkedIn 网站上修改职称、公司名称、地理位置等信息时,该管道能使用机器学习模型和关联规则快速解析所有同义词,将名称不同但含义相同的词语关联到一起。
  • ** 监控 A/B 测试期间网站的速度:** 实时监控 A/B 测试期间的各项指标,观察测试时间窗口内各指标对网站速度的影响,并对发现的异常进行警报。
  • 作为转换管道:使用 Samza 进行模式转换和聚合,生成事件并发送到 Kafka 实时事件输入流,实现与已有的 Graph 引擎和 Pinot 分析数据库等系统的集成。
  • 调用图:用户访问 LinkedIn 的过程中会产生很多服务调用事件,这些数据会被发送到 Kafka,之后 Samza 会基于唯一的“TreeID”聚合这些数据并生成网站健康报告。
  • 安全:通过 Samza 分析事件流,实时发现安全隐患、生成警报并执行防护措施。

Samza 的主要优势

  • 模型非常适合构建高性能有状态的应用程序
    大部分有状态的事件处理应用要么需要从远程数据库中读取数据,要么需要在应用内部维护状态,但是这些方式会有 I/O 或者 CPU 瓶颈。而 Samza 对本地集成数据库有良好的支持,可以在事件处理器中集成 RocksDB,从而将数据存储在本地,所有的数据获取操作都在本地完成,十分高效。
  • 将应用程序逻辑与底层的消息传输解耦
    Samza 支持可插拔的消息源(消费者)和蓄水池(生产者),用户可以根据自己的需要将 Kafka、ZeroMQ 等事件源直接与 Samza 结合到一起使用, 不需要预先将来自于不同事件源的数据汇聚到统一的消息系统进行标准化处理。

Samza 的新特性

  • 宿主亲和(Affinity)和状态重用
    启动任务时,Samza 会将主机和容器之间的映射关系存储到“协调流”中;关闭任务时,Samza 会将该任务的所有状态保存到 RocksDB 和偏移文件中;再次启动任务时,YARN 会按照映射关系将容器分配到它之前运行的那一台机器上,并恢复之前的状态数据继续运行。
  • 广播流
    不需要重启 Samza 就能通过修改“配置参数”动态改变整个应用程序的行为。
  • 协调流
    之前任务配置是以环境变量的形式通过命令行传递的,这种方式变量的个数有限制。新版本增加了一个名为“协调流”的集中持久流,用户可以将配置和相关系统信息存储到该流中,然后通过它来修改任务的动态配置。
  • RocksDB TTL
    可以让 Samza 状态存储中的老旧数据自动过期。
  • 为 HDFS 和 ElasticSearch 提供了新的系统生产者
    集成 HDFS 生产者 ElasticSearch 生产者 ,能够将应用程序的输出直接写入到 HDFS 和 ElasticSerarch。
  • Samza 框架无缝升级
    不再需要将 Samza 和应用程序一起打包,只需要将 Samza 二进制包预装到集群,应用程序会自动加载预装到集群中的 Samza。
  • 启动和停止能力
    提供了一个可以启动或者停止单个 Samza 任务的 REST API。
  • 通过在 Samza 任务中为容器指定一组静态的分区分配,摆脱了对 YARN 的依赖。
    不需要任何 YARN 依赖就能让 Samza 应用程序运行在 AWS EC2 等实例上。
    下一步计划
  • Samza 即类库
    解耦协调逻辑和 YARN 托管逻辑,使 Samza 能够支持 Mesos 、Kubernetes 等其他的集群管理系统,以及 AWS EC2 Microsoft Azure Compute Google Compute 等无集群管理器的云计算平台。虽然静态分区分配特性已经实现了部分功能,但是安装配置依然非常复杂,未来将进一步优化。
  • 进程支持并行执行
    在 Samza 中,每个应用程序运行在独立的容器(进程)中,每个容器单线程执行,这种方式内存利用率低。为了让 IO 操作并行执行,需要分配大量容器,且容器间的数据无法共享,为了解决这一问题,Samza 将增加并行执行特性。
  • 支持 DAG (有向无环图)
    简化 DAG 的表达方式,简化多阶段事件处理管道的配置和创建,使之易于部署、监控和升级。
  • 支持 Window 和 Join 操作符
    支持 Window 和 Join 操作符,让 Samza 应用程序在事件延迟到达的情况下也能产生精确的结果。

感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-10-30 19:002736
用户头像

发布了 321 篇内容, 共 127.7 次阅读, 收获喜欢 19 次。

关注

评论

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

4.29 时序分析与模型直播详解,从功能到应用的全面科普!

Apache IoTDB

如何成功防护T级超大流量的DDoS攻击

网络安全服务

CDN 服务器 DDoS 高防服务器 高防IP

后知后觉!要是大学就有这些 AI 工具,我能多拿多少奖学金

飞算JavaAI开发助手

英特尔2025年Q1营收127亿美元,数据中心与AI业务可圈可点

E科讯

无需云服务器、无需公网IP,轻松实现门禁系统远程接入与数据同步

贝锐

内网穿透 智能门禁

最火向量数据库Milvus安装使用一条龙!

王磊

2025 Java 开发避坑指南:如何避免踩依赖管理的坑?

飞算JavaAI开发助手

观测云数据在Grafana展示的最佳实践

观测云

Grafana

分布式高性能Java架构设计:高可用+低延迟+弹性扩展的架构范式与生产级方案及Java架构:核心原理与案例实战!

程序员高级码农

Java Java 面试 高性能

AI 代码生成工具的未来:飞算 JavaAI 如何定义新标准?

飞算JavaAI开发助手

基于华为开发者空间定制C/C++开发环境镜像

华为云开发者联盟

,华为云 华为开发者空间

深入解析淘宝商品详情 API 接口:功能、使用与实践指南

tbapi

淘宝API 淘宝商品详情API接口 淘宝商品数据采集 天猫商品详情API接口

YashanDB 知识库|数据误删别慌!一文教你搞定“表闪回”

数据库砖家

数据库·

BeeWorks Meet:私有化部署视频会议的高效选择

BeeWorks

即时通讯 IM 私有化部署

全网首测!三大 AI 编程工具生成 SpringCloud 代码对比

飞算JavaAI开发助手

为什么说BeeWorks即时通讯(IM)系统适合金融行业使用?

BeeWorks

即时通讯 IM 私有化部署 企业级应用

甲方急要「商品查询 + 订单接口」!飞算 JavaAI 一键生成标准 Controller 代码

飞算JavaAI开发助手

为什么 80% Java 新手卡在业务逻辑?AI 代码生成工具实测解忧

飞算JavaAI开发助手

视频丨Google 最新 AI 眼镜原型曝光:轻量 XR+情境感知 AI 打造下一代计算平台

声网

别让算力掉队:AI架构里被忽视的关键一环

ScaleFlux

企业级存储 定制化芯片 AI基础架构

【重磅】敲敲云桌面版正式发布!

JEECG低代码

零代码 桌面应用 敲敲云

抖音集团电商流量实时数仓建设实践

Apache Flink

大数据 flink 实时计算 实时数仓

YashanDB 知识库|如何回收表空间?高水位线是关键!

数据库砖家

数据库·

YashanDB 知识库|YMP 报 YAS-04204 创建索引失败?可能是你配置超了并发上限

数据库砖家

数据库·

AI电视里的达摩

脑极体

AI

YashanDB 知识库|数据库明明在线,yasboot 却显示“off”?其实是启动方式不对

数据库砖家

数据库·

怎么在线制作数据看板?3个看板软件大盘点!

职场工具箱

项目管理 职场 数据看板 看板软件 在线看板工具软件

Rime 最新 TTS 模型 Arcana:能听到呼吸声和轻微口腔音;Bubba AI:专为卡车司机打造的语音交互智能体丨日报

声网

运维实战来了|手把手教你构建 YashanDB 的 Prometheus Exporter

数据库砖家

数据库·

API 即 MCP|Higress 发布 MCP Marketplace,加速存量 API 跨入 MCP 时代

阿里巴巴云原生

阿里云 云原生 MCP

聚力共赢:超聚变联合枫清科技,构建“算力底座+知识中台”企业智能化新引擎

Fabarta

人工智能 #大模型

Samza的应用场景、优势、新特性与未来规划_语言 & 开发_孙镜涛_InfoQ精选文章