这是我参与「第五届青训营 」伴学笔记创作活动的第十六天。今天学习了有关消息队列的课程,在上课之前有简单的使用过消息队列,但当时只是为了学习才去使用的,并没有意识到它真的用途和重要性,通过今天的课程让我对消息队列有了更深得理解。
课程一开始老师给我们讲了一个故事,并向我们提出几个实际问题,一位抖音用户在参加秒杀活动抢购商品时,如何减轻服务器压力?如何提高用户体验?数据库宕机怎么办?通过这几个问题引出了今天课程的主角:消息队列,它是一个保存消息的容器,本质是个队列,但它需要支持高吞吐、高并发、高可用。截止到目前为止,比较流行的消息队列是以下几个:
- Kafka:分布式的、分区的、多副本的日志提交服务,在高吞吐的场景下发挥较为出色。
- RocketMQ:延迟低、强一致、高i性能、高可靠、亿万级容量和灵活的扩展性,在一些实时场景运用较广。
- Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量式函数计算为一体、采用存算分离的架构设计。
- BMQ:和Pulsar架构类似,存算分离初期定位是承接高吞吐的离线业务场景,逐渐替换掉对应的Kafka集群。
以Kafka为例,我们该如何去使用他们呢?第一步:首先要创建一个Kafka集群。第二步:需要在这个集群里创建一个Topic,并且设置好分片数量。第三步:引入对应语言的SDK,设置好集群和Topic等参数,初始化一个生产者,调用Send方法,将你的HelloWorld发送出去。第四步:引入对应语言的SDK,设置好集群和Topic等参数,初始化一个消费者,调用Poll方法,就可以收到刚刚发出的消息。