01-kafka初认识

1.Kafka使用背景

kafka的定义:    是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础,具有高水平扩展和高吞吐量。

应用领域: 已被多家不同类型的公司作为多种类型的数据管道和消息系统使用。如:

淘宝,支付宝,百度,twitter

目前越来越多的开源分布式处理系统如Apache flumeApache StormSpark,elasticsearch都支持与Kafka集成。

 

 

ActiveMQ

RabbitMQ

Kafka

所属社区/公司

Apache

Mozilla Public License

Apache/LinkedIn

开发语言

Java

Erlang

Java

支持的协议

OpenWireSTOMP

RESTXMPPAMQP

AMQP

仿AMQP

事物

支持

不支持

不支持

集群

支持

支持

支持

 

负载均衡

支持

支持

支持

动态扩容

不支持

不支持

支持(zk)

一些基本的概念:

消费者(Consumer):从消息队列中请求消息的客户端应用程序;

生产者(Producer):向broker发布消息的客户端应用程序;

AMQP服务器端(broker:用来接收生产者发送的消息并将这些消息路由给服务器中的队列;

Kafka相关概念kafka支持的客户端语言

Kafka 客户端支持当前大部分主流语言,包括:  CC++ErlangJava.netperlPHPPythonRubyGoJavascript

可以使用以上任何一种语言和kafka服务器进行通信(即编写自己的consumerproducer程序)

Kafka相关概念kafka的架构

一些基本的概念:

主题(Topic):一个主题类似新闻中的体育、娱乐、教育等分类概念,在实际工程中通常一个业务一个主题;

分区(Partition):一个topic中的消息数据按照多个分区组织,分区是kafka消息队列组织的最小单位,一个分区可以看做是一个FIFO的队列;

让我们首先深入理解Kafka提出一个高层次的抽象概念-Topic。
可以理解Topic是一个类别的名称,同类消息发送到同一个Topic下面。对于每一个Topic,下面可以有多个分区(Partition)日志文件

Partition是一个有序的message序列,这些message按顺序添加到一个叫做commit log的文件中。每个partition中的消息都有一个唯一的编号,称之为offset,用来唯一标示某个分区中的message。
提示:每个partition,都对应一个commit log文件。一个partition中的message的offset都是唯一的,但是不同的partition中的message的offset可能是相同的。

可以这么来理解Topic,Partition和Broker
一个topic,代表逻辑上的一个业务数据集,比如按数据库里不同表的数据操作消息区分放入不同topic,订单相关操作消息放入订单topic,用户相关操作消息放入用户topic,对于大型网站来说,后端数据都是海量的,订单消息很可能是非常巨量的,比如有几百个G甚至达到TB级别,如果把这么多数据都放在一台机器上可定会有容量限制问题,那么就可以在topic内部划分多个partition来分片存储数据,不同的partition可以位于不同的机器上,每台机器上都运行一个Kafka的进程Broker。

kafka集群,在配置的时间范围内,维护所有的由producer生成的消息,而不管这些消息有没有被消费。例如日志保留(log retention )时间被设置为2天。kafka会维护最近2天生产的所有消息,而2天前的消息会被丢弃。kafka的性能与保留的数据量的大小没有关系,因此保存大量的数据(日志信息)不会有什么影响。

每个consumer是基于自己在commit log中的消费进度(offset)来进行工作的。在kafka中,消费offset由consumer自己来维护;一般情况下我们按照顺序逐条消费commit log中的消息,当然我可以通过指定offset来重复消费某些消息,或者跳过某些消息。
这意味kafka中的consumer对集群的影响是非常小的,添加一个或者减少一个consumer,对于集群或者其他consumer来说,都是没有影响的,因为每个consumer维护各自的offset。所以说kafka集群是无状态的,性能不会因为consumer数量受太多影响。kafka还将很多关键信息记录在zookeeper里,保证自己的无状态,从而在水平扩容时非常方便。

为什么要对Topic下数据进行分区存储?
1、commit log文件会受到所在机器的文件系统大小的限制,分区之后,理论上一个topic可以处理任意数量的数据。
2、为了提高并行度

CTG-Kafka是由中国通信集团(China Telecom Group)自主研发的一款基于Apache Kafka的高可用、高性能消息中间件系统。它在Kafka的基础上进行了增强和优化,旨在满足企业级应用的需求。 ### CTG-KafkaKafka的主要区别: 1. **性能优化**:CTG-Kafka针对大数据量的消息处理进行了优化,包括读取性能、写入性能以及吞吐量等方面,使其在处理大规模数据流时能够更高效地工作。 2. **可靠性与稳定性**:作为企业级产品,CTG-Kafka着重加强了系统的可靠性和稳定性,在极端负载下也能保持服务稳定运行,提供更高的业务连续性保障。 3. **安全性与权限管理**:CTG-Kafka在安全特性上做了深入考虑,支持更为复杂的访问控制和鉴权机制,包括细粒度的权限分配、加密传输等,满足企业在敏感信息处理方面的合规需求。 4. **监控与管理工具**:CTG-Kafka配备了完善的监控和管理工具,帮助运维人员实时了解系统状态,快速定位和解决问题,提高了运营效率。 5. **定制化功能**:考虑到特定行业和企业的特殊需求,CTG-Kafka提供了更多的自定义选项和技术支持,使得用户可以根据自身场景进行调整和优化,更好地适配业务流程。 6. **社区与技术支持**:虽然开源版本的Kafka拥有庞大的开发者社区和丰富的文档资源,但CTG-Kafka作为商业化的版本,通常会提供官方的技术支持和专业咨询服务,为企业用户提供更直接的问题解决途径。 ### 相关问题: 1. CTG-Kafka相较于原生Kafka在哪些方面进行了针对性改进? 2. CTG-Kafka是否支持跨数据中心复制功能,提升数据冗余和容灾能力? 3. 对于大规模分布式系统,CTG-Kafka能提供哪些特有的性能优化措施和解决方案?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值