新纪录学习创作11(kafka基本命令 nohupstart.sh脚本的编写)

创建topic:

//   partitions  分区     replication-factor 1  表示创建的分区的副本数量 
.\bin\windows\kafka-topics.bat --zookeeper localhost:2181 --create --topic mytest --replication-factor 1 --partitions 3

创建分组:

.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic mytest --consumer-property group.id=group_mytest

(创建)启动生产者

.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

(创建)启动消费者
0.9版本之前命令:

.\bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test

kafka创建命令0.9版本之后变成以下命令:

.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

启动kafka:

.\bin\windows\kafka-server-start.bat config\server.properties

查看分区的命令
所有分区:

.\bin\windows\kafka-topics.bat --list --zookeeper localhost:2181

指定的分区:

.\bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic test3

使用kafka的优点:
实际上有不少 MQ 都能实现。但为什么是 Kafka 而不是其他呢?因为Kafka 集群的性能非常高,在垃圾电脑上搭建的集群能抗住每秒10万并发的数据写入量。而如果选择性能好一些的服务器,每秒100万的数据写入也能轻松应对

rabbitmq与kafka的主要区别:

RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。

kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。

kafaka的详细介绍:
Kafka是一个分布式消息队列,它将数据分区保存,并将每个分区保存成多份以提高数据可靠性。Kafka是在大数据背景下产生的,用以应对海量数据的处理场景,具有高性能、良好的扩展性、数据持久性等特点。

Kafka架构由生产者、代理和消费者三类组件构成。生产者将数据推送给代理,消费者从代理商拉取数据进行处理,而代理通过ZooKeeper进行协调和管理。生产者和消费者可根据业务需要自定义开发,多个代理构成一个可靠的分布式消息存储系统,避免数据丢失。代理中的消息被划分成若干个主题,同属于一个主题的的所有数据被分成多个分区,以实现负载分摊和数据并行处理。Kafka基本架构如下:

在这里插入图片描述
分享一:代理

启动Kafka的一个实例就是一个代理,默认端口9092。通过ZooKeeper搭建Kafka集群可以启动多个代理同时对外提供服务,代理不保存任何生产者和消费者状态信息。在实际应用中,建议:每个代理分布在不同的物理机器上。

分享二:主题

主题是存储在kafka中的相同类型的数据集合名称描述,主题包含一个或多个分区。假设kafka运行了3个代理,某个主题划分了3个分区,那么在代理1上,存在分区1(主),分区2(副)、分区3(副),在代理2上,存在分区1(副)、分区2(主)、分区3(副),在代理3上,存在分区1(副)、分区2(副)、分区3(主)。其中,主分区负责读和写操作,副本负责从主分区同步数据,当主分区所在代理出现异常时,通过选举机制重新从其它代理机器上选择主分区。如下图所示:
在这里插入图片描述
在实际应用中,建议:分区的数量不要大于代理服务器的个数,分区数量大于代理个数,会造成同一个代理上出现多个主分区,一旦代理宕机影响较大。

分享三:分区

一个主题可以分成多个分区,相当于把一个数据集合分成多份分别放到不同的分区中存储。在实际应用中,建议:我们知道每个分区都会分为主分区和副本,为了保障系统的高吞吐率,多个主分区一般会分布在不同代理上。

分享四:生产者

使用Kafka提供的二次开发包开发的,生产者将数据转化成消息,并通过网络发送个代理。在实际应用中,建议:kafka生产者采用支持集群技术的框架开发和管理,例如Flume。

分享五:消费者

消费者从Kafka主题中拉取消息,如果一个主题有多个分区,Kafka智能保证一个分区内消息的有序性,在不同的分区之间无法保证。在实际应用中,注意:对于时序数据而言,如果将某个主题下的数据分成了多个分区,可能会造成读取数据的无序。

分享六:消费者组

消费者组是消费者的集合。消费者组内的消费者,对于消息的消费是不会重复的,即同一条消息,只会被其中一个消费者消费,不会被消费者组内两个消费者消费。不同消费者组之间消息消费是重复的。假设消费者组1有两个消费者,那么消费者1负责分区1和分区2中的消息,消费者2负责消费分区3中的消息,二者消息的消费是不会重复的。如下图所示:
在这里插入图片描述
结束语:Kafka是开源的分布式消息队列,能够轻松实现高吞吐、可扩展、高可用,并且部署简单快速、开发接口丰富。目前已经有很多分布式处理系统支持使用Kafka,例如Spark、Storm、Flume等。

后台服务启动脚本编写:

脚本名:nohupStart.sh

nohup ./start.sh > selfService.log 2>&1 &tail -f selfService.log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值