kafka是如何获取数据的?

各位大神好,最近简单的了解了一下kafka,知道他是处理实时数据的一种方式。但是我有以下几个疑问,请求解答。
1.kafka消费数据来源于哪里?是来自mysql吗?还是把Kafka镶套在代码吗?类似把sql的insert into 套在应用程序里面一样的获取数据呢?
2.kafka是生产消费数据,我就纳闷一个工具是如何生产出数据的?
3.通过卡夫卡的数据能放到mysql里面去吗?

阅读 10.8k
3 个回答

最近再用kafka,但是不是什么大神,说说我的看法。
kafka 是一个消息队列。

1.kafka消费数据来源于哪里?是来自mysql吗?还是把Kafka镶套在代码吗?类似把sql的insert into 套在应用程序里面一样的获取数据呢?

kafka的可以接受的数据来源非常广泛,可以是服务器日志,也可以是数据库中的数据,甚至你可以自己编写python脚本往kafka发送自己构造的数据。kafka是一个开源产品,提供api接口,常见的就是post到kafka所在机器的ip+port/url。 他是一个产品,不是一个库。

2.kafka是生产消费数据,我就纳闷一个工具是如何生产出数据的?

kafka里的概念中有生产者和消费者。但是生产者指的是往kafka中吐数据的进程,并不是kafka自己凭空生产数据的。

3.通过卡夫卡的数据能放到mysql里面去吗?

kafka的数据理论上可以放到任何地方去,他只是个消息队列。
举个例子,你养了一只鸡,他每天早晨下一个鸡蛋(生产者),你每天晚上吃一个鸡蛋(消费者)。中间这段时间你可以看成是空档期,你放在鸡窝里,鸡可能母爱泛滥开始孵小鸡,明天不下蛋了。或者下了两个蛋,你吃不完了。你拿走放在兜里可能会不小心摔碎了。 你需要一个篮子(kafka消息队列)。
生产者产出的数据放到篮子里就可以离开了,不管你什么时候消费这些数据。
消费者也不必死等数据,只要需要的时候去篮子取。

这是个非常简单的例子,同时kafka内部还实现了复杂的分配方式,针对分布式消息处理有自己的一套逻辑,可以使你专注于业务开发。以上是我使用kafka的一些浅显理解。

你可以理解kafka是一个很牛X的消息队列。消息队列,就像水管一样是消息传输的容器。我暂且把kafka比喻为水管子,可以放各种水的大水管子,大水管子可以细分很多小水管子也就是topic,当有饮用水时就找到饮用水的topic,往里灌水;当有牛奶时,就找到牛奶的topic,往里灌牛奶。不同的人根据自己的需求的不通,取不同的topic里面的液体。灌水的就是生产者,取水就是消费者。 数据不会凭空出现的。

新手上路,请多包涵

kafka是一个分布式的消息队列,用来传递消息,它提供了可以生产和消费的客户端,至于数据的我来源完全取决于业务的需求。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进