kafka基本概念和集群架构
消息系统的意义
- 解耦
- 生产者和消费者可以单独的进行扩展和修改,只需要遵循同样的接口约束就行
- 扩展性
- 因为解耦特性,可以单独的增加消息入队和处理频率
- 冗余和防止数据丢失
- 消息队列接受大量的数据并将数据持久化,直到被消费为止
- 从消息队里删除数据前,需要处理系统明确的告知消息队里已处理完数据,从而保证了数据不会丢失。
- 消息队列接受大量的数据并将数据持久化,直到被消费为止
- 灵活性和峰值处理能力
- 数据可能有峰值,按照峰值来配置资源会造成浪费。有了消息系统,峰值的压力由消息系统承担,大量的数据可以进入消息队里等待,而不是必须马上处理。
- 可恢复性
- 可恢复性主要指的是处理数据程序的可恢复性。系统的一部分组件失效时,不会影响整个系统。当某个处理程序重新启动后,可以继续处理数据
- 顺序保证
- 大部分消息队列是有序的,并且能保证数据会按照特定的顺序被处理。(kafka保证一个partition内的消息的消息有序,全局不保证,除非只有一个partition。但是只有一个partition就没意义了)
- 缓冲
- 由于解耦合消息队列的存在,生成消息和消费消息的速度可以不一致
- 异步通信
- 很多时候,用户不想也不需要立即处理数据。消息队列提供了异步通信机制。生产者可以一直向消息系统的消息队列放入数据,消费者可以在需要的时候处理数据。
简单来说消息系统的核心意义是</