上一篇 <<<Kafka如何保证消息顺序消费
下一篇 >>>Kafka集群环境搭建
如果单个消费者的话,吞吐量会非常低,如何保证呢?
采用工作队列+thread线程处理。
每个工作队列都应该一个Thread,如果有多个的话,消息顺序也会被打乱。
1.支持顺序读写磁盘实现数据存储
Kafka是采用不断的将数据追加到文件中,该特性利用了磁盘的顺序读写性能比传统的磁盘读写可以减少寻地址浪费的时间;
2.支持批量投递和获取消息,减少IO操作
传统方式消息投递:
在1s内有1W消息,循环遍历1W次投递到MQ中;非常浪费服务器内存,异步批量投递,可能会丢失。
可以将消息投递到缓存区中,在以定时或者/缓存大小方式将数据写入到MQ服务器中,这样可以减少IO的网络操作,但是这种方式也存在很大缺陷数据可能会丢失。【所以缓冲区都应该做到持久化】
3.采用零拷贝机制--可减少用户空间的拷贝
4.采用分区存放消息,根据Partition实现对我们的数据的分区
5.对我们的数据实现压缩,减少网络的传输
推荐阅读:
<<<消息中间件的核心思想
<<<消息中间件常见问题汇总
<<<基于Netty简单手写消息中间件思路
<<<消息队列常用名词与中间件对比
<<<Rabbitmq基础知识
<<<Rabbitmq示例之点对点简单队列
<<<Rabbitmq示例之工作(公平)队列
<<<Rabbitmq示例之发布订阅模式
<<<Rabbitmq示例之路由模式Routing
<<<Rabbitmq示例之通配符模式Topics
<<<Rabbitmq示例之RPC模式
<<<Rabbitmq队列模式总结
<<<Rabbitmq如何保证消息不丢失
<<<Springboot利用AmqpTemplate整合Rabbitmq
<<<Rabbitmq如何保证幂等性
<<<Rabbitmq的重试策略
<<<Rabbitmq通过死信队列实现过期监听
<<<Rabbitmq解决分布式事务思路
<<<Rabbitmq解决分布式事务demo
<<<Rabbitmq环境安装
<<<Kafka中的专业术语都有哪些
<<<Kafka的设计原理介绍
<<<Kafka集群如何实现相互感知
<<<Kafka如何实现分区及指定分区消费
<<<Kafka如何保证消息顺序消费
<<<Kafka集群环境搭建
<<<RocketMQ架构原理
<<<RocketMQ、RabbitMQ和Kafka的对比
<<<SpringBoot整合RocketMQ示例
<<<RocketMQ保证顺序消费demo
<<<RocketMQ如何动态扩容和缩容
<<<RocketMQ如何解决分布式事务
<<<RocketMQ单机版本安装
<<<RocketMQ集群环境程序启用相关知识点
<<<RocketMQ单机做主备实操
<<<RocketMQ所有配置说明