- 浏览: 494359 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
RabbitMQ
RabbitMQ有一个交换机(Exchange)决定消息分发到那些队列中
交换机有四种类型:
Direct:direct 类型的行为是"先匹配, 再投送". 即在绑定时设定一个 routing_key, 消息的routing_key 匹配时, 才会被交换器投送到绑定的队列中去.
Topic:按规则转发消息(最灵活)
Headers:设置header attribute参数类型的交换机
Fanout:转发消息到所有绑定队列
多个消费者定阅同一个队列,只有一个消费者可以得到的消息,消费完消息会删除
多种应用消费者要消费同样的消息,可以建立不同的队列,以Topic转发规则匹配到多个队列中实现
消息消费后就不再存在
https://www.cnblogs.com/ityouknow/p/6120544.html
为了确保消息不会丢失,RabbitMQ支持消息应答。
https://blog.csdn.net/a491857321/article/details/50670238
RabbitMQ在服务端没有声明队列和消息持久化时,队列和消息是存在内存中的,服务端宕机了,队列和消息也不会保留。
服务端声明持久化,客户端想接受消息的话,必须也要声明queue时,也要声明持久化,不然的话,客户端执行会报错。
https://www.jianshu.com/p/6376936845ff(消息中间件—RabbitMQ(集群原理与搭建篇))
RocketMQ
支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型
单一队列百万消息的堆积能力
Tag标签可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息。
Name Server 为 producer 和 consumer 提供路由信息。
NameServer: 提供轻量级的服务发现和路由。
一个topic可以对应多个queue,多消都多生产时用于提高吞吐量
延时消息
延时消息,简单来说就是当 producer 将消息发送到 broker 后,会延时一定时间后才投递给 consumer 进行消费。
发布/订阅(Pub/Sub)
消息会一直持久化在broker中,通过一定的策略来删除消息
集群消费,一个消息只会被同一个组的消费者中的一个消费者消费
支持分组消费,就是不同应用可以订阅同一个topic,但属于不同的消费组,每个组的消费者都会消费同一topic里的所有消息,
消息支持应答,如果没有应答就会发送到同组的其他消费者消费(return ConsumeOrderlyStatus.SUCCESS;)
发布/订阅模式,消息消费后还存有,会保存一份,更改分组名后可以重新消费之前的所有消息
P2P模式,一个消息只有一个真正的消费者,因为消息取走了之后,消息就不会在broker存在了
每个组的消费信息会保存到broker中
当 consumer 使用集群消费时,每条消息只会被 consumer 集群内的任意一个 consumer 实例消费一次。
https://www.jianshu.com/p/824066d70da8
https://blog.csdn.net/iie_libi/article/details/54289580
https://mp.weixin.qq.com/s/QdNQFG6ohhPpNppScEXdUQ
activemq
两种数据结构:Queue/Topic
1.Queue队列,生产者生产一个消息,只能由一个消费者进行消费.
2.Topic 话题.生产者生产一个消息,可以由多个消费者进行消费.,
支持消费应答
多个一样的消费者可以用Queue,但不同应用要相同的数据就不能用Queue,因为同一个消息只会有一个消费者消费
多个应用接收相同消息可用Topic,但一个应用不能有多个了,否则同一个消息会消费多次
如果多应用多节点就只能多开Queue的方式进行处理了
Topic模式只对在线的消费者发送消息,
Queue队列模式后面再上线也会接收到之前的消息
对于这种点对点的发送方式而言,一旦服务器中的消息被相应的消费者消费后,对应的消息就会立刻被移出消息队列。
对于发布订阅式的通信模式而言,消费者必须先于生产者而启动,否者的话,消费者是接收不到相应的消费消息的。
https://www.cnblogs.com/xiohao/p/4835594.html
https://www.cnblogs.com/xiohao/p/4835594.html
https://blog.csdn.net/zhangll_2008/article/details/78657177(分布式消息中间件-Rocketmq)
https://www.cnblogs.com/xiaodf/p/5075167.html(阿里 RocketMQ 安装与简介)
kafka
支持应答
支持分组消费
支持重新消费之前的数据(offect)
消费事务
https://www.cnblogs.com/xuwc/p/9034352.html
//1.发送端,先在同一个事务中把消息放入数据库,发送成功后再把数据库的消息删除或更换状态。(要求数据库事务一致性,路由到同一个库就可以实现了),发送失败就由下一次的发送或后台定时任务进行处理。
2.发送失败,重试N次还是失败,保存到DB,由后台线程进行发送。(这种方式业务会简单一占)
存在问题,逻辑处理了,但消息没有发送就宕机了,所以单库就放到逻辑事务中就可以了,如果多库就要解多库的事务问题(如分到同一个库中),发送后删除。后台找到没发送的重发
https://blog.csdn.net/qq_32020035/article/details/82113751
//接收端,处理与消息去重在同一事务中进行,操作完成再回ACK给MQ,这样就可以保证消息不会被重复消费。
接收端接收到消息时就先向去重表放一条数据,再在事务中做逻辑处理,消息回应放到事务里面,以备失败回滚,同样存在插入了,但逻辑失败
高并发下去重:加上缓存加快去重查询操作
//接收端,
1.查询ID是否在去重表,是不处理。否插入到去重表。
2.执行逻辑处理(执行多次(最好有一定延时)),成功返回MQ的ACK。失败,去重表删除ID(重试多次(最好有一定延时)),成功就退出(不回ACK),删除失败,写消息到日志中(手工进行恢复).
3.2中如果写日志失败也会存在问题,所以如果是重复的就把消息写和另一个日志进行保存.
//接收端,
1.保证去重和逻辑处理在同一个库中进行处理,以消息ID和逻辑处理的ID拼接路由到同一个库实现。(保证去重表与逻辑处理的一致性),这样就可以解决不一致的问题了.
kafka在一台普通的服务器上既可以达到10W/s的吞吐速率
RabbitMQ有一个交换机(Exchange)决定消息分发到那些队列中
交换机有四种类型:
Direct:direct 类型的行为是"先匹配, 再投送". 即在绑定时设定一个 routing_key, 消息的routing_key 匹配时, 才会被交换器投送到绑定的队列中去.
Topic:按规则转发消息(最灵活)
Headers:设置header attribute参数类型的交换机
Fanout:转发消息到所有绑定队列
多个消费者定阅同一个队列,只有一个消费者可以得到的消息,消费完消息会删除
多种应用消费者要消费同样的消息,可以建立不同的队列,以Topic转发规则匹配到多个队列中实现
消息消费后就不再存在
https://www.cnblogs.com/ityouknow/p/6120544.html
为了确保消息不会丢失,RabbitMQ支持消息应答。
https://blog.csdn.net/a491857321/article/details/50670238
RabbitMQ在服务端没有声明队列和消息持久化时,队列和消息是存在内存中的,服务端宕机了,队列和消息也不会保留。
服务端声明持久化,客户端想接受消息的话,必须也要声明queue时,也要声明持久化,不然的话,客户端执行会报错。
https://www.jianshu.com/p/6376936845ff(消息中间件—RabbitMQ(集群原理与搭建篇))
RocketMQ
支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型
单一队列百万消息的堆积能力
Tag标签可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息。
Name Server 为 producer 和 consumer 提供路由信息。
NameServer: 提供轻量级的服务发现和路由。
一个topic可以对应多个queue,多消都多生产时用于提高吞吐量
延时消息
延时消息,简单来说就是当 producer 将消息发送到 broker 后,会延时一定时间后才投递给 consumer 进行消费。
发布/订阅(Pub/Sub)
消息会一直持久化在broker中,通过一定的策略来删除消息
集群消费,一个消息只会被同一个组的消费者中的一个消费者消费
支持分组消费,就是不同应用可以订阅同一个topic,但属于不同的消费组,每个组的消费者都会消费同一topic里的所有消息,
消息支持应答,如果没有应答就会发送到同组的其他消费者消费(return ConsumeOrderlyStatus.SUCCESS;)
发布/订阅模式,消息消费后还存有,会保存一份,更改分组名后可以重新消费之前的所有消息
P2P模式,一个消息只有一个真正的消费者,因为消息取走了之后,消息就不会在broker存在了
每个组的消费信息会保存到broker中
当 consumer 使用集群消费时,每条消息只会被 consumer 集群内的任意一个 consumer 实例消费一次。
https://www.jianshu.com/p/824066d70da8
https://blog.csdn.net/iie_libi/article/details/54289580
https://mp.weixin.qq.com/s/QdNQFG6ohhPpNppScEXdUQ
activemq
两种数据结构:Queue/Topic
1.Queue队列,生产者生产一个消息,只能由一个消费者进行消费.
2.Topic 话题.生产者生产一个消息,可以由多个消费者进行消费.,
支持消费应答
多个一样的消费者可以用Queue,但不同应用要相同的数据就不能用Queue,因为同一个消息只会有一个消费者消费
多个应用接收相同消息可用Topic,但一个应用不能有多个了,否则同一个消息会消费多次
如果多应用多节点就只能多开Queue的方式进行处理了
Topic模式只对在线的消费者发送消息,
Queue队列模式后面再上线也会接收到之前的消息
对于这种点对点的发送方式而言,一旦服务器中的消息被相应的消费者消费后,对应的消息就会立刻被移出消息队列。
对于发布订阅式的通信模式而言,消费者必须先于生产者而启动,否者的话,消费者是接收不到相应的消费消息的。
https://www.cnblogs.com/xiohao/p/4835594.html
https://www.cnblogs.com/xiohao/p/4835594.html
https://blog.csdn.net/zhangll_2008/article/details/78657177(分布式消息中间件-Rocketmq)
https://www.cnblogs.com/xiaodf/p/5075167.html(阿里 RocketMQ 安装与简介)
kafka
支持应答
支持分组消费
支持重新消费之前的数据(offect)
消费事务
https://www.cnblogs.com/xuwc/p/9034352.html
//1.发送端,先在同一个事务中把消息放入数据库,发送成功后再把数据库的消息删除或更换状态。(要求数据库事务一致性,路由到同一个库就可以实现了),发送失败就由下一次的发送或后台定时任务进行处理。
2.发送失败,重试N次还是失败,保存到DB,由后台线程进行发送。(这种方式业务会简单一占)
存在问题,逻辑处理了,但消息没有发送就宕机了,所以单库就放到逻辑事务中就可以了,如果多库就要解多库的事务问题(如分到同一个库中),发送后删除。后台找到没发送的重发
https://blog.csdn.net/qq_32020035/article/details/82113751
//接收端,处理与消息去重在同一事务中进行,操作完成再回ACK给MQ,这样就可以保证消息不会被重复消费。
接收端接收到消息时就先向去重表放一条数据,再在事务中做逻辑处理,消息回应放到事务里面,以备失败回滚,同样存在插入了,但逻辑失败
高并发下去重:加上缓存加快去重查询操作
//接收端,
1.查询ID是否在去重表,是不处理。否插入到去重表。
2.执行逻辑处理(执行多次(最好有一定延时)),成功返回MQ的ACK。失败,去重表删除ID(重试多次(最好有一定延时)),成功就退出(不回ACK),删除失败,写消息到日志中(手工进行恢复).
3.2中如果写日志失败也会存在问题,所以如果是重复的就把消息写和另一个日志进行保存.
//接收端,
1.保证去重和逻辑处理在同一个库中进行处理,以消息ID和逻辑处理的ID拼接路由到同一个库实现。(保证去重表与逻辑处理的一致性),这样就可以解决不一致的问题了.
kafka在一台普通的服务器上既可以达到10W/s的吞吐速率
发表评论
-
rocketmq安装部署.txt
2021-11-07 19:10 215docker search rocketmq docke ... -
spring kafka 配置详解
2016-09-28 10:24 6260spring kafka 配置详解 使用spring-in ... -
spring-integration-kafka简单应用
2016-09-26 19:52 1271spring-integration-kafka简单应用 ... -
kafka java原生简单应用
2016-09-23 15:10 693kafka java原生简单应用 KafkaTestMa ... -
Kafka
2016-09-10 10:33 906Kafka 消息队列MQ技术的一种应用 kafka的构 ...
相关推荐
Websphere MQ应用架构以及性能调优和测试,IBM内部保密资料。
WebSphere MQ应用经验介绍.pptWebSphere MQ应用经验介绍.pptWebSphere MQ应用经验介绍.pptWebSphere MQ应用经验介绍.ppt
《IBM MQ应用编程指南》是一本面向开发人员的详尽参考资料,旨在帮助读者掌握如何使用各种编程语言与IBM MQ进行交互,实现高效、稳定的消息传递。IBM MQ是业界广泛采用的企业级消息中间件,它提供了可靠的异步通信...
有关MQ很好的范例教程,该文档是有关MQ应用的实例讲解
### Websphere MQ 简单的应用培训 #### 1. Websphere MQ 原理 ##### 1-1. 什么是中间件 中间件是位于应用软件和系统软件之间的一种可复用基础软件,它的主要作用是通过自身的复杂性来换取应用软件的简化。中间件...
WebSphere MQ 可以应用于各种需要异步通信的场景,例如: * 订单处理系统:WebSphere MQ 可以用于订单处理系统,实现订单的异步处理。 * 支付系统:WebSphere MQ 可以用于支付系统,实现支付的异步处理。 * 论坛...
《MQ应用入门》是DeluxWorld专栏在2018年发布的一份针对IBM MQ初学者的教程资源,旨在帮助那些刚开始接触MQ6.X或7.X版本的开发者快速熟悉并掌握消息队列(MQ)的基本概念和开发技巧,避免在学习过程中迷失方向。...
WebSphere+MQ应用经验介绍.ppt
描述中的“IBM webSphere Mq应用jar包集合”是指IBM MQ提供的Java开发包,这些JAR文件包含了开发和运行与MQ交互的Java应用程序所需的类和资源。这些库使得开发者能够在Java环境中编写代码,以便发送、接收和管理MQ...
5. **MQ编程模式**:探索各种MQ编程模式,如同步和异步消息处理,以及如何设计高效、健壮的MQ应用。 6. **故障排查与性能优化**:学习如何诊断MQ相关的问题,以及如何调整MQ配置以提高性能和可扩展性。 7. **安全...
客户端包含了所有必要的库和工具,使得开发人员可以在各种操作系统平台上构建MQ应用,如Windows、Linux、Unix等。 2. **版本7.5.0.3**:这是MQ客户端的一个特定版本,每个版本可能包含性能优化、新功能、安全修复或...
总的来说,IBM MQ提供了一套强大且灵活的消息传递机制,适用于各种企业级应用。通过`mqput`命令和相应的API,开发人员可以轻松地实现在不同系统间的数据交换,确保了系统的稳定性和效率。理解并熟练运用这些工具和...
作为MQ系列产品的基石,WebSphere MQ为不同系统间的通信提供了强大的支持,确保了企业应用之间的稳定、高性能和可靠的通讯。 1. **消息中间件概念**:消息中间件是连接分布式系统的一种软件,它通过消息队列进行...
IBM MQ Explore是一款强大的工具,专为管理IBM WebSphere MQ(以前称为IBM Message Queuing或IBM MQ)环境而设计。...确保遵循正确的安装步骤,并充分利用其提供的各种管理选项,以优化IBM MQ的运行效率和稳定性。
JMS是Java平台上的一个标准接口,用于访问各种消息中间件,包括IBM MQ。在IBM MQ中,JMS被封装在com.ibm.mq.allclient.jar库中,我们需要将其添加到项目依赖中。 发送消息到IBM MQ的步骤如下: 1. **初始化...
【分布式应用系统间数据传输】是现代IT领域中的重要课题,而【利用MQ实现分布式应用系统间数据传输】则是一种常见的解决方案。MQ,即Message Queue(消息队列),是IBM公司的WebSphere MQ中间件,它提供了一种高效、...
3. **编程接口**:了解如何使用各种编程语言(如Java的JMS API,C的API等)与WebSphere MQ交互。 4. **管理和监控**:学习如何配置、管理和监控WebSphere MQ环境,包括性能监控、故障排查和日志分析。 5. **安全性...
总结来说,这个压缩包提供的内容涵盖了MQ2气体传感器的MATLAB仿真、硬件驱动程序以及通信协议的实现,对于理解MQ2的性能特性、开发相关应用以及构建基于STM32F103和Modbus RS485网络的监控系统具有重要的参考价值。...
### Websphere MQ 实现应用程序通信详解 #### 一、概述 IBM WebSphere MQ(简称WMQ)是一种消息中间件,用于实现不同应用程序之间的通信。它支持多种平台和语言,能够在分布式环境中提供可靠的消息传递服务。本文将...