实战: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中放入特殊的元素,可以实现线程之间的同步和通信,例如使用特殊的标识符来指示任务的开始或完成。

posted @ 2024-04-18 19:19  每天进步一点点_hejj  阅读(7)  评论(0编辑  收藏  举报