最后
2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。
更多JVM面试整理:
1.1.0版本 :bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic test2 –from-beginning
如果 在1.1.0 中执行老版本的开启消费者,会有下面这个warning,但也可以使用
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
准备另两个节点的配置文件
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
-
1
-
2
修改端口等参数:
config/server-1.properties:
broker.id=1
listeners=PLAINTEXT://:9093
log.dir=/tmp/kafka-logs-1
config/server-2.properties:
broker.id=2
listeners=PLAINTEXT://:9094
log.dir=/tmp/kafka-logs-2
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
开启另两个节点
bin/kafka-server-start.sh config/server-1.properties &
bin/kafka-server-start.sh config/server-2.properties &
-
1
-
2
使用kafka集群
创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
- 1
replication-factor为3,说明数据会分三个副本,这是因为我们有三台server了,如果设置成大于3是会抛错的:
Error while executing topic command : Replication factor: 5 larger than available brokers: 3.
[2018-07-05 11:34:58,818] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 5 larger than available brokers: 3.
(kafka.admin.TopicCommand$)
-
1
-
2
-
3
查看topic列表
bin/kafka-topics.sh --list --zookeeper localhost:2181
- 1
查看topic详情
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
- 1
开启消费者和生产者参考上文
数据目录,kfk有持久化,这里是放文件的地方(就是所有的数据)
server.properties 中的 log.dirs=/tmp/kafka-logs
里面能看到 数据 /tmp/kafka-logs/…
- 注意事项
上面步骤后,基本上就能直接使用了,不过要改端口,和有外网访问,则需要修改些东西
server.properties 中,
重要配置
配置好 advertised.host.name 和 advertised.port
1,如果你的消费者是内网侧,则这个advertised.host.name 直接设置 kafka的内网ip即可。
2,如果你的消费者是外网侧,这个advertised.host.name 则要设置为外网ip,但是有些机器有网络限制,此kafak的机器访问不了这个外网ip,那么,这个advertised.host.name 设置为外网ip则会抛错.所以,一般的做法,如果是外网侧,advertised.host.name 设置为主机名,通过/etc/hosts的配置,来达到不同机器不同ip.
上面都是配置ip,不要配置成127.0.0.1 , 不然你其它机器访问kafka的时候,会kafka 没反应
以下为具体配置
- kafka配置文件server.properties
listeners=PLAINTEXT://0.0.0.0:8180
advertised.host.name=ZN-YST-Backup03
advertised.port=8180
-
1
-
2
-
3
-
kafka服务端/etc/hosts
127.0.0.1 ZN-YST-Backup03
-
1
-
消费者/etc/hosts
120.xxx.xxx.90 ZN-YST-Backup03
- 1
官网里也可以直接找
生产者java客户端
public static void main(String[] args) throws ExecutionException, InterruptedException {
Properties props = new Properties();
props.put(“bootstrap.servers”, “120.197.3.90:8180”);
// props.put(“bootstrap.servers”, “10.1.1.29:9092”);
props.put(“acks”, “all”);
props.put(“retries”, 0);
props.put(“batch.size”, 16384);
props.put(“linger.ms”, 1);
props.put(“buffer.memory”, 33554432);
props.put(“key.serializer”, “org.apache.kafka.common.serialization.StringSerializer”);
props.put(“value.serializer”, “org.apache.kafka.common.serialization.StringSerializer”);
Producer<String, String> producer = new KafkaProducer<>(props);
for(int i = 0; i < 10000; i++) {
Future futureresult = producer.send(new ProducerRecord<String, String>(“test2”, Integer.toString(i), Integer.toString(i)+“gogo”), new Callback() {
@Override
public void onCompletion(RecordMetadata recordMetadata, Exception e) {
// 发送的返回
}
});
// futureresult.get();//阻塞
}
producer.close();
}
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
最后
分布式技术专题+面试解析+相关的手写和学习的笔记pdf
还有更多Java笔记分享如下:
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
最后
分布式技术专题+面试解析+相关的手写和学习的笔记pdf
还有更多Java笔记分享如下:
[外链图片转存中…(img-3QW7fGyN-1715001483167)]