前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊Kafka的应用场景No.37

聊聊Kafka的应用场景No.37

作者头像
大蕉
发布2018-02-05 17:56:42
2.6K1
发布2018-02-05 17:56:42
举报
文章被收录于专栏:一名叫大蕉的程序员

当当当,我又来啦。

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能干这么多事呢。

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

本文分享自 一名叫大蕉的程序员 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档