大型网站架构系列:分布式消息队列(一) (转)

  • 时间:
  • 浏览:3
  • 来源:uu快3漏洞_uu快3链接_公式

消息队列上边件是分布式系统中重要的组件,主要处理应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的上边件。

应用场景:秒杀活动,一般会不可能 流量过大,导致 着流量暴增,应用挂掉。为处理这一 问题,一般才能 在应用前端加入消息队列。

聊天室通讯:

客户端A和客户端B使用同一队列,进行消息通讯。

场景说明:用户注册后,才能 发注册邮件和注册短信。传统的做法有这一 1.串行的土办法;2.并行土办法。

日志处理是指将消息队列用在日志处理中,比如Kafka的应用,处理一定量日志传输的问题。架构比较复杂如下:(架构KKQ:4620097527,欢迎加入)

(2)并行土办法:将注册信息写入数据库成功后,发送注册邮件的共同,发送注册短信。以上却说任务完成后,返回给客户端。与串行的差别是,并行的土办法都才能提高处理的时间。

(1)Kafka:接收用户日志的消息队列。

分享是快乐的,也是该人成长的过程。文章一般是该人的学习总结,工作经验,缺乏之处在所难免,请朋友指正,共同进步。建立了却说以架构为中心的KK群4620097527 ,欢迎朋友加入。专注大型分布式网站架构,大数据,架构模式,设计模式。

(3)Elasticsearch:实时日志分析服务的核心技术,却说schemaless,实时的数据存储服务,通过index组织数据,兼具强大的搜索和统计功能。

按照以上约定,用户的响应时间为宜是注册信息写入数据库的时间,也却说200毫秒。注册邮件,发送短信写入消息队列后,直接返回,否则写入消息队列的速率调慢,基本都才能忽略,否则用户的响应时间不可能 是200毫秒。否则架构改变后,系统的吞吐量提高到每秒20 QPS。比串行提高了3倍,比并行提高了两倍。

2) 订单系统与库存系统耦合;

点对点通讯:

(3)消息将应用解耦的共同,带来了数据一致性问题,都才能采用最终一致性土办法处理。比如主数据写入数据库,扩展应用根据消息队列,并结合数据库土办法实现基于消息队列的后续处理。

引入消息队列,将才能 才能 的业务逻辑,异步处理。改造后的架构如下:

1) 假如库存系统无法访问,则订单减库存将失败,从而导致 着订单失败;

目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。

流量削锋也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。

消息队列采用高可用,可持久化的消息上边件。比如Active MQ,Rabbit MQ,Rocket Mq。(1)应用将主干逻辑处理完成后,写入消息队列。消息发送是是否是成功都才能开启消息的确认模式。(消息队列返回消息接收成功请况后,应用再返回,却说保障消息的详细性)

不可能 CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是200次。则串行土办法1秒内CPU可处理的请求量是7次(2000/200)。并行土办法处理的请求量是10次(2000/200)。

分为Zookeeper注册中心,日志分派客户端,Kafka集群和Storm集群(OtherApp)四偏离 组成。

小结:如以上案例描述,传统的土办法系统的性能(并发量,吞吐量,响应时间)会有瓶颈。怎样才能处理这一 问题呢?

以下是新浪kafka日志处理应用案例:

(4)Kibana:基于Elasticsearch的数据可视化组件,超强的数据可视化能力是众多公司选则ELK stack的重要导致 着。

怎样才能处理以上问题呢?引入应用消息队列后的方案,如下图:

消息通讯是指,消息队列一般都内置了高效的通信机制,否则也都才能用在纯的消息通讯。比如实现点对点消息队列,不可能 聊天室等。

以上实际是消息队列的这一 消息模式,点对点或发布订阅模式。模型为示意图,供参考。

客户端A,客户端B,客户端N订阅同一主题,进行消息发布和接收。实现之类聊天室效果。

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息上边件示例(电商,日志系统)。

以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯五个场景。

(2)Logstash:做日志解析,统一成JSON输出给Elasticsearch。

假设却说业务节点每个使用200毫秒钟,不考虑网络等否则 开销,则串行土办法的时间是200毫秒,并行的时间不可能 是200毫秒。

Storm集群:与OtherApp处在同一级别,采用拉的土办法消费队列中的数据;

(1)串行土办法:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上却说任务详细完成后,返回给客户端。(架构KKQ:4620097527,欢迎加入)

场景说明:用户下单后,订单系统才能 通知库存系统。传统的做法是,订单系统调用库存系统的接口。如下图:(架构KKQ:4620097527,欢迎加入)

传统模式的缺点:

(2)扩展流程(发短信,配送处理)订阅队列消息。采用推或拉的土办法获撤出 息并处理。

转自(http://cloud.51cto.com/art/202007/484338.htm)