当前位置:首页 > 科技  > 软件

使用Java与Apache Kafka构建可靠的消息系统

来源: 责编: 时间:2023-10-23 17:05:28 395观看
导读Apache Kafka 是一个分布式流处理平台,也是一种高性能、可扩展的消息系统。它在处理海量数据时表现出色,而且易于使用和部署。Apache Kafka 是一种分布式发布-订阅消息系统,由 LinkedIn 公司开发。它具有高性能、高并发

Apache Kafka 是一个分布式流处理平台,也是一种高性能、可扩展的消息系统。它在处理海量数据时表现出色,而且易于使用和部署。yRa28资讯网——每日最新资讯28at.com

Apache Kafka 是一种分布式发布-订阅消息系统,由 LinkedIn 公司开发。它具有高性能、高并发、可扩展等特点,适合用于大型实时数据处理场景。Kafka 的核心概念包括:yRa28资讯网——每日最新资讯28at.com

1、消息(Message):Kafka 中的基本数据单元,由一个键和一个值组成。yRa28资讯网——每日最新资讯28at.com

2、生产者(Producer):向 Kafka 中写入消息的程序。yRa28资讯网——每日最新资讯28at.com

3、消费者(Consumer):从 Kafka 中读取消息的程序。yRa28资讯网——每日最新资讯28at.com

4、主题(Topic):消息的类别或者主要内容,每个主题可以划分为多个分区。yRa28资讯网——每日最新资讯28at.com

5、分区(Partition):主题的一个子集,每个分区都有自己的偏移量。yRa28资讯网——每日最新资讯28at.com

6、偏移量(Offset):表示消费者在某个主题中读取的位置。yRa28资讯网——每日最新资讯28at.com

Kafka 生产者用于向 Kafka 集群发送消息。在使用 Kafka 生产者时,需要指定消息的主题和消息的键和值,然后将消息发送到 Kafka 集群中。下面是使用 Kafka 生产者发送消息的代码示例:yRa28资讯网——每日最新资讯28at.com

Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("acks", "all");props.put("retries", 0);props.put("batch.size", 16384);props.put("linger.ms", 1);props.put("buffer.memory", 33554432);props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");Producer<String, String> producer = new KafkaProducer<>(props);String topic = "test";String key = "key1";String value = "Hello, Kafka!";ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);try {    RecordMetadata metadata = producer.send(record).get();    System.out.printf("Sent record with key='%s' and value='%s' to partition=%d, offset=%d/n",        key, value, metadata.partition(), metadata.offset());} catch (Exception ex) {    ex.printStackTrace();} finally {    producer.close();}

在上述代码中,我们使用了 KafkaProducer 类创建了一个生产者实例,并指定了各种配置参数。其中,bootstrap.servers 参数用于指定 Kafka 集群的地址,key.serializer 和 value.serializer 则用于指定消息键和值的序列化方式。然后,我们将消息的主题、键和值包装成一个 ProducerRecord 对象,并使用 send() 方法发送到 Kafka 集群中。最后,我们使用 get() 方法获取发送消息的元数据,并输出发送结果。yRa28资讯网——每日最新资讯28at.com

Kafka 消费者用于从 Kafka 集群中读取消息,并进行相应的处理。在使用 Kafka 消费者时,需要指定要消费的主题和在主题中的位置(也就是偏移量)。下面是使用 Kafka 消费者消费消息的代码示例:yRa28资讯网——每日最新资讯28at.com

Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("group.id", "test-group");props.put("enable.auto.commit", "true");props.put("auto.commit.interval.ms", "1000");props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);String topic = "test";consumer.subscribe(Collections.singletonList(topic));while (true) {    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));    for (ConsumerRecord<String, String> record : records) {        System.out.printf("Received record with key='%s' and value='%s' from partition=%d, offset=%d/n",            record.key(), record.value(), record.partition(), record.offset());    }}//consumer.close();

在上述代码中,我们使用 KafkaConsumer 类创建了一个消费者实例,并指定了各种配置参数。其中,bootstrap.servers 和 group.id 参数与生产者类似,而 enable.auto.commit 和 auto.commit.interval.ms 则用于自动提交偏移量。然后,我们使用 subscribe() 方法订阅指定的主题并进入轮询状态,通过 poll() 方法获取最新的消息记录。最后,我们输出消息记录的键、值、所在的分区和偏移量。yRa28资讯网——每日最新资讯28at.com

yRa28资讯网——每日最新资讯28at.com

在实际生产环境中,Kafka 的可靠性非常重要。为了确保消息能够被有效地处理和传输,在 Kafka 中提供了多种可靠性保证机制。yRa28资讯网——每日最新资讯28at.com

1、消息复制(Message Replication) Kafka 通过将每条消息复制到多个副本来保证消息的可靠性。当其中一个 broker 处理失败时,其他 broker 可以接替它的工作,确保消息仍然可以被正确地处理。yRa28资讯网——每日最新资讯28at.com

2、优先副本选举(Preferred Replica Election) Kafka 通过选举一个或多个优先副本来增加集群的可靠性。这些优先副本可以优先处理请求,并在其他副本出现故障时接替它们的工作。yRa28资讯网——每日最新资讯28at.com

3、ISR(In-Sync Replica)机制 Kafka 中的 ISR 机制用于确保所有的副本都保持同步。只有处于 ISR 中的 broker 才能够与生产者进行通信,也才能够被选为新的 leader,从而保证消息的可靠性和一致性。yRa28资讯网——每日最新资讯28at.com

4、偏移量管理(Offset Management) Kafka 提供了不同的偏移量管理方式,包括自动提交偏移量、手动提交偏移量和定期提交偏移量。每种管理方式都有其特点和适用场景。yRa28资讯网——每日最新资讯28at.com

Apache Kafka 是一种高性能、可扩展的消息系统,适用于大规模实时数据处理场景。在 Java 中,可以使用 Kafka 生产者和消费者 API 构建可靠的消息系统。同时,Kafka 还提供了多种可靠性保证机制,以确保消息能够被有效地处理和传输。yRa28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-14549-0.html使用Java与Apache Kafka构建可靠的消息系统

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Vite 的设计理念,本文就来详细看一下!

下一篇: 你的 JavaScript 正在泄漏内存而你却不知道

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • 官方承诺:K60至尊版将会首批升级MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版将会搭载天玑9200+处理器和独显芯片X7的同时,Redmi给出了官方承诺,K60至尊重大更新首批升级,会首批推送MIUI 15。也就是说虽然
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • 天猫精灵Sound Pro体验:智能音箱没有音质?来听听我的

    这几年除了手机作为智能生活终端最主要的核心之外,第二个可以成为中心点的产品是什么?——是智能音箱。 手机在执行命令的时候有两种操作方式,手和智能语音助手,而智能音箱只
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • iQOO 11S新品发布会

    iQOO将在7月4日19:00举行新品发布会,推出杭州亚运会电竞赛事官方用机iQOO 11S。
Top