消息中间件之Kafka_第1页
消息中间件之Kafka_第2页
消息中间件之Kafka_第3页
消息中间件之Kafka_第4页
消息中间件之Kafka_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、云软件组 陈修恒,消息中间件 之 kafka,Kafka,一、MQ 系统 二、Kafka 架构 三、Kafka 命令 四、配置文件,MQ 系统,一、Redis 二、ZeroMQ 三、ActiveMQ 四、RocketMQ 五、Kafka,MQ系统,Redis Redis是一个NoSQL数据库 处理小流量的消息队列 不适用于大流量的应用场景,MQ系统,ActiveMQ ActiveMQ 2007 年发布第一个版本(同年 JDK1.5发布) 被广泛应用于零售、银行、电子商务和政府等领域。 稳定性好,性能还过得去。 缺少异步 Java API 和 NIO支持,在高资源配置的计算机上扩展性不佳。 Ap

2、ollo 重写了 ActiveMQ 内核, Apache称其为最快、最强健的STOMP(Streaming Text Orientated Message Protocol,流文本定向消息协议)服务器。 github 一年多没更新,网传 Apollo项目已经失败,MQ系统,ZeroMQ 不支持序列化,阅后即焚。如果服务器宕机,数据将丢失 ZeroMQ本身只是一个网络协议栈的实现库.使用过程中由应用服务器扮演服务器的角色 ZeroMQ的目标是,成为 Linux 内核的一部分 逆天的性能,MQ系统,Kafak VS RocketMQ 定位 Kafak:由 Linkin 开源,用于即时的日志传输 R

3、ocketMQ:由淘宝开源,实现非日志的可靠消息传输,用于交易、订单、充值等场景 TPS 性能 kafka 单机写入 TPS 在百万条/秒,消息大小为10b RocketMQ 单机 7万条/秒,消息大小为10b 队列数 kafak 单机超过 64个队列/分区,Load 会发生明显的飙高现象 RocketMQ 最高支持 5万队列 实时性 Kafka使用短轮询方式,实时性取决于轮询间隔时间 RocketMQ使用长轮询,同Push方式实时性一致,消息的投递延时通常在几个毫秒。 成熟度 Kafka在日志领域比较成熟,操作系统Crash,会导致数据丢失 RocketMQ在阿里集团内部有大量的应用在使用,

4、不会丢消息,MQ系统,总结,Kafka 架构,系统结构,kafka cluster,Broker 1,Broker 2,Broker 3,Producer-A,Producer-B,Producer-C,Consumer-A,Consumer-A,Consumer-C,Zookeeper,基础架构,Kafka 架构,基本概念 主题:topic 分区:partition 消息:message 生产者:producer 消费者:consumer group 消息队列:broker,Kafka 架构,kafka 消息流程图,topic,消息队列,Producer-A,Producer-B,Consu

5、mer,consumer group,partition,producer,注1:消息队列依赖于本地磁盘 注2:默认情况下,磁盘存储会保存 7 天,Kafka 架构,kafka 消息流程图,topic,消息队列,Producer-A,Producer-B,Consumer,consumer group,partition,producer,注1:在一个由6个7200rpm的SATA硬盘组成的RAID-5磁盘阵列上, 线性写入的速度大约是300MB/秒,随机写入却只有50k/秒。 注2:在某些情况下,顺序磁盘访问能够比【随机】内存访问还要快!,Kafka 架构,kafka 集群运行流程图,top

6、ic,Producer-A,Producer-B,Consumer-A,Consumer-B,Consumer-C,consumer group,partition 1,partition 2,partition 3,producer,Kafka 架构,topic & partition,producer 怎么保证业务有序?,1、每个 partition 对应一个文件(夹) 2、分文件存储利于增加 topic 消息容量 3、把 partition 放在不同磁盘上,可以提高读写性能 4、把 partition 分散在不同机器上,支持负载均衡 5、通过迁移单个 partition, 实现快速水平扩

7、展 6、partition内有序,partition间无序,Kafka 架构,producer,consumer 处理速度跟不上怎么办?,1、自定义 partitioner, 保证同族消息保存在相同 partition 中,默认为 hash 算法随机分配 2、异步提交时,会把多个消息合并,提高IO性能 3、如果对 topic 进行水平扩容,producer 需要重新获取 broker 列表,重新连接,Kafka 架构,consumer,不同的 consumer Group 之间有什么关系?,1、一个 partition 只会被一个 consumer 线程连接; 2、一个 consumer gr

8、oup 由多个 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 -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, replica

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论