《消息中间件Kafka资料说课材料.ppt》由会员分享,可在线阅读,更多相关《消息中间件Kafka资料说课材料.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、消息中间件Kafka资料MQ系统RedisRedis是一个NoSQL数据库处理小流量的消息队列不适用于大流量的应用场景MQ系统ActiveMQActiveMQ2007 年发布第一个版本(同年 JDK1.5发布)被广泛应用于零售、银行、电子商务和政府等领域。稳定性好,性能还过得去。缺少异步 Java API 和 NIO支持,在高资源配置的计算机上扩展性不佳。Apollo重写了 ActiveMQ 内核,Apache称其为最快、最强健的STOMP(Streaming Text Orientated Message Protocol,流文本定向消息协议)服务器。github 一年多没更新,网传 Apo
2、llo项目已经失败MQ系统ZeroMQ不支持序列化,阅后即焚。如果服务器宕机,数据将丢失ZeroMQ本身只是一个网络协议栈的实现库.使用过程中由应用服务器扮演服务器的角色ZeroMQ的目标是,成为 Linux 内核的一部分逆天的性能MQ系统Kafak VS RocketMQ定位Kafak:由 Linkin 开源,用于即时的日志传输RocketMQ:由淘宝开源,实现非日志的可靠消息传输,用于交易、订单、充值等场景TPS 性能kafka 单机写入 TPS 在百万条/秒,消息大小为10bRocketMQ 单机 7万条/秒,消息大小为10b队列数kafak 单机超过 64个队列/分区,Load 会发生
3、明显的飙高现象RocketMQ 最高支持 5万队列实时性Kafka使用短轮询方式,实时性取决于轮询间隔时间RocketMQ使用长轮询,同Push方式实时性一致,消息的投递延时通常在几个毫秒。成熟度Kafka在日志领域比较成熟,操作系统Crash,会导致数据丢失RocketMQ在阿里集团内部有大量的应用在使用,不会丢消息MQ系统总结MQ系统系统特点特点Redis NO-SQL数据库,适用于处理少量 MQ 数据ActiveMQ 久经沙场的老战士,稳定性好ZeroMQ 一个网络通信协议栈性能超级强劲RocketMQ 阿里出品标准 MQ 系统中性能最好的Kafka/Jafka 专为日志收集设计非标准
4、MQ 系统,容灾能力弱,性能超过 RocketMQ消息处理速度上限大约为 100MB/s Kafka 架构系统结构kafka clusterBroker 1Broker 2Broker 3Producer-AProducer-BProducer-CConsumer-AConsumer-AConsumer-CZookeeper基础架构Kafka 架构基本概念主题:topic分区:partition消息:message生产者:producer消费者:consumer group消息队列:brokerProducerTopicConsumer GroupPartitionConsumer11.N11
5、.NKafka 架构kafka 消息流程图topictopic消息队列Producer-AProducer-BConsumerconsumer consumer groupgrouppartitionproducerproducer本地磁盘注1:消息队列依赖于本地磁盘注2:默认情况下,磁盘存储会保存 7 天Kafka 架构kafka 消息流程图topictopic消息队列Producer-AProducer-BConsumerconsumer consumer groupgrouppartitionproducerproducer本地磁盘1本地磁盘2注1:在一个由6个7200rpm的SATA硬
6、盘组成的RAID-5磁盘阵列上,线性写入的速度大约是300MB/秒,随机写入却只有50k/秒。注2:在某些情况下,顺序磁盘访问能够比【随机随机随机随机】内存访问还要快!Kafka 架构kafka 集群运行流程图broker(1)broker(2)topictopic13741282109611Producer-AProducer-BConsumer-AConsumer-BConsumer-Cconsumer consumer groupgrouppartition 1partition 2partition 3producerproducerKafka 架构topic&partitiontop
7、ictopicbroker(1)13741282broker(2)109611Producer-AProducer-BConsumer-AConsumer-BConsumer-Cconsumer consumer groupgrouppartition 1partition 2partition 3producerproducerproducer 怎么保证业务有序?1、每个 partition 对应一个文件(夹)2、分文件存储利于增加 topic 消息容量3、把 partition 放在不同磁盘上,可以提高读写性能4、把 partition 分散在不同机器上,支持负载均衡5、通过迁移单个 pa
8、rtition,实现快速水平扩展6、partition内有序,partition间无序Kafka 架构producertopictopicbroker(1)13741282broker(2)109611Producer-AProducer-BConsumer-AConsumer-BConsumer-Cconsumer consumer groupgrouppartition 1partition 2partition 3producerproducerconsumer 处理速度跟不上怎么办?1、自定义 partitioner,保证同族消息保存在相同 partition 中,默认为 hash 算
9、法随机分配2、异步提交时,会把多个消息合并,提高IO性能3、如果对 topic 进行水平扩容,producer 需要重新获取 broker 列表,重新连接Kafka 架构consumertopictopicbroker(1)13741282broker(2)109611Producer-AProducer-BConsumer-AConsumer-BConsumer-Cconsumer consumer groupgrouppartition 1partition 2partition 3producerproducer不同的 consumer Group 之间有什么关系?Thread-AThr
10、ead-BThread-C1、一个 partition 只会被一个 consumer 线程连接;2、一个 consumer group 由多个 consumer 线程组成;3、一个 consumer group 可以同时被多个进程使用。Kafka 架构consumer group注:Group A 和 Group B 会收到的是完全相同的消息Kafka 架构kafka 在 zookeeper 中的数据Kafka 命令数据分区和水平扩展1、创建一个 16 分区,双备的 topic./bin/kafka-topics.sh -create -zookeeper 10.100.10.200:2181
11、 -replication-factor 2 -partitions 16-topic my-topic 2、水平扩展./bin/kafka-reassign-partitions.sh-execute -manual-assignment-json-file partitions-to-move.json cat partitions-to-move.json:partitions:topic:my-topic,partition:1,replicas:1,4 把一个partition的replica从broker 1,2 迁移到 broker 1,4上配置文件producer配置文件consumer配置文件brokerKafka 性能报告(A)Kafka 性能报告(B)Q&A提问答疑人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢
限制150内