Kafka快速入门与实战
胡夕
人人贷计算平台部总监,Apache Kafka Contributor
立即订阅
2 人已学习
课程目录
已完结 5 讲
01 | Kafka体系架构:一篇文章带你快速搞懂Kafka术语
02 | Kafka版本:你知道如何挑选Kafka吗?
03 | 部署方案:生产环境中的 Kafka 集群方案该怎么做?
04 | 最最最重要的集群参数(上):如何配置Broker端参数?
05 | 最最最重要的集群参数(下):如何配置Topic、JVM和操作系统参数?
Kafka快速入门与实战
登录|注册

01 | Kafka体系架构:一篇文章带你快速搞懂Kafka术语

胡夕 2020-01-07
你好,我是胡夕。今天我们正式开启 Apache Kafka 学习之旅。
在 Kafka 的世界中有很多概念和术语是需要你提前理解并熟练掌握的,这对于后面你深入学习 Kafka 各种功能和特性将大有裨益。下面我来盘点一下 Kafka 的各种术语。
在专栏的第一期我说过 Kafka 属于分布式的消息引擎系统,它的主要功能是提供一套完备的消息发布与订阅解决方案。在 Kafka 中,发布订阅的对象是主题(Topic),你可以为每个业务、每个应用甚至是每类数据都创建专属的主题。
向主题发布消息的客户端应用程序称为生产者(Producer),生产者程序通常持续不断地向一个或多个主题发送消息,而订阅这些主题消息的客户端应用程序就被称为消费者(Consumer)。和生产者类似,消费者也能够同时订阅多个主题的消息。我们把生产者和消费者统称为客户端(Clients)。你可以同时运行多个生产者和消费者实例,这些实例会不断地向 Kafka 集群中的多个主题生产和消费消息。
有客户端自然也就有服务器端。Kafka 的服务器端由被称为 Broker 的服务进程构成,即一个 Kafka 集群由多个 Broker 组成,Broker 负责接收和处理客户端发送过来的请求,以及对消息进行持久化。虽然多个 Broker 进程能够运行在同一台机器上,但更常见的做法是将不同的 Broker 分散运行在不同的机器上,这样如果集群中某一台机器宕机,即使在它上面运行的所有 Broker 进程都挂掉了,其他机器上的 Broker 也依然能够对外提供服务。这其实就是 Kafka 提供高可用的手段之一。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Kafka快速入门与实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(13)

  • 吴贤龙
    感觉应该是Sql的读是真的只读,可以无任何操作,消息的读不同,读取并消费完之后,是必须要做相应的处理,标记为已读或其他操作,等同于更新,所以只能放在master上读
    2020-01-08
    2
  • _funyoo_
    在我看来,消息队列的主从和mysql的主从本来就不一样

    Mysql:主库写,从库只支持读,只需要主库写入数据从库同步就行
    Kafka:主分区写,从分区同步。不能从从分区读是因为从从分区读可能会丢消息。

    举例子来说:

    当主分区写入消息,同步至从分区时:
    如果有的从分区写入了,有的因为网络或者掉线没有写入成功。到第二条消息过来又需要同步时,这次某个第一次因为网络等原因未同步上的从分区这次又同步上了新消息,消费者如果从这个从分区消费,就会丢消息。

    可能有人说,那我同步的时候,就要求给所有从分区全部同步后再给生产者返回结果不行吗?
    倘若,有从分区所在机器挂了,同步就卡死在这了
    2020-01-08
    2
  • 颜青青
    老师,请教您一个问题。我看文章里说,所有消费者是“瓜分”订阅主题的数据。我这边一个生产者,产生数据A,我希望N个消费者都能收到A去进行消费,比如消费者1把A存mysql,消费者2把A存redis,只是他们的处理逻辑不同。这种业务场景,kafka能满足吗?
    2020-01-10
    1
    1
  • lianjoke
    个人观点:
    允许追随者副本对外提供读服务 还是为了增加并发,提高读取效率和吞吐量。但Kafka已经通过顺序读取,消费者组等方法已经达到较高的吞吐和读性能的目的,已无需Follower副本对外提供服务,这样反而会增加Broker的负担,降低整体的读写性能。
    2020-01-10
    1
  • 遇黑则明16619751287
    读写分离是为了解决锁冲突、提高效率,KafKa没有读写冲突的问题。如果读追随者副本又该读哪个呢,索性读领导者
    2020-01-09
    1
  • 老杨
    最后的思考题应该跟消费者位移有关吧。leader&follow如果都能对外提供服务,消费者位移在同步时可能产生冲突
    2020-01-08
    1
  • 小白
    因为kafka生产消费一般用的是实时性,副本如果可读,第一个问题是数据一致性。
    如果是实时推送,领导者里有消息,追随者里还没来得及同步过来,而消费者从追随者就拿不到消息了。
    第二个问题是消费者会出现一会有数据一会没数据,因为消费者从不同的追随者读,可能有的追随者同步了数据,有的还没同步过来。
    在kafka里,追随者同步的数据主要用于领导者挂了后,重新再选一个追随者。
    这是我的理解,不足之处请指出
    2020-01-08
    1
  • mickey
    需要保证消息被消费的唯一性,减少系统的复杂性
    2020-01-20
  • 张y
    kafka支持消费者组并发读取,但是会顺序消费Offset(其实也还是类似同步),如果一旦支持追随者读取,将需要多向(同步数量=所有副本数)同步Offset消费情况。管理会很混乱,且影响TPS。
    2020-01-19
  • 龙云
    读副本涉及到主从同步延迟的问题,为了保证时效性,不从主读数据
    2020-01-08
  • 宝仔
    MySQL其实也不是一定能够允许追随者副本提供对外读服务的把,如对数据库数据一致性有高要求的就不行了,毕竟主从复制可能会有延迟的情况发生。
    2020-01-08
  • Geek_plb
    啦啦啦
    2020-01-08
  • Rocky
    纯新人,想问问Exception thrown when sending a message with key='null' and payload 这个怎么解决?每次只能重启kafka换topic才能解决
    2020-01-08
收起评论
13
返回
顶部