阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

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

关注

评论

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

Android-框架问题分析案例---谁杀了桌面-,android软件开发教程

android 程序员 移动开发

Android-面试-Jetpack-LiveData-你必须滴知道得知道的那些玩意儿

android 程序员 移动开发

Android-Studio-教程:入门开发第一个程序,真牛皮

android 程序员 移动开发

Android-_巧_仿蚂蚁森林水滴动效,Android开发技巧

android 程序员 移动开发

AndroidX,安卓framework开发

android 程序员 移动开发

Android-悬浮窗功能的实现(附Java、KT实现源码,Android黑科技实现原理揭秘

android 程序员 移动开发

Android-源码分析-Dalvik-虚拟机创建过程,干货整理

android 程序员 移动开发

Android-是不是要跪了-我几乎是一个废安卓了!,kotlin开发框架

android 程序员 移动开发

Android-架构组件的最新进展,安卓工程师面试题及答案

android 程序员 移动开发

Android10填坑适配指南,实际经验代码,拒绝翻译,android开发书籍pdf下载

android 程序员 移动开发

AndroidStudio Gradle第三依赖统一管理,移动端开发技术

android 程序员 移动开发

Android—Dagger2-让你爱不释手--终结篇(附视频讲解(1)

android 程序员 移动开发

Android-Framework学习笔记(三)SystemServer进程启动过程

android 程序员 移动开发

Android-OkHttp-史上最优雅的设置baseUrl(1),android开发视频播放代码

android 程序员 移动开发

Android-面试官:View-post()-为什么能够获取到-View-的宽高-?

android 程序员 移动开发

Android之使用Assets目录中的xml布局、网页、音乐等资源

android 程序员 移动开发

Android中级面筋:开发2年的程序员如何短期突击面试?跟着这几步去准备

android 程序员 移动开发

Android事件分发机制源码解析,最新Android通用流行框架大全

android 程序员 移动开发

Android-Navigation的四大要点你都知道吗?,深入理解JVM

android 程序员 移动开发

Android-黑科技保活实现原理揭秘,字节跳动Android内部学习资料泄露

android 程序员 移动开发

Android-面试中常问的MMAP到底是啥东东?原理及应用解析

android 程序员 移动开发

Android-怎么就不卡了呢之Choreographer,怒斩腾讯和阿里的Offer

android 程序员 移动开发

Android-适配各国语言、屏幕尺寸、系统版本及常见适配方法总结

android 程序员 移动开发

Android—Dagger2-让你爱不释手--终结篇(附视频讲解,Flutter全方位深入探索

android 程序员 移动开发

Android—案例分析解读:观察者模式,androidstudio社区

android 程序员 移动开发

Android-Framework学习笔记(二)Zygote进程启动过程,移动互联网app开发

android 程序员 移动开发

Android-样式系统---主题背景属性,最新金九银十Android面试合集

android 程序员 移动开发

Android-系统预设-App,有什么难的?,关于Android开发的面试经验总结

android 程序员 移动开发

Android-音视频学习系列-(三)-Shell-脚本入门,高级安卓工程师面试题

android 程序员 移动开发

Android-OkHttp-史上最优雅的设置baseUrl,安卓binder

android 程序员 移动开发

Android-气泡对话框(根据被点击View位置显示、可定制,移动端开发

android 程序员 移动开发

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