1. 阻塞队列
- BlockingQueue
- 解决线程通信的问题;
- 阻塞方法:
put
从队列中存一个 ,take
从队列中拿出一个
- 生产者消费者模式
- 生产者:产生数据的线程;
- 消费者:使用数据的线程。
- 实现类
ArrayBlockingQueue
LinkedBlockingQueue
ProrityBlockingQueue
、SynchronousQueue
、DelayQueue
等
- 阻塞队列充当了生产者(Thread-1)和消费者(Thread-2)之间的桥梁;
- 若Blocking Queue满了,将阻塞生产者,线程1陷入等待;
- 若Blocking Queue空了,将阻塞消费者,线程2陷入等待;
- 因此,可以防止系统资源被浪费。
2. Kafka入门
- Kafka简介
- kafka 是一个分布式的流媒体平台;
- 应用:消息系统、日志收集、用户行为追踪、流式处理。
- Kafka特点
- 高吞吐量、消息持久化、高可靠性、高扩展性
- Kafka术语
- Broker(一个服务器)、Zookeeper(集群)
- Topic(文件夹)、Partition(分区,提高容错率)、Offset(在分区中的位置)
- Leader Replica(主副本,如果需要从分区获取数据,主副本可以响应)、Follower Replica(随从副本,备份)
-卡夫卡能处理海量数据(高吞吐量),因为卡夫卡将数据存在硬盘此类的介质里,而硬盘比内存的价格低廉,所以它可以持久化。卡夫卡的分布式保证了高可靠性。如果想要加入新服务器,只需简单的配置,因此具有高扩展性。
【1】Mac 启动Zookeeper:
./zookeeper-server-start.sh ../config/zookeeper.properties &
【2】启动Kafka:
./kafka-server-start.sh ../config/server.properties &
【3】创建Topic
./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic javaTopic --partitions 2 --replication-factor 1
replication-factor:指定副本数量
partitions:指定分区
【4】查看Topic
./kafka-topics.sh --bootstrap-server localhost:9092 --list
【5】删除Topic
./kafka-topics.sh --bootstrap-server localhost:9092 --delete -topic javaTopic
【6】生产消费数据
【6-1】生产者
./kafka-console-producer.sh --broker-list localhost:9092 --topic javaTopic
【6-2】消费者
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic javaTopic --from-beginning