kafaka特性:
1.高可用:
通过多副本机制实现,每个partition的数据都会同步到其他机器上,形成自己的多个replica副本,然后所有副本选举出一个leader,
2.高性能
1)、批处理,从生产者发送到消费者消费,Kafka都进行了批处理操作
2)、消息压缩
3)、顺序读写提升磁盘性能,如果磁盘随机读写,需要进行寻址,而Kafka使用顺序读写
4)、pagecache加速读写,pagecache是操作系统给磁盘文件在内存中建立的缓存,当进程准备读取文件内容时,操作系统首先看待读取的数据所在的页是否在页缓存中,如果不在,就需要读取磁盘,然后将数据同步到页缓存,Kafka同样提供了同步刷盘,即避免因为宕机导致页缓存数据还未完成同步导致的数据丢失,但是实际没必要考虑这个因素,因为消息可靠性可以由多副本来解决,同步刷盘会带来性能的影响
5)、零拷贝,Kafka通过将pagecache中的数据直接复制到socket的缓冲区,减少了内核态到用户态再到socket缓冲区的复制过程
RocketMQ
RocketMQ由NameServer注册中⼼集群、Producer⽣产者集群、Consumer消费者集群和若⼲Broker(RocketMQ进程)组成,它的架构原理是这样的:
1. Broker在启动的时候去向所有的NameServer注册,并保持⻓连接,每30s发送⼀次⼼跳
2. Producer在发送消息的时候从NameServer获取Broker服务器地址,根据负载均衡算法选择⼀台服务器来发送消息
3. Conusmer消费消息的时候同样从NameServer获取Broker地址,然后主动拉取消息来消费