020 SpringCloud_Bus消息总线(一)kafka环境搭建

       Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka。在本文中,我们将搭建一个Kafka的本地环境,并通过它来尝试使用Spring Cloud BusKafka的支持,实现消息总线的功能。

       Kafka是一个由LinkedIn开发的分布式消息系统,它于2011年初开源,现在由著名的Apache基金会维护与开发。Kafka使用Scala实现,被用作LinkedIn的活动流和运营数据处理的管道,现在也被诸多互联网企业广泛地用作为数据流管道和消息系统。

Spring Cloud Bus使用 - Kafka:

 Kafka是基于消息发布/订阅模式实现的消息系统,其主要设计目标如下:

消息持久化:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。

高吞吐:在廉价的商用机器上也能支持单机每秒100K条以上的吞吐量

分布式:支持消息分区以及分布式消费,并保证分区内的消息顺序

跨平台:支持不同技术平台的客户端(如:JavaPHPPython等)

实时性:支持实时数据处理和离线数据处理

伸缩性:支持水平扩展

BrokerKafka集群包含一个或多个服务器,这些服务器被称为Broker

Topic:逻辑上同RabbitQueue队列相似,每条发布到Kafka集群的消息都必须有一个Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个Broker上,但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)

PartitionPartition是物理概念上的分区,为了提供系统吞吐率,在物理上每个Topic会分成一个或多个Partition,每个Partition对应一个文件夹(存储对应分区的消息内容和索引文件)。

Producer/ Consumer 消息生产/消费者,负责生产消息并发送到Kafka Broker,向Kafka Broker读取消息并处理

Consumer Group:每个Consumer属于一个特定的组(可为每个Consumer指定属于一个组,若不指定则属于默认组),组可以用来实现一条消息被组内多个成员消费等功能。

下载安装Kafka:(安装kafka需要依赖zookeeper)

kafka下载地址:http://kafka.apache.org/downloads.html

解压命令:tar -zxvf kafka_2.11-0.10.1.1.tgz -C /usr/local

改名命令:mv kafka_2.11-0.10.1.1/ kafka

进入解压后的目录,修改server.properties文件:

vim /usr/local/kafka/config/server.properties

修改内容:

broker.id=0

port=9092

host.name=192.168.11.114

advertised.host.name=192.168.11.114

log.dirs=/usr/local/kafka/kafka-logs

num.partitions=2

zookeeper.connect=192.168.11.114:2181,192.168.11.115:2181,192.168.11.116:2181

建立日志文件夹:mkdir /usr/local/kafka/kafka-logs

启动kafka:/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &

Spring Cloud Bus使用 – Kafka Manager 安装:

下载kafka-manager-1.0-SNAPSHOT.zip

解压:unzip kafka-manager-1.0-SNAPSHOT.zip -d /usr/local/

改名:mv kafka-manager-1.0-SNAPSHOT/ kafka-manager-1.0

编辑文件:vim /usr/local/kafka-manager-1.0/conf/application.conf

修改内容

kafka-manager.zkhosts="192.168.11.114:2181,192.168.11.115:2181,192.168.11.116:2181"

r/local/kafka/config/server.properties &

启动kafka-manager:

nohup /usr/local/kafka-manager-1.0/bin/kafka-manager -Dconfig.file=/usr/local/kafka-manager-1.0/conf/application.conf >/dev/null 2>&1 &

默认端口为:9000

Spring Cloud Bus使用 – Kafka 命令行使用:

Kafkashell脚本都在bin目录下。Shell使用请参考博客地址:

http://www.cnblogs.com/xiaodf/p/6093261.html

比如创建主题:

1)创建topic主题命令:kafka-topics.sh --zookeeper 192.168.11.111:2181 --create --topic test --partitions 1  --replication-factor 1  (创建名为testtopic1个分区分别存放数据,数据备份总共1份)

查看主题列表:

2)查看topic列表命令:kafka-topics.sh --zookeeper 192.168.11.111:2181 –list

生产与消费消息:

3kafka命令发送数据:kafka-console-producer.sh --broker-list 192.168.11.51:9092 --topic test   (然后我们就可以编写数据发送出去了)

4kafka命令接受数据:kafka-console-consumer.sh --zookeeper 192.168.11.111:2181 --topic test (然后我们就可以看到消费的信息了)

安装配置kafka:

1.下载完成解压到server目录:

2.修改名称:

020 SpringCloud_Bus消息总线(一)kafka环境搭建_第1张图片

3.修改配置文件:vim /kafka/config/server.properties

020 SpringCloud_Bus消息总线(一)kafka环境搭建_第2张图片

020 SpringCloud_Bus消息总线(一)kafka环境搭建_第3张图片

【日志目录创建一个】

4.启动kafka:

5.启动kafka之后,测试是否成功。

创建topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

生产者生产消息:

[apps@erp-computation-4 kafka_2.11-1.1.0]$ bin/kafka-console-producer.sh --broker-list 10.17.156.8:9092 --topic test

my name is xiaoqiang


消费者消费消息:

[apps@erp-computation-4 kafka_2.11-1.1.0]$ bin/kafka-console-consumer.sh --bootstrap-server 10.17.156.8:9092 --topic test --from-beginning

my name is xiaoqiang
至此,kafka启动完成,正常使用。 ctrl+c,关掉Xshell窗口,专心码代码。测试应用的时候发现,一堆报错全部指向连不上kafka。再战kafka服务器,发现kafka进程已不在。
 

6.连接zookeeper查看kafka是否注册:

7.安装kafka-manager:(此处直接安装编译后版本:请在CSDN搜索最新编译版)

解压、改名

8.修改配置文件:

020 SpringCloud_Bus消息总线(一)kafka环境搭建_第4张图片

【添加zookeeper节点】

启动kafka-manager:

nohup /usr/local/kafka-manager-1.0/bin/kafka-manager -Dconfig.file=/usr/local/kafka-manager-1.0/conf/application.conf >/dev/null 2>&1 &

9.连接zookeeper查看kafka-manager是否注册:

 

10.访问kafka-manager:浏览器访问192.168.1.11:9000

020 SpringCloud_Bus消息总线(一)kafka环境搭建_第5张图片

 

 

 

 

你可能感兴趣的:(springcloud)