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

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

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

关注

评论

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

OkHttp 3,安卓移动开发大作业

android 程序员 移动开发

分享 | 一文了解 PG PITR 即时恢复

RadonDB

数据库 postgresql RadonDB

Okhttp的缓存机制,原理讲解

android 程序员 移动开发

OKio源码分析(1)six sy007 情感导师,android面试题2019

android 程序员 移动开发

毕业总结和毕业设计

cherrycheek

MVVM系列之一:Lifecycle,面试竟然被这31道Android基础题难倒了

android 程序员 移动开发

「元宇宙」赛道,除了脸书,微软也来了

BeeWorks

MVVM系列之二:LiveData,android程序开发教程

android 程序员 移动开发

QQ音乐Android编译提速之路,腾讯T2大牛亲自讲解

android 程序员 移动开发

MotionLayout_ 打开动画新世界大门 (part II)(1),kotlin框架

android 程序员 移动开发

OkHttp3源码详解之拦截器(四),计算机应届毕业生面试题

android 程序员 移动开发

OkHttp流程分析,音视频编解码技术

android 程序员 移动开发

OOM问题原理解析(二),移动端开发技术

android 程序员 移动开发

React Native Android混合开发实战教程(1),flutter瀑布流

android 程序员 移动开发

🔥 DeepVideo 智能视频生产训练营火热报名中!

阿里云CloudImagine

阿里云 媒体处理 智能视频 智能生产 视频云

《黑客之道》干了一夜的kali Linux之Metasploit渗透测试框架的基本使用

学神来啦

Linux 运维 黑客 渗透 Metasploit

Java线程安全ReentrantLock

FunTester

Java 性能测试 线程安全 测试开发 FunTester

Tapdata 等40余家行业知名企业,应邀参与共建 NextArch Foundation

tapdata

数据库 数据融合

OkHttp 断点上传的“基操”(1),完美讲解内存缓存LruCache实现原理

android 程序员 移动开发

React Native Android 源码框架浅析(主流程及 Java 与 JS 双边通信)

android 程序员 移动开发

Gartner预测到2025年,将有一半的云数据中心部署具有人工智能功能的机器人

BeeWorks

Linux编程之权限系统与工具使用(二),一文详解

android 程序员 移动开发

OkHttp 断点上传的“基操”,算法题+JVM

android 程序员 移动开发

阿里大佬手写Docker学习笔记就这?也就是让我五体投地的水平罢了

Docker 编程 程序员

springmvc的定时任务

小鲍侃java

11月日更

网易云信亮相 LiveVideoStackCon 2021,解构自研大规模传输网 WE-CAN

网易云信

通信云 传输协议

实验室信息系统的主要功能及作用

低代码小观

企业管理 管理系统 LIMS实验室信息管理系统 信息管理系统 实验室

MotionLayout_ 打开动画新世界大门 (part II),android插件化原理

android 程序员 移动开发

直呼内行!阿里大佬离职带出内网专属“高并发系统设计”学习笔记

编程 程序员 消息队列 高并发系统

Native开发工具之CPU 和架构(三),学习Android开发的步骤,

android 程序员 移动开发

一站式智能化是采购数字化的大趋势

BeeWorks

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