Kafka入门
文章目录
- Kafka入门
- 一、简介
- 1.1 消息队列简介
- 1.1.1 什么是消息队列
- 1.1.2 消息队列中间件
- 1.1.3 消息队列应用场景
- 1.1.3.1 异步处理
- 1.1.3.2 系统解耦
- 1.1.3.3 流量削峰
- 1.1.3.4 日志处理(大数据领域)
- 1.1.4 生产者、消费者模型
- 1.1.5 消息队列的两种模式
- 1.1.5.1 点对点模式
- 1.1.5.2 发布订阅模式
一、简介
1.1 消息队列简介
1.1.1 什么是消息队列
消息队列:缩写:MQ,一中用来存储消息的队列;
代码如下(示例):
1.创建一个保存字符串的的队列
Queue<String> stringQueue = new LinkList<String>();
2.往消息队列中存放消息
stringQueue.offer("hello");
3.从队列中取出消息
System.out.println(stringQueue.poll());
上述代码,创建了一个队列,往队列中添加了消息,然后又从队列中取出了一个消息;我们可简单将消息队列理解为将需要传输的数据保存在队列中;
1.1.2 消息队列中间件
消息队列中间件就是用来存储消息的软件(组件)。例如:网站分析用户的行为,我们需要记录一些用户的访问日志。这些一条条日志,可以看成是一条条消息,我们将他保存在消息队列中。将来会有些应用程序来处理这些日志,就可以随时将这些消息取出来处理。
目前市面上的消息队列有很多,例如:Kafka、RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ等;
1.1.3 消息队列应用场景
1.1.3.1 异步处理
电商网站中,用户注册时候,需要将新用户的信息保存在数据库中,同时还需要额外发送注册的邮件通知,以及短信的注册码给用户;因为发送邮件,发送注册短信需要连接外部的服务器,要额外等待一段时间,此时,就可以使用消息队列来进行一步处理,从而实现快速响应。
1.1.3.2 系统解耦
1.1.3.3 流量削峰
1.1.3.4 日志处理(大数据领域)
大型电商网站,App等需要去分析用户的行为,要根据用户的行为来发现用户 喜好和活跃情况,需要在页面中收集大量的用户访问信息;
1.1.4 生产者、消费者模型
java服务器武器开发,交互模型
JDBC访问Mysql 数据库,其交互模型:
它也是一种请求响应模型,只不过他不再是基于http协议,而是基于Mysql数据库通信协议;而我们如果基于消息中间件来编程,此时的交互模式:生产者,消费者;
1.1.5 消息队列的两种模式
1.1.5.1 点对点模式
消息发送者生产消息发送到队列中,然后接收者从消息队列中取出消息并且消费,消息被消费之后,队列中不再有存储;
点对点模式的特点:
每个消息只有一个生产者和接收者(消息一旦被消费,消息将不会在队列中);
发送者和接收者之间没有依赖性,发送者发送消息之后,不管有没接收者在运行,都不会影响到发送者下次发送消息;
接收者在接收消息之后需要队列成功应答,已方便队列删除消息;
1.1.5.2 发布订阅模式
发布/订阅模式特点:
每个消息可以有多个订阅者;
发布者和订阅者在时间上依赖性,针对某个主题的订阅者,他必须创建一个订阅者之后,才可以消费发布者的消息;
为了消费消息,订阅者需要提前订阅该主角,并且保持在线运行;