写点什么

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

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

关注

评论

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

支持故障自动秒级检测,华为云VPN更省心!

IT科技苏辞

【web 开发基础】如何调换数组中的键和值(53)

迷彩

数组合并 数组操作 PHP基础 数组整理

如何准备Java技术岗春招面试:史上最全Java核心知识点笔记奉上

钟奕礼

程序员 Java 面试 Java、 java 编程

华为云对象存储,助力企业驶入“数据快车道”

清欢科技

大数据一站式服务,华为云大数据BI驱动企业业务线增长

秃头也爱科技

华为云对象存储OBS,助力企业降本增效

清欢科技

共创、共享、共赢云生态,华为云ECS助力企业轻松上云

IT科技苏辞

华为云ECS弹性服务器,加快企业数字化转型的进程!

IT科技苏辞

【web 开发基础】PHP8中数组的序列化和反序列化(54)

迷彩

数组 对象 序列化 反序列化 PHP基础

华为云OBS对象存储:企业“上云”的好帮手

清欢科技

数字经济时代,为什么华为云ECS能获得更多用户的青睐?

IT科技苏辞

解决“双十一”电商行业数据存储难题,华为云OBS值得期待

清欢科技

BI-数据可视化 | 年度干货合集

搞大屏的小北

数据可视化工具 BI 分析工具 BI分析 市场分析

HTTP的四种认证方式

穿过生命散发芬芳

HTTP 12月月更

实力是最好的武器!华为云ECS助力企业更好发展

IT科技苏辞

助力企业降本增效:华为云ECS,助力企业数字化转型需求

IT科技苏辞

RayLink测评 | 完全免费,功能超越同类付费远程控制软件!!

RayLink远程工具

远程控制软件 远程办公软件 远控软件

我凭借这份pdf,最终拿到了阿里,腾讯,京东等八家大厂offer

钟奕礼

程序员 Java 面试 Java、 java 编程

2022年中国数字文化娱乐产业综合分析

易观分析

产业 文娱

推动企业稳定发现,华为云大数据助力能源企业纾困

秃头也爱科技

打碎软件应用,在产业互联场景中串联—钉钉7.0关注企业间高效协同

B Impact

跨浏览器测试策略

FunTester

2022-12-30:某天小美进入了一个迷宫探险,根据地图所示,这个迷宫里有无数个房间 序号分别为1、2、3、...入口房间的序号为1 任意序号为正整数x的房间,都与序号 2*x 和 2*x + 1

福大大架构师每日一题

算法 rust 福大大

【web 开发基础】PHP中的类和对象(55)

迷彩

面向对象 封装、继承、多态 类与对象 PHP基础

PostgreSQL 技术内幕(四)执行引擎之Portal

酷克数据HashData

postgresql

阿根廷夺冠梅西加冕,球场外视频平台角逐世界杯

易观分析

视频 足球 卡塔尔世界杯

华为云对象储存OBS,为企业提供优秀且安全的数据储存环境

清欢科技

提升企业决策能力,华为云用大数据BI助力企业腾飞

秃头也爱科技

Android程序签名打包

芯动大师

Android Studio 打包签名 签名的含义

2022年度总结:虽迷茫,仍前行

年度总结

【冲破信息孤岛】华为云大数据BI,助力金融行业进行数字化转型

秃头也爱科技

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