kafka

https://mp.weixin.qq.com/s/bc2YcVeBglZkeHdASg3wXw

1.为什么使用消息队列?
引入MQ好处:

  • 系统解耦
  • 异步调用
  • 流量削峰

2.使用消息队列有什么缺点?

  • 系统可用性降低
  • 系统复杂性增加 3.消息队列如何选型?

4.如何保证消息队列是高可用的?

5.如何保证消息不被重复消费?

6.如何保证消费的可靠性传输?

7.如何保证消息的顺序性?

kafka可靠性保证

关系型数据库ACID

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

kafka 可靠性保证

  • kafka 可以保证分区消息的顺序
  • 只有当消息被写入分区的所有同步副本时(但不一定要写入磁盘),它才被认为是“已提交”的
  • 只要还有一个副本是活跃的,那么已经提交的消息就不会丢失
  • 消费者只能读取已经提交的消息

分区的分布:
默认情况下,kafka会确保分区的每个副本被放在不同的broker上。

发送确认:
生产者可以选择3中确认模式

  • acks=0 如果生产者能够通过网络把消息发送出去,那么就认为消息已成功写入Kafka;
  • acks=1 Leader在收到消息并把它写入到分区数据文件(不一定同步到磁盘上)时会返回确认或错误响应,
    在这个模式下,如果发生正常的Leader选举,生产者会在选举时收到一个LeaderNotAvailableException异常,
  • acks=all
坚持原创技术分享,您的支持将鼓励我继续创作!