前面一个章节,我们解决了,在秒杀,抢购的环节下,会产生的大流量或者突发流量而导致的服务雪崩的问题,我们从技术,业务角度,分别采取了 令牌桶算法,漏桶算法,其中以Guava,nginx,计算器的方案来达到限流与消峰的目的,业务上,时间分片,以12306为例子,达到限流目的
这一章节,我们介绍MQ泳道的一些常用 的中间件,来解决异步通信的问题
先抛出一个问题,我们在进行用户注册的时候,一般需要向用户系统提交数据,数据持久化到数据库,同时我们也需要用户向我们的邮件系统提交数据,当同一时刻,大批量新用户啊进行注册的时候,用户系统,与邮件系统就承载过大的压力,其中注册邮件可以采取异步通信的方式来实现,下面聊一聊异步通信中常用的中间件,MQ,ActiveMQ,RocketMQ,还有kafaka等
第一种: ActiveMq,这对于单机处理的业务以及功能简单的业务,大多采取这种方式,其中就只有JMS Poducer, Porducer,Consumer,处理起来也比较简单
重点介绍一下第二种: RocketMq,也是阿里出品的一个功能,
其流程: Producer>NameServer>Broker>Conusmer,
Producer Cluster 向NameServer注册中心进行注册,并获取broker的地址,定时查询Topic消息, NameServer只是配置节点没有什么具体任务
Broker 用来存储数据信息,一般会进行主从Broker设置,搭建Broker Cluster, 并定时返回心跳与Topic给到NameServer,
Consumer cluster 向NameServer注册中心注册,并获取broker的地址,定时查询Topic消息
特点:
顺序,事务,集群,广播,亿级, 分布式,Push与Pull的消息订阅模式
开发流程:
项目代码流程
下载RocketMq
解压
配置环境
启动NameServer,Borker
引入pom依赖
制定生产者
制定消费者
消息折可以指定消费的方式
但就项目而言,我们常见的消峰的案例: app端,app端进行埋点数据上报消峰案例; PC端, 分布式调用跟踪系统埋点数据消峰