首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka是否适合我们?

Kafka是否适合我们?

作者头像
dys
发布2018-06-04 16:36:24
8020
发布2018-06-04 16:36:24
举报
文章被收录于专栏:性能与架构性能与架构

在过去的几年中,Apache Kafka 的功能和覆盖范围已经有了很大的提高。500强公司中有三分之一在使用 Kafka,包括全球 Top10 银行中的7家、Top10 保险公司中的8家、美国 Top10 电信公司中的9家。

首先我们看一下 Kafka 提供的2个核心功能:

(1)消息系统

消息被广泛用于2中方式:

  • 队列

队列的消费者是一个worker组,每条消息只被其中的一个worker处理,高效的分摊了工作。队列非常适合容错和缩放。

  • 发布/订阅

订阅者彼此独立,每个订阅者都会拿到每一条消息,就像一个广播系统。

发布/订阅模式方便我们对系统进行解耦。

(2)流处理

有了一个健壮、可扩展的消息系统,如果能方便的对消息数据流进行处理就更好了。Kafka 的 Stream API正是提供了这个功能,它是一个 Java 客户端库,提供了比 producer 和 consumer 更高级别的抽象。

Stream API 可以轻松实现:

  1. 无状态操作,例如信息流的过滤和转换
  2. 有状态操作,例如在一个时间窗口内的连接、聚合操作
流处理的示例代码

从输入流读取文本,对每个单词进行计数,然后把计数结果写到输出流

Kafka 的典型使用场景

  • 例如一个旅游网站,酒店和机票的价格一直都在变。系统中的一些组件(例如价格告警、分析)需要得到这些变动通知。可以把变化信息发送到 Kafka topic 中,需要这些信息的组件作为订阅者来获取通知。
  • 可以使用kafka对网站行为(页面浏览、搜索等用户产生的行为)进行跟踪和分析,事实上,这才是kafka的初始应用场景,LinkedIn 开发 kafka 时就是为了干这个。不同类型的行为数据发送到不同的topic中,实时进行分析,来获取用户的参与度、页面访问路径等有价值的数据,以支持网站的运营策略。
  • 比如你有大量的位置数据,需要实时处理,来跟踪车辆路径、距离等等。可以把设备发送过来的位置数据放到 Kafka,然后使用 Stream API 来处理,例如对指定时间区间的某个用户的位置数据进行提取处理。

什么时候不要使用 Kafka?

  • 对于需要与 kafka 集群进行沟通的服务,如果你不能或者不想使用 Java/Scala,那么建议不要使用 Kafka,否则将无法使用 Stream API。
  • 如果你仅是需要一个任务队列,那么建议考虑使用 RabbitMQ。
  • 如果每天仅需要处理几千条信息,那么 Kafka 就有点重了。Kafka 适用于大规模的流处理,Kafka 的搭建和维护都需要不小的成本,所以如果处理量较小就不值得了。

翻译整理自

https://medium.freecodecamp.org/how-to-know-if-apache-kafka-is-right-for-you-1b2e468d52b9

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1)消息系统
  • (2)流处理
    • 流处理的示例代码
    • Kafka 的典型使用场景
    • 什么时候不要使用 Kafka?
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档