阿里P8架构师谈:消息中间件介绍、典型使用场景、以及使用原则
大型分布式架构里一定会涉及到消息中间件,今天先谈谈消息中间件。
常用的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。
一、kafka
1、不完全符合jms规范,注重吞吐量,类似udp 和 tcp
2、一般做大数据吞吐的管道 我们现在的用途就是负责在各个idc之间通信
3、量大对数据不是百分之百保证的,会有数据丢失,不是百分百送达(amq和rmq等有重发机制,而kafka没有);在吞吐量有提升 ,在这方面就得有牺牲, 所以kafka适合大数据量流转, 比如日志数据 比如用作统计的数据。
二、activeMQ
ActiveMQ居于两者之间,类似于ZemoMQ,它可以部署于代理模式和P2P模式。类似于RabbitMQ,它易于实现高级场景,而且只需付出低消耗。它被誉为消息中间件的“瑞士军刀”。
三:RocketMQ(阿里官方指定消息中间件)
RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。
消息中间件使用的典型场景优四个
1.典型的异步处理
2.应用解耦
3.流量削锋
4.消息通讯四个场景
比如:今日头条的私信就是一个典型的消息通讯场景,因为消息通讯的数据不需要即使立即同步回来,不算是核心数据,可以延时通过异步的消息发送,这样可以降低系统的负荷。
所以,我们在架构设计的时候,有一个原则就是:消息原则上都是异步消息发送,除非涉及到交易的情况才考虑数据即使同步,否则能异步的都采用异步消息设计。
再比如:流量削锋的典型场景就有阿里的双11秒杀、团购抢购活动等。
应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。
a、可以控制活动的人数
b、可以缓解短时间内高流量压垮应用
用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面。
秒杀业务根据消息队列中的请求信息,再做后续处理。
架构设计之中间件总结:
1.消息中间件的四个典型场景:典型的异步处理、应用解耦、流量削锋、消息通讯四个场景。
2.能异步就不要同步:能异步的消息原则都尽量采用异步的方式。
3.如果消息性能要求高,用rocketMQ与kafka可以更优,rocketMQ与kafka 比较就看技术选型了,各有利弊,看业务需要。
4.实现语言来看,RabbitMQ(阿里官方指定消息中间件)最高,原因是它的实现语言是天生具备高并发高可用的erlang语言。综合来看,RabbitMQ是首选。
5.典型的秒杀活动、抢购、消息通讯、邮件发送、电话短信等都是典型的采用消息中间件的业务场景。
微信公众号:javafirst
扫码关注免费获取更多资源
阿里P8架构师谈:消息中间件介绍、典型使用场景、以及使用原则相关推荐
- 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景
Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用 ...
- 阿里P8架构师谈:架构设计经验汇总
架构设计更多的是实践经验总结,以下架构设计经验,我会陆续补充完整. 一:数据库拆分原则 阿里P8架构师谈:架构设计之数据库拆分六大原则 二:缓存选择原则 阿里P8架构师谈:分布式缓存的应用场景.选型比 ...
- 阿里P8架构师谈:分布式架构设计12精讲
分布式架构设计包含: 分布式缓存 分布式消息中间件 分库分表.读写分离 单点登录等 想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系! 阿里P8架构师谈:分布式架构系统拆分原则.需求.微 ...
- 阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解
本文涉及的内容以及知识点如下: 1.单体架构 2.单体架构的拆分 3.SOA与微服务的区别 4.微服务的优缺点 5.微服务的消息 6.服务集成 7.数据的去中心化 单体架构 Web应用程序发展的早期, ...
- 阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别
什么是RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC使 ...
- 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别
内容大纲: 1.介绍Restful.SOAP.RPC.SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了 ...
- 阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略
常见性能优化策略分类 1.代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视.很多技术人员拿到一个性能优化的需求以后,言必称缓存.异步.JVM等.实际上,第一步就应该是分析相关的代码, ...
- 阿里P8架构师谈:分布式事务的解决方案,以及原理、总结
分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务各方面与大家进行介绍. 事务 1. ...
- 阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则
MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓"好马配好鞍",如何能够更好的使用它,已经成为开发工程师的必修 ...
- 阿里P8架构师谈:Quartz调度框架详解、运用场景、与集群部署实践
以下将分别从Quartz架构简介.集群部署实践.Quartz监控.集群原理分析详解Quartz任务调度框架. Quartz简介 Quartz是Java领域最著名的开源任务调度工具,是一个任务调度框架, ...
最新文章
- 如何用CSS快速布局(一)—— 布局元素详细
- PL/SQL两种case语句写法
- 提高阅读源代码的效率 转
- Java SecurityManager checkPermission()方法与示例
- c语言二进制数怎么表示_搞懂这些公式和原理,二级C语言对你来说肯定会简单很多!...
- [转]该学Java或.NET?
- 蔚来三元铁锂电池绕道超车
- Android编程之Toast官方使用说明译文
- 查找算法——插值查找
- 小尺寸笔记本将走向何方 — X280 长测
- js导出excel格式错误的问题
- java毕业生设计房屋租售网站计算机源码+系统+mysql+调试部署+lw
- java 读取sqlite_在Java中使用Sqlite数据库
- 《How to be nubility for coder》
- Java并发基础知识,我用思维导图整理好了
- 加班者的王者语录(改编)
- 〖Python WEB 自动化测试实战篇⑦〗- 实战 - selenium的基本元素操作与键盘鼠标模拟事件操作
- ROS激光雷达导航调试记录
- 全国计算机等级三级网络技术试卷详解(三)
- 如何在没有联网的情况下使用maven本地仓库进行开发
热门文章
- 如何对付臭名昭著的 IO 夯?诊断利器来了
- 问题:tomcat启动后,可以访问主页面,但是无法访问dubbo-admin
- 简易费诺算法的C语言实现
- Java并发编程知识大汇总
- P1071,OpenJudge1.7-11潜伏者详解
- python spss,有没有一个Python模块打开SPSS文件?
- CocosCreator之KUOKUO分享-俄罗斯方块
- 清博舆情系统_什么是舆情
- OpenGL教程翻译 第二十五课 天空盒
- my-view-isnt-reflecting-changes-ive-made-to-the-underlying-tables