消息队列之kafka(基础介绍)

news/2024/7/5 8:54:37

消息队列之kafka(基础介绍)

一、关于JMS

1. JMS 的基础

  JMS是Java提供的一套技术规范。即Java消息服务(Java message service)。应用程序接口。是一个Java平台中关于面向消息中间件的API。用于在两个应用程序之间或者分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API。
  用来异构系统集成通信,缓解系统瓶颈。 提高系统的伸缩性、增强系统用户体验。使得系统模块化和组件化变得可行并更加灵活。
JAVA2EE十三大规范:https://blog.csdn.net/qq_41637061/article/details/84640947

2. JMS消息传输模型

(1)点对点

  点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推送到客户端。这个模型的特点是发送到队列的消息被一个且只有接受者接受处理,即使有多个消息监听者也是如此。总的来说就是:一对一,消费者主动拉取数据,消息收到后消息清除


消息队列之kafka(基础介绍)


(2) 发布/订阅模式

  发布订阅模型则是一个基于推送的消息传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅者只在主动监听主题时才接收消息,而持久订阅者则监听主题的所有消息,即时当 前订阅者不可用,处于离线状态。
消息队列之kafka(基础介绍)

3.JMS 核心组件

消息队列之kafka(基础介绍)
Destination:消息发送的目的地,也就是前面说的Queue 和 Topic。
Message:从字面上就可以看出来是被发送的消息。
Producer:消息的生产者,发送一个消息,必须通过这个产生者来发送。
MessageConsumer:与生产者相对应,这是消息的消费者或接收者,通过它来接收一个消息。
  其中 message有分为很多种类:
  StreamMessage:Java 数据流消息,用标准流操作来顺序的填充和读取。
  MapMessage:一个 Map 类型的消息;名称为 string 类型,而值为 Java 的基本类型。
  TextMessage:普通字符串消息,包含一个 String。
  ObjectMessage:二进制数组消息,包含一个 byte[]。
  XMLMessage:一个 XML 类型的消息。
  其中最常用的就是TextMessage 和 ObjectMessage。

4.常见的消息队列服务

(1) ActiveMQ

  ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支 持 JMS1.1 和 J2EE 1.4 规范的。
  特点:
      - 生产者、服务器和消费者都可分布
      - 消息存储顺序写
      - 性能极高,吞吐量大
      - 支持消息顺序
      - 客户端 pull,随机读,利用 sendfile 系统调用,zero-copy ,批量拉数据
      - 支持消费端事务
      - 支持消息广播模式
      - 支持异步发送消息
      - 支持 http 协议
      - 数据迁移、扩容对用户透明
      - 支持同步和异步复制两种 HA

(2) RocketMQ

 RocketMQ 是一款分布式、队列模型的消息中间件
  特点:
      - 能够保证严格的消息顺序
      - 提供丰富的消息拉取模式
      - 高效的订阅者水平扩展能力
      - 实时的消息订阅机制
      - 亿级消息堆积能力

二、kafka的基础介绍

1. Kafka 的介绍

   kafak是一种分布式的,基于发布/订阅的消息系统。以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。同时支持离线数据处理(hive、HBASE)和实时数据处理(spark、storm)。

2.kafka的优势

   - 解耦:允许独立的扩展或者修改两边的处理过程,只要确保他们遵循同样的接口约束。
   - 冗余:消息队列把数 据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。直到保存到使用完毕。
   - 扩展性:增大消息入队和处理的频率是很容易
   - 灵活性&峰值处理能力:消息队列能够 使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
   - 可恢复性:系统的一部分组件失效时,不会影响到整个系统。
   - 顺序保证:Kafka 保证一个 Partition 内的消息的有序性。
   - 缓冲:消息队列通过一个缓冲层来帮助任务最高效率的执行。写入队列的处理 会尽可能的快速。该缓冲有助于控制和优化数据流经过系统的速度。
   - 异步通信:消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。(想放多少放多少,需要的时候在处理)

3.kafka的特性

   - 高吞吐、低延迟:kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒。
   - 可扩展性:kafka 集群支持热扩展
   - 可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
   - 容错性:允许集群中节点失败
   - 高并发:支持数千个客户端同时读写

4.kafka的应用场景

   经典架构:Flume + Kafka + Storm /spark streaming+ Redis。
   应用场景:消息系统、跟踪网站活动、运营指标、日志聚合、流处理、采集日志、提交日志。

转载于:https://blog.51cto.com/14048416/2336648


http://www.niftyadmin.cn/n/1934961.html

相关文章

如何快速打造一款高清又极速的短视频APP?

2019独角兽企业重金招聘Python工程师标准>>> 整个短视频的市场规模一直在增长,网络数据显示2018年已经突破100亿大关,在2019年预测将超过200亿。纵观行业,在生活资讯、美食、搞笑、游戏、美妆等领域,短视频流量巨大但竞…

Java中监控文件变化的多种方案

一、使用Apache.Common.io库 package yungoal.huafeng.utils.files;import com.sun.deploy.util.SyncFileAccess; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.comm…

安卓凹凸自定义View

这个是产品的效果图然后实际运行的结果那到这个需求感觉还是很简单的,让美术出了一张图,然后我把这个背景图做成了.9图,然而,并没有什么卵用,最大的原因就是background被拉伸、挤压,高度在不同的机型显示的…

网站一直优化不动,是不是被惩罚?

SEO是一个千变万化的工作,你的每一个优化策略,都决定网站不同的走向,在很长一段时期中,我们通常会遇到各种问题,比如:网站一直优化不动。 长期停留在某个阶段,这让SEO人员,显得无所…

leetcode算法题解(Java版)-2-最长回文子串

一、int数字反转 题目描述Reverse digits of an integer. Example1: x 123, return 321Example2: x -123, return -321 思路: 题目很简单,需要注意的是:int型是32位的。1000000003 反转后就超了!所以需要包装类Integer中的最大值…

浅谈 串行信号 转换成 并行信号 原理

注 : 文中讲述的原理是推理和探讨 , 和现实中的实现不一定完全相同 。 开始之前, 可以先参考看看我之前写的两篇文章 : 《设计一个 硬件 实现的 Dictionary(字典)》 https://www.cnblogs.com/KSongKing/p…

python学习之路——命名关键字参数、函数对象、函数嵌套、名称空间与作用域、闭包函数...

命名关键字参数:在定义函数时,*与**之间参数称之为命名关键字参数 特点:在调用函数时,命名关键字参数必须按照keyvalue的形式传值 函数对象 函数是第一类对象:指的是函数的内存地址可以像一个变量值一样去使用 1.变量值…

小程序的授权机制

小程序的授权机制 it修真院小课堂 目录 1.背景介绍 2.知识剖析 3.常见问题 4.解决方案 5.编码实战 6.扩展思考 7.参考文献 8.更多讨论 1.背景介绍 说到这,我们需要先了解一下微信小程序是啥?简单说,它就是一个可以实现之前只能是原生态APP可以…