kafka分区与分组原理_Kafka系列:基本概念、概述、设计、集群

Kafka是一种 消息中间件 。举个例子,一个网站在用户进行注册的时候,后台的操作包括发送邮箱、写入用户表、写入日志等等,但是一般都不会等这些完全处理完才告诉你注册成功。这一系列的操作通常是异步的。

68465cf46ba7f63f3ed44e38a5cfc2c5.png

但是异步跟消息中间件有什么联系呢?我们试想一下,假如没有消息中间件,后台操作的顺序假设是

  • (1)写入用户表
  • (2)写入日志
  • (3)发送邮箱

如果系统在写入用户表之后,异常重启,或者需要更新(这个是很正常的,一般来说我们根本无法预估用户喜欢在什么时候在我们网站上注册用户,但是我们系统需要更新迭代)。那么后面两个步骤就因为系统重启内存被清空而无法完成了。

如果有了消息中间件,生产者(当前服务)将这三个操作进行消息通知,暂时存放在Kafka或者其他消息中间件中,等待消费者(下游服务)进行消费,然后异步操作写入用户表、日志以及发送邮箱。这么做的好处就是,不管当前服务、下游服务什么时候更新、或者出现了异常,都可以保证消息不会丢失,暂时保存在消息中间件中。

那么消息中间件就一定是万无一失的吗?不一定,但是通常来说,消息中间件具有稳定性高、处理逻辑简单、不需要更新迭代等特点,数据存在消息中间件中远比存在服务内存中要稳靠得多。

那么有了消息中间件,上下游之间的通信由原来的接口或者RPC调用改成了消息生产、消费,响应的性能会不会减弱呢?在一定程度上虽然会降低一些,但是目前Kafka等一些消息中间件,尽量保证消息的高吞吐、低延迟,每一秒可以处理几十万条消息。除去网络性能IO带来的开销无法避免之外,消息中间件几乎可达到毫秒级的延迟。

2、设计

消息中间件具有两种模式,一种是点对点(P2P),一种是发布/订阅(publish/subscribe),而Kafka属于第二种,如下图

af8a11feb345fc460d92eedb821b6ecd.png

发布者publisher发布一条消息message,订阅了这个发布者的所

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值