实战:blockqueue+kafka+activemq+websocket+elasticsearch+postgresql
实战:blockqueue+kafka+activemq+websocket+elasticsearch+postgresql
1、使用场景:
第三方数据: 接入方式:http:接口,中间件,数据库,python
blockqueue:负责接收第三方数据,推送到kafka
kafka:负责存储数据,数据分发清洗,将数据分发至postgresql数据库
activemq:负责存储接收消息
websocket:长连接方式,接收active推送的消息
elasticsearch:存储数据量比较大的数据,警情,重点人等动态数据
Kafka数据读取并存入BlockingQueue的好处通常包括以下几点:
解耦与异步处理:将从Kafka读取数据和实际处理数据的步骤分离,可以提高系统的灵活性和可维护性。
缓冲:BlockingQueue可以作为缓冲区,缓缓流量高峰,防止消费者来不及处理数据时导致的消息丢失或性能问题。
负载均衡:多个消费者可以从同一个BlockingQueue中取数据,从而分散负载和提高系统的处理能力。
扩展性:通过BlockingQueue,你可以轻松地改变队列的实现,比如使用不同的数据结构或者中间件,而不需要修改代码的其他部分。
BlockingQueue的主要功能和用途如下:
线程安全的数据传输:BlockingQueue提供了线程安全的数据传输机制,可以在多个线程之间传递数据。当队列为空时,消费者线程可以阻塞等待,直到生产者线程将数据放入队列;当队列满时,生产者线程可以阻塞等待,直到消费者线程将数据取出队列。
缓冲:BlockingQueue可以作为一个缓冲区,当生产者产生数据的速度较快,而消费者处理数据的速度较慢时,可以使用BlockingQueue来平衡生产者和消费者之间的速度差异。生产者可以将数据放入队列,而消费者可以从队列中取出数据进行处理,以实现数据的平均处理速度。
任务调度:BlockingQueue可以用于实现线程池中的任务调度。线程池中的线程可以从BlockingQueue中获取任务进行处理,当队列为空时,线程可以阻塞等待,直到队列中有新的任务加入。
同步机制:BlockingQueue提供了一种有效的同步机制,可以实现线程之间的协作和同步。通过向BlockingQueue中放入特殊的元素,可以实现线程之间的同步和通信,例如使用特殊的标识符来指示任务的开始或完成。