Kafka (一) 概述

消息系统使用场景:

解耦:各系统之间通过消息系统统一交换数据,无须了解彼此的存在

冗余:部分消息系统具有消息持久化功能,可以避免消息处理前丢失

扩展:消息系统是统一的数据接口,系统可独立扩展

可恢复性:系统中部分组件失效并不会影响整个系统,它恢复后仍然可从消息系统中获取并且处理数据

异步通信:在不需要立即处理请求的场景下,可以将请求放入消息系统,等不紧急时候再进行处理


常用消息系统介绍:

RabbitMQ:Erlang编写,支持多协议AMQP,XMPP,SMTP,STOMP。支持负载均衡,数据持久化。支持Peer-to-Peer和发布/订阅模式

Redis:不仅为NoSQL数据库,同时支持MQ功能,可做轻量级队列服务使用。长消息(大于10kb)性能比RabbitMQ差

ZeroMQ:轻量级,不需要单独的消息服务器或中间件,Peer-to-Peer。使用复杂度高

ActiveMQ:JMS实现,Peer-to-Peer,支持持久化,XA事务

Kafka/Jafka:高性能跨语言的分布式发布/订阅消息系统,数据持久化,全分布式,同时支持在线和离线处理

MetaQ/RocketMQ: Java实现,发布/订阅消息系统,支持本地事务和XA分布式事务


Kafka内容概述:

Apache Kafka是一个开源消息系统,有Scala完成;

kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现;

kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer;kafka集群有多个kafka实例组成,每个实例成为broker;

无论是kafka集群,还是producer和consumer都依赖于zookeeper集群保存一些meta信息,以保证系统可用性


优点:

1,高吞吐率:在廉价的商用机器上单机可支持每秒100万条消息的读写

2,消息持久化: 所有消息均被持久化到磁盘,无消息丢失,支持消息重放

3,完全分布式:Producer,Broker,Consumer均支持水平扩展

4,同时满足适应在线流处理和离线批处理


核心组件:

Producer:生产者,发送消息的人

Consumer:消费者,消息接收的人

broker:kafka实例

Topic:

同一个Topic的消息可分布在一个或多个节点(Broker)上

一个Topic可以包含一个或多个Partition

每条消息仅属于一个Topic

Producer发布数据时,必须指定将数据发布到哪一个Topic上

Consumer订阅消息时,必须指定订阅哪个Topic的消息


Partition

一个Partition只分布于一个Broker上

一个Partition对应一个文件夹

一个Partition包含多个Segment

一个Segment对应一个文件

Segment由一个个不可变记录组成

记录只会被append到Segment中,不会被单独删除或修改

清除过期日志时,直接删除一个或者多个Segment







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值