草庐IT

Storm-Kafka

全部标签

java - 在 Apache Kafka 中存储图像?

Kafka的大用户(例如LinkedIn)是否将上传的图像存储在Kafka中?我喜欢将所有内容放入日志的架构简单性,但我担心它在实践中可能行不通。 最佳答案 理论上没有限制,因为您可以轻松地将图像以二进制形式存储在Kafka队列中。但是可能还有其他问题..我会尝试对此进行一些思考消费者配置中有一个message.max.bytes参数,默认值为1000000。这样做实际上是为了防止代理耗尽内存,因为消费者没有流式传输消息的选项,必须分配内存才能读取消息。一种解决方法是压缩Kafka中的消息以节省空间。我能找到的最合适的条件是通过发送

java - Apache Kafka 是否提供异步订阅回调 API?

我的项目将ApacheKafka视为老化的基于JMS的消息传递方法的潜在替代品。为了让这个过渡尽可能的顺利,如果替换队列系统(Kafka)有一个异步订阅机制就更理想了,类似于我们当前项目的JMS机制使用MessageListener。和MessageConsumer订阅主题并接收异步通知。我不太关心Kafka是否严格遵守JMSAPI,但相反,如果不需要,我宁愿不重新设计我们的整个发布-订阅-通知类套件。我可以找到各种KafkaConsumerpollingexamples,但到目前为止还没有找到任何通过异步通知向客户端通知新消息的示例。有谁知道当前版本的Kafka(截至本文发布时为0.

java - 了解Kafka写入速度

鉴于此1.五机Kafka集群2.1个主题,1个分区3.消息持久化存储4.每条消息1KB5.10个生产者现在,这个集群的最大写入能力是否等于一个Java线程写入磁盘的最大写入能力?如果不是,那会是什么? 最佳答案 如果您只有一个分区,那么kafka无法扩展您的主题并且只能使用5个实例集群中的一台机器。无法判断您的java代码编写得如何,但结果将与我假设的kafka类似,但存在细微差异,因为kafka针对磁盘写入进行了优化。 关于java-了解Kafka写入速度,我们在StackOverfl

java - Storm 中的执行者数量

我正在玩弄Storm。这是我正在使用的拓扑:builder.setSpout("word",newRandomSentenceSpout(),3);builder.setBolt("exclaim1",newExclamationBolt(),6).shuffleGrouping("word");我以为Storm会为此拓扑生成9个执行器(3个spouts+6个bolt),但当我实际运行它时,我可以看到有11个执行器正在运行。那两个额外的执行者是什么? 最佳答案 它们是负责管理确认机制的ackerbolts。您的拓扑中有2个acker

java - Kafka Java 消费者仅适用于本地主机,无法用于远程服务器

我使用Kafka已经两个月了,我使用这段代码在本地消费消息。我最近决定分发Zookeeper和Kafka,一切似乎都运行良好。当我尝试从远程IP使用消费者代码时,我的问题就开始了;一旦我将seeds.add("127.0.0.1");更改为seeds.add("104.131.40.xxx");我收到此错误消息:run:ErrorcommunicatingwithBroker[104.131.40.xxx]tofindLeaderfor[temperature,0]Reason:java.net.ConnectException:ConnectionrefusedCan'tfindme

java - 无法使用kafka Producer API与kafka服务器通信

我已经在单个节点上设置了kafka,并启动了zookeeper和kafka服务器。我在控制台上针对内部生产者和消费者对其进行了测试,并且运行良好。但是当我在控制台上运行内部kafka消费者时,我的自定义生产者它不起作用。下面是我的Producer类Propertiesprops=newProperties();props.put("metadata.broker.list","xx.xx.xx.xx:9092");props.put("serializer.class","kafka.serializer.StringEncoder");props.put("partitioner.c

java - Apache Storm Bolt 任务在一段时间后未收到消息

我们有一个Storm拓扑,其中配置了一个spout和两个bolts。Spout不断地从数据库中查询数据并将元组发送到第一个bolt进行一些处理。第一个bolt进行一些处理并将元组发送到第二个bolt,第二个bolt调用第三方网络服务并发送数据。所以,一段时间后发生了什么,最后一个bolt没有得到任何元组,如果我们重新启动拓扑它工作正常。这里只有最后一个bolt有问题。其他spout和firstbolt运行良好,我没有使用acking框架。在这种情况下,我只配置了一个worker`。TopologyBuilderbuilder=newTopologyBuilder();builder.s

java - kafka log-compaction消费数据

我正在阅读最新版本的kafka中的日志压缩,我很好奇这对消费者有何影响。消费者是否像以前一样工作,或者是否有一个新的流程来获取所有最新值?对于“标准”Kafka主题,我使用消费者组来维护指向最新值的指针。但是,如果Kafka基于键而不是时间来保存值,我想知道消费者群体将如何运作? 最佳答案 它不会影响消费者的工作方式。如果你只对每个键的最新值感兴趣并阅读整个主题,你可能仍然会看到一个键的“重复项”(如果不是所有重复项都被消除,或者在上次压缩运行后写入新消息)因此你只关心关于每个键的最新值。关于消费者组:当主题被压缩时,有效偏移量范围

java - 为什么 Kafka Direct Stream 会为每条消息创建一个新的解码器?

我有一个用Java编写并使用Spark2.1的Spark流应用程序。我正在使用KafkaUtils.createDirectStream来读取来自Kafka的消息。我正在为kafka消息使用kryo编码器/解码器。我在Kafkaproperties->key.deserializer,value.deserializer,key.serializer,value.deserializer中指定了这个当Spark在微批中拉取消息时,使用kryo解码器成功解码消息。但是我注意到Spark执行程序创建了一个新的kryo解码器实例,用于解码从kafka读取的每条消息。我通过将日志放入解码器构造

java - 使用 Spring Boot 1.5 避免 Kafka Streams 在测试中启动

在我的SpringBoot应用程序的测试过程中,我遇到了一个非常烦人的问题。我有一个使用KafkaStreams并在专用配置文件中声明它们的应用程序。@EnableKafka@EnableKafkaStreams@ConfigurationpublicclassKafkaStreamConfiguration{@Bean(name=KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_CONFIG_BEAN_NAME)publicStreamsConfigkStreamsConfigs(){//Omissis}@BeanpublicKStre