实际场景:网页爬虫爬取网站时,需要对URL去重,避免对相同URL的网页进行爬取。你会如何快速地判断一个URL已经被爬取过?集合(Set)很多人,包括我,马上会想到使用集合,将爬取过的URL加入到集合,每次爬取前,在集合里判断是否已经存在。时间复杂度是O(1)。但使用集合有一个很大的问题,假设集合内有100亿条URL,每条URL平均64字节,整个集合的大小就达到了640G。位图(BitMap)...
对broker和生产者进行可靠性配置后,最后就剩下对消费者进行可靠性配置了,这样整个消息队列系统就可以确保实现只消费一次消息了。先了解消费者相关的一些概念。消费者和消费者组kafka使用消费者组来将多个消费者组织在一起,一个组内的消费者订阅的是同一个主题,每个消费者接收主题一部分分区的消息。注意:如果我们往群组里添加更多的消费者,超过主题的分区数量,那么有一部分消费者就会被闲置,不会接收到任...
在之前的文章里kafka实现只消费消息一次 - broker篇,对broker进行了可靠性配置。但是如果不对生产者进行可靠性配置,消息还是存在丢失的可能。发送消息的主要步奏创建消息ProducerRecord对象,对象包含目标主题Topic和消息的内容Value,还可以指定键Key或者分区Partition。生产者使用序列化器将ProducerRecord对象里的键和值对象序列化成字节数组。...
最近在写种子爬虫时,磁力链抓取的速度,远快于磁力链转种子的速度,于是,我使用Kafka来解耦抓取和转换。同时,我不想丢失任何一个磁力链(里面可能有我喜欢的小姐姐 ::aru:shy:: ),也不想重复将同一个磁力链转换成种子(转换过程速度有点慢 ::aru:speechless:: )。于是参考了各种资料,现在总结下如何使用kafka实现只消费消息一次。Kafka的架构在整个架构里,有三种角...
在我们的项目开发中,多个容器会需要相互访问通信。之前可以通过--link参数来使容器互联,但是docker官方已经不推荐使用--link了,建议大家将容器加入自定义的Docker网络来连接多个容器。新建网络$ docker network create test_net查看本机的网络$ docker network ls NETWORK ID NAME ...