单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Kafka,一、,MQ,系统,二、,Kafka,架构,三、,Kafka,命令,四、配置文件,Kafka一、MQ 系统,MQ,系统,一、,Redis,二、,ZeroMQ,三、,ActiveMQ,四、,RocketMQ,五、,Kafka,MQ 系统一、Redis,MQ系统,Redis,Redis是一个NoSQL数据库,处理小流量的消息队列,不适用于大流量的应用场景,MQ系统Redis,MQ系统,ActiveMQ,ActiveMQ,2007,年发布第一个版本,(,同年,JDK1.5发布),被广泛应用于零售、银行、电子商务和政府等领域。,稳定性好,性能还过得去。,缺少异步,Java API,和,NIO,支持,,在高资源配置的计算机上扩展性不佳。,Apollo,重写了,ActiveMQ,内核,,Apache称其为最快、最强健的STOMP(Streaming Text Orientated Message Protocol,流文本定向消息协议)服务器。,github,一年多没更新,网传,Apollo,项目已经失败,MQ系统ActiveMQ,MQ系统,ZeroMQ,不支持序列化,阅后即焚。如果服务器宕机,数据将丢失,ZeroMQ,本身,只是一个,网络协议栈,的实现,库,.,使用过程中由,应用服务器扮演服务器的角色,ZeroMQ,的目标是,成为,Linux,内核的一部分,逆天的性能,MQ系统ZeroMQ,MQ系统,Kafak VS RocketMQ,定位,Kafak,:由,Linkin 开源,,用于,即时的,日志传输,RocketMQ,:由淘宝开源,实现非日志的可靠消息传输,用于交易、订单、充值等场景,TPS,性能,kafka 单机写入 TPS,在百万条,/秒,消息大小为10b,RocketMQ,单机,7,万条,/秒,,消息大小为10b,队列数,kafak,单机超过,64,个队列,/分区,Load,会发生明显的飙高现象,RocketMQ,最高支持,5,万队列,实时性,Kafka使用短轮询方式,实时性取决于轮询间隔时间,RocketMQ使用长轮询,同Push方式实时性一致,消息的投递延时通常在几个毫秒。,成熟度,Kafka在日志领域比较成熟,,操作系统Crash,会导致数据丢失,RocketMQ在阿里集团内部有大量的应用在使用,不会丢消息,MQ系统Kafak VS RocketMQ,MQ系统,总结,MQ,系统,特点,Redis,NO-SQL,数据库,,适用于处理少量,MQ,数据,ActiveMQ,久经沙场的老战士,,稳定性好,ZeroMQ,一个网络通信协议栈,性能超级强劲,RocketMQ,阿里出品,标准,MQ,系统中,性能最好的,Kafka/Jafka,专为日志收集设计,非标准,MQ,系统,容灾能力弱,性能超过,RocketMQ,消息处理速度上限大约为,100MB/s,MQ系统总结MQ系统特点RedisNO-SQL数据库,Act,Kafka 架构,系统结构,kafka cluster,Broker 1,Broker 2,Broker 3,Producer,-A,Producer,-B,Producer,-C,Consumer,-A,Consumer,-A,Consumer,-C,Zookeeper,基础架构,Kafka 架构系统结构kafka clusterBroke,Kafka 架构,基本概念,主题:,t,opic,分区:,p,artition,消息:,message,生产者:,producer,消费者:,consumer group,消息队列:,broker,Producer,Topic,Consumer Group,Partition,Consumer,1,1.N,1,1.N,Kafka 架构基本概念ProducerTopicConsu,Kafka 架构,kafka,消息流程图,topic,消息队列,Producer,-A,Producer-B,Consumer,consumer group,partition,producer,本地磁盘,注,1,:消息队列依赖于本地磁盘,注,2,:默认情况下,磁盘存储会保存,7,天,Kafka 架构kafka 消息流程图topic消息队列Pr,Kafka 架构,kafka,消息流程图,topic,消息队列,Producer,-A,Producer-B,Consumer,consumer group,partition,producer,本地磁盘1,本地磁盘2,注,1,:在一个由6个7200rpm的SATA硬盘组成的RAID-5磁盘阵列上,,线性写入的速度大约是300MB/秒,随机写入却只有50k/秒。,注,2,:在某些情况下,顺序磁盘访问能够比,【,随机,】,内存访问还要快!,Kafka 架构kafka 消息流程图topic消息队列Pr,Kafka 架构,kafka 集群,运行流程图,broker(1),broker,(2),topic,13,7,4,12,8,2,10,9,6,11,Producer,-A,Producer-B,Consumer,-A,Consumer,-B,Consumer,-C,consumer group,partition 1,partition 2,partition 3,producer,Kafka 架构kafka 集群运行流程图broker(1),Kafka 架构,topic&partition,topic,broker,(1),13,7,4,12,8,2,broker,(2),10,9,6,11,Producer,-A,Producer-B,Consumer,-A,Consumer,-B,Consumer,-C,consumer group,partition 1,partition 2,partition 3,producer,producer,怎么保证业务有序,?,1,、每个,partition,对应一个文件(夹),2,、分文件存储利于增加,topic,消息容量,3,、把,partition,放在不同磁盘上,可以提高读写性能,4,、把,partition,分散在不同机器上,支持负载均衡,5,、通过迁移单个,partition,,实现快速水平扩展,6,、,partition,内有序,,partition,间无序,Kafka 架构topic&partitiontopic,Kafka 架构,producer,topic,broker,(1),13,7,4,12,8,2,broker,(2),10,9,6,11,Producer,-A,Producer-B,Consumer,-A,Consumer,-B,Consumer,-C,consumer group,partition 1,partition 2,partition 3,producer,consumer,处理速度跟不上怎么办?,1,、自定义,partitioner,保证同族消息保存在相同,partition,中,默认为,hash,算法随机分配,2,、,异步提交时,会把多个消息合并,提高,IO,性能,3,、如果对,topic,进行水平扩容,,producer,需要重新获取,broker,列表,重新连接,Kafka 架构producertopicbroker(1),Kafka 架构,consumer,topic,broker,(1),13,7,4,12,8,2,broker,(2),10,9,6,11,Producer,-A,Producer-B,Consumer,-A,Consumer,-B,Consumer,-C,consumer group,partition 1,partition 2,partition 3,producer,不同的,consumer Group,之间有什么关系?,Thread-A,Thread-B,Thread-C,1,、,一个,partition,只会被一个,consumer,线程连接;,2,、一,个,consumer group,由,多个,consumer,线程组成;,3,、一,个,consumer group,可以同时被多个进程使用。,Kafka 架构consumertopicbroker(1),Kafka 架构,consumer group,注:Group A 和 Group B 会收到的是完全相同的消息,Kafka 架构consumer group注:Group,Kafka 架构,kafka,在,zookeeper,中的数据,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,replicas:1,4,把一个,partition,的,replica,从,broker 1,2,迁移到,broker 1,4,上,Kafka 命令数据分区和水平扩展把一个partition的,配置文件,producer,配置文件producer,配置文件,consumer,配置文件consumer,配置文件,broker,配置文件broker,Kafka 性能报告(A),Kafka 性能报告(A),Kafka 性能报告(B),Kafka 性能报告(B),Q,&,A,提问答疑,Q&A提问答疑,人有了知识,就会具备各种分析能力,,明辨是非的能力。,所以我们要勤恳读书,广泛阅读,,古人说“书中自有黄金屋。,”通过阅读科技书籍,我们能丰富知识,,培养逻辑思维能力;,通过阅读文学作品,我们能提高文学鉴赏水平,,培养文学情趣;,通过阅读报刊,我们能增长见识,扩大自己的知识面。,有许多书籍还能培养我们的道德情操,,给我们巨大的精神力量,,鼓舞我们前进,。,人有了知识,就会具备各种分析能力,,消息中间件-Kafka讲解课件,