2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:002897
用户头像

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

关注

评论

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

SLSA 框架与软件供应链安全防护

SEAL安全

SLSA 软件供应链安全

Node.js异步编程之Promise

是乃德也是Ned

node.js 前端 7月月更

老司机狂飙之路--EventBus原理简要分析

芝麻粒儿

android EventBus 7月月更

纯CSS实现四种方式文本反差色效果

南城FE

CSS 前端 css动画 7月月更 反差色

你想知道的数组易错知识都在这了-C

芒果酱

7月月更

深入JS函数中默认参数的使用

猪痞恶霸

前端 js 7月月更

RocketMQ之消费者启动与消费流程

vivo互联网技术

RocketMQ 中间件 ACK

TDesign 组件库技术方案指北

TDesign

开源 Vue React 组件库

《看完就懂系列》聊聊CSS3的 calc() 函数

南极一块修炼千年的大冰块

7月月更

5G NR RRC连接控制

柒号华仔

5G 7月月更

适合初学者的 10 个JavaScript 代码整洁技巧

devpoint

JavaScript ES6 7月月更 数据操作

不习惯的Vue3起步四 の 生命周期&provide/inject

空城机

Vue3 7月月更

【LeetCode】奇数值单元格的数目Java题解

Albert

LeetCode 7月月更

Pro 单店版和多店版,你还傻傻分不清楚?

CRMEB

在线直播系统源码——开源源码

开源直播系统源码

软件开发 直播源码 开源源码 在线直播系统源码

GaussDB云数据库初步使用记录

DS小龙哥

7月月更

Qt|字符排序以及转化问题

中国好公民st

qt 7月月更

Wireshark抓包分析Eureka注册发现协议

程序员欣宸

Java SpringCloud Eureka 7月月更

iOS 中的 Category

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

QT和MFC的优缺点比较

乌龟哥哥

7月月更

图解网络:访问控制列表ACL,功能堪比防火墙!

wljslmz

防火墙 acl 网络技术 7月月更 访问控制列表

多传感器时间同步

秃头小苏

时间同步 7月月更

项目git commit时卡主不良代码:husky让Git检查代码规范化工作

zhoulujun

git husky lint-stated

注意!软件供应链安全挑战持续升级

SEAL安全

安全 软件供应链

《深入 Linux 设备驱动程序那和机制》读书笔记

贾献华

7月月更

Qt | 串口通信 QSerialPort

YOLO.

通信 qt 串口 串口通信 7月月更

QT实现 文件夹复制

小肉球

qt 7月月更

自己搭建git服务器:linux自己Gitlab服务

zhoulujun

gitlab git私有参考 git部署 git服务端

面对裁员?焦虑?不如好好投资自己

沃德

程序员 7月月更

Linux 0.12 源码阅读

贾献华

7月月更

Java面向对象基础

五分钟学大数据

Java 7月月更

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