青训营课程笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天,今天主要学习了消息队列kafka、消息队列BMQ、消息队列RocketMQ。
案例与问题解决
1.系统崩溃:针对方法为解耦,在搜索行为记录方面形成消息队列并和存储业务挂钩。
2.服务能力有限:针对方法为削峰,发起订单后形成消息队列进而处理订单。
3.链路耗时长尾:针对方法为异步,消息队列下属包括库存、订单、通知商家。
4.日志存储:处于log与logstash之间进行消息对接和过度。
消息队列
MQ:指保存消息的容器、本质是队列。需要满足高吞吐,高并发,高可用。
kafka;是分布式、分区的、多副本的日志提交服务,高吞并场景发挥较为出色。基本概念具备唯一ID+分片多筛。 使用方法:创建集群》新增Topic》编写生产者逻辑》编写消费者逻辑。简单来说就是生产到消费一条线路进行。如何提高吞吐和稳定producer可以批量发送并且将数据压缩后再发送;broker进行顺序写作、消息索引、00拷贝。
BMQ:兼容Kafka,并且存算分离、云原生的消息队列。 其相对于Kafka具有从重启、替换、扩容、缩容方面都能直接对外并且速度加快。 结论解决kafka存在的问题,且具有failover机制,具有databus、mirror等高级特性。
RocketMQ:相对于kafka来说具备可以打标签,并且分区选用consumerqueue,生产者可以形成群体进行多对多开发,集群控制器也升级为nameserver。 结论基本概念是queue和可以标签,底层原理是架构模型和存储模型的集合,具备事务消息、重试和延迟队列的特征,和bmq都具备架构设计的条件。