Java Spring Boot 2.0实战百万级Kafka消息中间件与原理解析

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Apache Kafka是开源分布式高并发消息中间件,支持每秒百万级消息并发,在互联网高并发架构:双11、电商秒杀抢购、网络直播、IOT大数据采集、聊天App、导航等高并发架构中大量使用。本节课程一起Java Spring Boot2.0实战Kafka并深入其架构原理。

Apache Kafka是开源分布式高并发消息中间件,支持每秒百万级消息并发,在互联网高并发架构:双11、电商秒杀抢购、网络直播、IOT大数据采集、聊天App、导航等高并发架构中大量使用。本节课程一起Java Spring Boot2.0实战Kafka并深入其架构原理。
Linux Ubuntu 18.04系统上安装最新的Kafka 2.12版本可以参考文章https://yq.aliyun.com/articles/690818
1、Kafka百万级高并发消息中间件
Kafka是LinkedIn公司开源的分布式消息平台。
使用Scala语言开发, 2011开源,现在属于Apache基金会。基于Pull模式处理消息,也支持消息推送,追求高吞吐量,百万级高并发
不支持AMQP协议,可以选择性支持事务。
可以和大数据中间件ES、Cloudera、Storm、Spark都支持与Kafka集成。
Kafka

开始设计的目的就是用于日志收集和传输,利用了磁盘顺序读写。
从0.8版本开始支持主从复制Replication,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网场景。
http://kafka.apache.org/
2、Kafka分布式消息架构
Kafka原始支持分布式架构,消息支持分区模式存储,可以使用JSON、二进制等多种序列化格式。
image
一个Topic可以包含多个分区,一个分区可以对应多个消息接受者。
3、Spring for Apache Kafka
Spring for Apache Kafka(spring-kafka)。可以简化开发Java Kafka消息中间件开发。
image
他提供“KafkaTemplate”高级抽象模板类。 封装对于Kafka的消息驱动的POJO操作接口。 此外为了方便处理消息还提供@KafkaListener注解和“侦听器容器”方便处理消息,将核心Spring风格扩展到Kafka消息中间件开发。 简化自动化配置、依赖注入和声明的使用。Spring JMS和Spring AMQP的RabbitMQ接口统一风格。Spring for Apache Kafka 基于java kafka-clients jar封装
允许我们自定义扩展Kafka配置。

4、Spring for Apache Kafka新特性
Spring for Apache Kafka提供KafkaTemplate模板类。
此外还提供KafkaMessageListenerContainer容器。
为了方便处理消息,提供@KafkaListener注解。
此外事务支持也很方便,提供KafkaTransactionManager事务管理器。也可以方便对Kafka做单元测试,spring-kafka-test jar with embedded kafka server
5、Linux安装Kafka
使用JavaSpring Boot 2.1.3进行Kafka开发,注意驱动和Kafka的版本关系。
另外要提前安装配置好Kafka,可以选择Linux环境安装Kafka。我们使用的是2.12版本,下载地址是:
http://kafka.apache.org/downloads.html
image
6、Spring Boot 2.0 实战Kafka
使用JavaSpring Boot 2.1.3进行Kafka开发,新建Spring Boot项目,
image

然后修改POM文件添加依赖:

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

接下来编写Kafka的Java发送器类KafkaMessageSender ,负责发送消息。使用的核心对象就是KafkaTemplate。

public class KafkaMessageSender {

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

    public void send(String topic, String payload) {
        kafkaTemplate.send(topic, payload);
        System.out.println("发送到主题:" + topic + "消息:"+payload);
    }
}

接下来编写消息接收者类KafkaMessageReceiver

public class KafkaMessageReceiver {

    @KafkaListener(topics = "Java")
    public void receiveTopic1(ConsumerRecord<?, ?> consumerRecord) {
        System.out.println("接收java主题消息: "+consumerRecord.toString());
    }

    @KafkaListener(topics = "frankxulei-test")
    public void receiveTopic2(ConsumerRecord<?, ?> consumerRecord) {
        System.out.println("接收frankxulei-test主题消息: "+consumerRecord.toString());
    }
}

测试控制器的代码,调用发送者发送100万消息

@RequestMapping("/kafka")
public class KafkaController {

    @Autowired
    KafkaMessageSender kafkaMessageSender;
    private String topicName ="Java";
    private String message = "Java Spring Boot 2.0 Kafka Alibaba:";
    
    @RequestMapping("/send")
    public String sendMessageToKafkaTopic() {
        System.out.println("Java Spring Boot 2.0 发送100万消息到Kafka!");
        for (int i = 0; i < 1000000; i++) {
            kafkaMessageSender.send(topicName, message+i);
        } 
        System.out.println("成功 发送100万消息!");
        return "发送100万消息到Kafka Sussessfully sent Message to Kafka";
    }
}

启动Spring Boot,输入接口,发送100万消息,观察日志接收消息信息
image

7、视频课程
视频地址:https://yq.aliyun.com/live/868
PPT地址:https://yq.aliyun.com/live/868

8、阿里巴巴Java群超过2900人
直播地址:Java技术进阶群
进群方式:钉钉扫码入群
C926B5D9_9BC2_4452_B14E_7F2F506EDAF9

阿里巴巴MongoDB群
_MongoDB_185

目录
相关文章
|
9天前
|
存储 缓存 算法
HashMap深度解析:从原理到实战
HashMap,作为Java集合框架中的一个核心组件,以其高效的键值对存储和检索机制,在软件开发中扮演着举足轻重的角色。作为一名资深的AI工程师,深入理解HashMap的原理、历史、业务场景以及实战应用,对于提升数据处理和算法实现的效率至关重要。本文将通过手绘结构图、流程图,结合Java代码示例,全方位解析HashMap,帮助读者从理论到实践全面掌握这一关键技术。
48 13
|
27天前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
61 1
|
22天前
|
消息中间件 缓存 监控
go高并发之路——消息中间件kafka
本文介绍了高并发业务中的流量高峰应对措施,重点讲解了Kafka消息中间件的使用,包括常用的Go语言库sarama及其版本问题,以及Kafka的版本选择建议。文中还详细解释了Kafka生产者的四种分区策略:轮询、随机、按Key和指定分区,并提供了相应的代码示例。
go高并发之路——消息中间件kafka
|
3天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
26 1
|
1月前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
47 1
|
1月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
44 2
|
28天前
|
存储 供应链 算法
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
54 0
|
1月前
|
JavaScript 前端开发 API
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
57 0
|
1月前
|
API 持续交付 网络架构
深入解析微服务架构:原理、优势与实践
深入解析微服务架构:原理、优势与实践
32 0
|
1月前
|
存储 供应链 物联网
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景

相关产品

  • 云消息队列 Kafka 版
  • 推荐镜像

    更多