消息队列一览

简介: 谈谈互联网后端基础设施  http://www.rowkey.me/blog/2016/08/27/server-basic-tech-stack/ service之间的调用方式可以分为同步调用以及异步调用。

 

谈谈互联网后端基础设施  http://www.rowkey.me/blog/2016/08/27/server-basic-tech-stack/

 

service之间的调用方式可以分为同步调用以及异步调用。异步调用是怎么进行的?一种很常见的方式就是使用消息队列,调用方把请求放到队列中即可返回,然后等待服务提供方去队列中去获取请求进行处理,然后把结果返回给调用方即可(可以通过回调)。

异步调用就是消息中间件一个非常常见的应用场景。此外,消息队列的应用场景还有以下:

  • 解耦:一个事务,只关心核心的流程,需要依赖其他系统但不那么重要的事情,有通知即可,无须等待结果。

  • 最终一致性:指的是两个系统的状态保持一致,要么都成功,要么都失败,可以有一定的延迟,只要最终达到一致性即可。

  • 广播:这是消息队列最基本的功能。生产者只需要发布消息,无须关心有哪些订阅者来消费消息。

  • 错峰与流控:当上下游系统处理能力不同的时候就需要类似消息队列的方式做为缓冲区来隔开两个系统。

目前主流的消息队列软件,主要有以下几种:

  • ActiveMQ:Java中最为简单的消息队列,是对JMS的实现,没有规定消息的顺序、安全、重发等特性。

  • RabbitMQ:是对AMQP协议的实现,对于消息的顺序性、安全、重发等都做了很好的支持。比较适合不允许数据丢失、有事务需求的业务场景下的消息传输。

  • Kafka:是基于Log的消息队列,底层依赖于文件的顺序读取,是append-only的。适合对数据丢失不敏感、强调性能的一些海量日志传输场景中。是最近几年大数据领域很火的一个技术。 

  • ZeroMQ:是一个网络编程的Pattern库,将常见的网络请求形式(分组管理,链接管理,发布订阅等)模式化、组件化,简而言之socket之上、MQ之下。对于MQ来说,网络传输只是它的一部分,更多需要处理的是消息存储、路由、Broker服务发现和查找、事务、消费模式(ack、重投等)、集群服务等。 

 

目录
相关文章
|
运维 数据可视化 安全
阿里巴巴DevOps实践指南(二十三)| 编排运维
面向编排的运维是指用户(PaaS 服务以及开发、运维、运营等角色)根据实际业务需要,对多个原子组件通过简单编排的方式进行灵活装配,构造出不同的业务流程以便完成一个完整的运维需求。运维编排可以帮助我们更好地规范、管理和执行自动化运维操作,以模板的方式定义所需要进行的操作,然后再通过系统运行,从而提高整体运维操作的效率、增强运维操作的安全性,并避免人工运维的错误。
阿里巴巴DevOps实践指南(二十三)| 编排运维
|
运维 监控 安全
阿里巴巴DevOps实践指南(十九)| 监管控一体化运维
阿里巴巴应用运维监管控一体化的建设随着业务形态和技术架构还在不断地探索和发展,本文主要介绍了应用运维监管控一体化建设的背景和思路。我们以应用为中心,从应用监控管角度出发,通过全视角监控实时掌握应用的运行状态,通过高效发布部署和灵活的运维编排对应用进行安全变更,通过智能化运维和安全防护实现应用的高级防护。
阿里巴巴DevOps实践指南(十九)| 监管控一体化运维
|
机器学习/深度学习 算法 关系型数据库
Python循环进阶:嵌套与控制的深度解析
本文深入探讨Python中嵌套循环的原理与应用,从数学模型到工程实践全面解析。内容涵盖嵌套循环的本质(如笛卡尔积实现、变量作用域)、精细控制技巧(如break/continue、迭代器协议、异常处理),以及性能优化策略(预计算、向量化等)。同时结合树形结构遍历、动态规划、游戏开发等典型场景,提供最佳实践建议。掌握这些技巧,助你突破编程瓶颈,实现复杂问题的优雅解决。
397 6
|
存储 Kubernetes 监控
一文彻悟容器网络通信
随着云计算的发展,应用间通信从物理机网络,虚拟机网络,发展到目前的容器网络。由于容器不同于物理机、虚拟机,容器可以被理解为一个标准的,轻量级的,便携的,独立的集装箱,集装箱之间相互隔离,都使用自己的环境和资源。但随着越来越复杂环境变化,容器在运行中会需要容器间或者容器与集群外部之间的信息传输,这时候容器就要在网络层面拥有一个名字(即 IP 地址),由此容器网络就应运而生。
1946 8
一文彻悟容器网络通信
|
SQL 消息中间件 JavaScript
MyBatis多条件查询、动态SQL、多表操作、注解开发详细教程
MyBatis多条件查询、动态SQL、多表操作、注解开发详细教程
MyBatis多条件查询、动态SQL、多表操作、注解开发详细教程
|
Java API Kotlin
教你用更好的方式在Activity或Fragment之间传递以及返回数据
教你用更好的方式在Activity或Fragment之间传递以及返回数据
698 0
教你用更好的方式在Activity或Fragment之间传递以及返回数据
|
存储 机器学习/深度学习 人工智能
数据结构(严蔚敏版)——第一章 绪论
本文章是观看青岛大学——王桌老师讲(严蔚敏版)数据结构视频所做的总结, 包含:1、基本概念 2、抽像数据类型的定义与实现 3、算法时间复杂度的分析 4、算法的空间复杂度 以及例题复数的定义与实现(包含两种代码:C语言、JAVA)
687 1
|
Web App开发 SQL JSON
使用python获取浏览器收藏夹和历史浏览记录,然后可以...
使用python获取浏览器收藏夹和历史浏览记录,然后可以...
1327 0
使用python获取浏览器收藏夹和历史浏览记录,然后可以...
|
运维 监控 负载均衡
项目一----IDC的功能和运维要求
项目一----IDC的功能和运维要求
1193 0
项目一----IDC的功能和运维要求
|
存储 安全 Unix
一个Bug让人类科技倒退几十年?
一个Bug让人类科技倒退几十年?
788 0
一个Bug让人类科技倒退几十年?