标签:ctr 缺省 随机选择 pac 高可用性 csdn key nts 显示
此为上一篇文章的续篇, kafka安装须要依赖zookeeper, 本文与上一篇文章都是真正分布式安装配置, 能够直接用于生产环境.
zookeeper安装參考:
http://blog.csdn.net/ubuntu64fan/article/details/26678877
假定我们有一个名称为test的topic, 分区数目为2, 当我们发送到这个test详细的消息"msg1:hello beijing"和"msg2:hello shanghai"的时候,我们怎样知道消息的发送路径呢(发往哪个分区)?msg1如果被发送到分区test.1,则肯定不会发送到test.2. 数据发送路径选择决策受kafka.producer.Partitioner的影响: interface Partitioner { int partition(java.lang.Object key, int numPartitions); }
一个伪代码的实现例如以下:
package org.mymibao.mq.client;
import kafka.producer.Partitioner;
public class DefaultKafkaPartitioner implements Partitioner {
private final static int FIRST_PARTITION_ID = 1;
public int partition(Object key, int numPartitions) {
return FIRST_PARTITION_ID;
}
}
将该id用作索引。在broker_id和partition组成的经过排序的列表中为对应的生产者请求找出一个代理分区。
缺省的分区策略是hash(key)%numPartitions。如果key为null,那就进行随机选择。
使用partitioner.class这个配置參数可用插入自己定义的分区策略.分区文件不会跨越broker,可是多个broker上能够有某个topic的分区副本.
$ wget http://apache.fayea.com/apache-mirror/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz
安装和配置參考上一篇文章:
http://blog.csdn.net/ubuntu64fan/article/details/26678877
2)配置$KAFKA_HOME/config/server.properties
我们安装3个broker。分别在3个vm上:zk1,zk2。zk3:
zk1:
$ vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME=zk1
$ vi $KAFKA_HOME/config/server.properties
broker.id=0 port=9092 host.name=zk1 advertised.host.name=zk1 ... num.partitions=2 ... zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
zk2:
$ vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME=zk2
broker.id=1 port=9092 host.name=zk2 advertised.host.name=zk2 ... num.partitions=2 ... zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
zk3:
$ vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME=zk3
broker.id=2 port=9092 host.name=zk3 advertised.host.name=zk3 ... num.partitions=2 ... zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
$ zkServer.sh start
$ kafka-server-start.sh $KAFKA_HOME/config/server.properties
$ kafka-topics.sh --create --topic test --replication-factor 3 --partitions 2 --zookeeper zk1:2181
列出已有的topics:
$ kafka-topics.sh --list --zookeeper zk1:2181
$ kafka-console-producer.sh --broker-list zk1:9092 --sync --topic test
在发送消息的终端输入:Hello Kafka
7)如果我们在zk3上,开一个终端,显示消息的消费(zk3模拟consumer)
$ kafka-console-consumer.sh --zookeeper zk1:2181 --topic test --from-beginning
在消费消息的终端显示:Hello Kafka
8) 编程操作Producer和Consumer的样例參考:
http://shift-alt-ctrl.iteye.com/blog/1930791
标签:ctr 缺省 随机选择 pac 高可用性 csdn key nts 显示
原文地址:http://www.cnblogs.com/jhcelue/p/7354537.html