聊聊Kafka的应用场景No.37

当当当,我又来啦。

Kafka是什么吖有小伙伴问。

顺手丢两个描述。

啊官网爸爸是这样说的:

Apache Kafka™ is a distributed streaming platform.

度娘是这样说的:

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。

大蕉是这样说的:

Kafka就是汪星人,有人丢飞盘就汪汪汪。

其实Kafka就是一个消息中间件,用来在进行N对N的消息传播,跟聊天室同一个道理,那么Kafka提供了什么样的功能呢?

  • It lets you publish and subscribe to streams of records. In this respect it is similar to a message queue or enterprise messaging system.
  • It lets you store streams of records in a fault-tolerant way.
  • It lets you process streams of records as they occur.

啊、能发布和订阅啦。

啊、消息能容错啦。

啊、有消息能及时处理啦。

啊是啦是啦、你最叻你最叻啦。

业界还有RabbitMQ,RocketMQ等,也都是很优秀的消息中间件。

使用的过程大概是这样的。大概生产者丢丢丢丢丢,消费者拿拿拿拿拿

突然收到启发,今天呢不打算讲原理,讲讲应用。

  • 应用场景一:日常系统解耦。

比如系统A有每次都有一个请求需要发送到系统B,而A又不需要等B的结果。这时候我们经常会起一个子线程或者丢入ThreadPool来完成这个工作。

有了Kafka,啊,A系统主线程直接丢给Kafka,完事。

B系统接收到消息就做后续操作。

这时候已经跟A没关系啦。

解耦,嗯,对。

完事。

  • 应用场景二:配置项更新

比如我们系统A有很多的配置项,传统的思路都是放在redis啊或者jvm内存啊,这样的,然后用定时任务去检查配置项有没有更新。或者直接改配置项重启完事。

太麻烦,太浪费了,一直在空跑。

可以这样:配置项放在Map里面,跑的时候直接去Map取。

有了Kafka,啊有配置项更新,直接丢个消息给Kafka。

这时候A系统接收到消息,就屁颠屁颠跑去更新缓存里的配置项啦。

高效,嗯,对。

完事。

  • 应用场景三:机器学习模型更新。

跟应用场景二一样,也是线上有个模型,然后跑得好好的,现在需要更新,咋办?

可以这样:模型放在Map里面,跑的时候直接去Map取。

有了Kafka,啊有模型更新,直接丢个消息给Kafka。

系统就屁颠屁颠跑去重新加载模型了。

完事。

  • 应用场景四:Oracle库实时同步

这个就很少人能想到啦,如果我们在MongoDB有数据,需要实时跟Oracle保持一致,咋办咋办咋办?

可以这样,用Oracle的gg产生的日志文件,发送给kafka。

然后起个消费者,接收到日志文件就去操作MongoDB就可以啦。

完事。

  • 应用场景五:准实时Spark流计算。

这个没啥好说的,SparkStreaming自己去官网看。

完事。

昨天想了一下,握草,原来Kafka能干这么多事呢。

原文发布于微信公众号 - 一名叫大蕉的程序员(DaBananaTalk)

原文发表时间:2017-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏加米谷大数据

MapReduce作业调度

可以通过设置mapred.job.priority属性或JobClient的setJobPriority()方法来设置优先级(在这两种方法中,可以选VERY_H...

37412
来自专栏FreeBuf

CVE 2017-0199漏洞利用的新姿势

近日从客户处捕获一枚邮件附件中的可疑word样本,以下是扫描结果,检测率貌似不高。 ? ? 手动分析吧。 文件md5:0b16b255918264667a9f0...

2445
来自专栏FreeBuf

安全运维之如何找到隐匿于last和w命令中的ssh登录痕迹

*本文原创作者:ForrestX386,本文属FreeBuf原创奖励计划,未经许可禁止转载

1132
来自专栏FreeBuf

利用Pentestbox打造MS17-010移动杀器

1、前言 前段时间Shadow Broker披露了 Windows大量漏洞,甚至爆出黑客组织 Equation Group 对于Windows 远程漏洞 MS1...

3607
来自专栏小樱的经验随笔

BugkuCTF sql注入

1493
来自专栏along的开发之旅

adb shell 如何选择特定的设备?

其实这个一查,stackoverflow或者百度谷歌一大把,比如这个“http://stackoverflow.com/questions/14654718/h...

792
来自专栏信安之路

Cobalt Strike 初体验

Cobalt Strike 一款以 metasploit 为基础的 GUI 的框架式渗透测试工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win ...

1300
来自专栏北京马哥教育

Python框架:Django写图书管理系统(LMS)

今天我会带大家真正写一个Django项目,对于入门来说是有点难度的,因为逻辑比较复杂,但是真正的知识就是函数与面向对象,这也是培养用Django思维写项目的开始

2470
来自专栏FreeBuf

NSA武器库之Eternalchampion(永恒冠军)复现

准备工作 攻击机1:带有漏洞利用工具集的XP,并且此次需要准备好WinHex, IP 172.26.97.35 攻击机2:Kali, IP 172.26.97....

2816
来自专栏晨星先生的自留地

黑客技能训练:攻破MrRobot

1884

扫码关注云+社区

领取腾讯云代金券