GO消息队列原理与实战day12 | 青训营笔记

89 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第12天

业界消息队列对比

Kafka:分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色

RocketMQ:低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广

Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的架构设计

BMQ:和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群

消息队列-Kafka

使用Kafka

创建集群

新增Topic

编写生产者逻辑

编写消费者逻辑

基本概念

Topic:逻辑队列,不同Topic可以建立不同的 Topic

Cluster:物理集群,每个集群中可以建立多个不同的Topic

Producer:生产者,负责将业务消息发送到Topic中

Consumer:消费者,负责消费Topic中的消息

ConsumerGroup:消费者组,不同组Consumer消费进度互不干涉

Kafka-问题总结

1运维成本高

2对于负载不均衡的场景,解决方案复杂

3没有自己的缓存,完全依赖Page Cache

4Controller和Coordinator和Broker在同一进程中,大量IO会造成其性能下降

消息队列-BMQ

BMQ简介

兼容Kafka 协议,存算分离,云原生消息队列

直接使用原生SDK会有什么问题?

1.客户端配置较为复杂

2不支持动态配置,更改配置需要停掉服务

3.对于latency不是很敏感的业务,batch 效果不佳

消息队列-RocketMQ

使用场景

例如,针对电商业务线,其业务涉及广泛,如注册、订单、库存、物流等;同时,也会涉及许多业务峰值时刻,如秒杀活动、周年庆、定期特惠等