热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[晨读系列——01]分布式架构消息队列

一、消息队列概述消息队列中间件是分布式系统的重要组建,主要解决:应用耦合,异步消息,流量削峰、消息通讯等问题。目前在生产环境
一、消息队列概述

消息队列中间件是分布式系统的重要组建,主要解决:应用耦合,异步消息,流量削峰、消息通讯等问题。

目前在生产环境,使用较多的消息队列有:ActiveMQ、RabbitMQ、ZeroMQ、kafka、MetaMQ、RocketMQ




二、消息队列应用场景

 1.异步处理




如,用户注册后,串行发送注册邮件和短信,会浪费时间。但是使用消息队列,注册信息写入数据库——写入消息队列——异步读取——发送注册邮件(注册短信),可提高系统吞吐量。






2.应用解耦




场景:用户下单后,订单系统需要通知库存系统,传统方法是调用库存系统的接口,但假如库存系统无法访问,则订单失败,订单系统与库存系统耦合。

解决方案:









3.流量削峰




应用场景:秒杀活动,一般会因为流量过大而导致应用挂掉。应用消息队列,可控制活动人数,缓解短时间内高流量






解决方案:服务器接受用户请求后,首先写入消息队列,如果消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面。







4.日志处理

如kafka的应用,解决大量日志传输的问题。



日志采集客户端:负责日志数据采集,定时写入kafka队列。

kafka队列:负责日志数据的接受、存储和转发

注:Elasticsearch:实时日志分析服务的核心技术,一个schemaless,实时数据存储服务,通过Index组织数据,兼具强大的搜索和统计功能。kibana是基于Elasticsearch的数据可视化组件。










三、JMS消息服务




有两种消息模型,P2P和 publish/subscribe




1.点对点

每个消息 只有一个消费者,发送者发送消息后,不会管是否接收成功




2.发布/订阅模式

三个角色:主题、发布者、订阅者。多个发布者发送消息到多个订阅者。




3.消息消费:

同步:订阅者通过receive方法接收消息,接收到消息前将一直阻塞

异步:可注册一个消息监听器,小气到达之后,自动调用监听器的onMessage方法

























推荐阅读
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 一文了解消息中间件RabbitMQ
    消息中间件---RabbitMQ1消息中间件的作用2.常用的消息中间件3消息中间件RabbitMQ3.1RabbitMQ介绍3.3RabbitMQ的队列模式3.3RabbitMQ的 ... [详细]
  • 启动activemq_「Java」SpringBoot amp; ActiveMQ
    一、消息队列消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构, ... [详细]
  • Alibaba珍藏版mybatis手写文档,值得一读!
    一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • Hudi是一种数据湖的存储格式,在Hadoop文件系统之上提供了更新数据和删除数据的能力以及流式消费变化数据的能力。应用场景近实时数据摄取Hudi支持插入、更新和删除数据的能力。您 ... [详细]
  • RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP,SMTP,STOMP,也 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 为何Serverless将成为未来十年的主导技术领域?
    为何Serverless将成为未来十年的主导技术领域? ... [详细]
  • 在DB2数据库的性能调优与设计策略中,物理设计是关键环节。具体包括:1. 容器设计:采用条带化技术、裸设备以及支持并发I/O的配置,以提高数据访问效率。2. 存储方案:建议使用RAID5用于日志存储,以平衡成本和性能;而数据存储则推荐使用RAID10,确保高可靠性和读写性能。3. 系统配置:合理配置系统参数,优化内存管理和缓存策略,进一步提升整体性能。 ... [详细]
  • 顶尖编程语言,无可匹敌的选择
    我常常在想,一个人具备怎样的素质和能力,才称得上高级工程师?估计有不少人会说,“基础过硬、熟练掌握一门编程语言、至少看过一个 ... [详细]
  • 分布式一致性算法:Paxos 的企业级实战
    一、简介首先我们这个平台是ES专题技术的分享平台,众所周知,ES是一个典型的分布式系统。在工作和学习中,我们可能都已经接触和学习过多种不同的分布式系统了,各 ... [详细]
  • 字节Java高级岗:java开发cpu吃多线程吗
    前言抱着侥幸心理投了字节跳动后台JAVA开发岗,居然收到通知去面试,一面下整个人来都是懵逼的,不知道我对着面试官都说了些啥(捂脸~~)。侥幸一面居然过了,三天后接到二面通知,结果这 ... [详细]
  • 背景最近面试面得心力交瘁,由于没有高并发架构的实际项目经验,经常是在场景设计的面试题目上面栽跟头。上次就被问到了关于秒杀系统的设计,竟无 ... [详细]
  • Spring cloud微服务架构前后端分离博客系统,Vue+boot源码分享 ... [详细]
  • 经验总结:你觉得你真的了解Kafka消费者吗?附超全教程文档
    为什么要公开这些面试题?原因一:身边从事Java开发的人员越来越多,我的表弟表妹们,朋友的表弟表妹们,朋友的 ... [详细]
author-avatar
一个怪瓜的自白
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有