Kafka--引入-企业级消息系统

为什么需要消息系统/消息队列/消息中间件

  • 随着网站的发展,用户越来越多,业务也越来越复杂, 经常面临高并发问题
  • 如同一时刻有大量的用户情况过来访问数据库, 如果没有缓冲机制,那么会导致数据库压力过大,连接溢出
  • 那么这时候就需要一些机制来保证系统的正常运行,如之前学习的缓存,将查询请求挡在数据库之前,但是修改更新操作还是挡不住的,所以需要有消息缓冲队列来解决
    在这里插入图片描述

消息队列的作用/应用场景

  • 应用解耦
    • 多个应用可通过消息队列对消息进行处理,应用之间相互独立,互不影响;
    • 如下图的例子,图片上传完立马可以给用户响应上传成功,然后再由人脸识别系统进行图片识别,返回识别结果,也可以让用户体验更好
    • 再比如发送短信验证码,一点击发送,立马响应"验证码已发送",但实际上可以将发送请求放到消息队列,再调用运营商接口发送短信,内容放到redis一份做验证/次数限制等,也可以让用户体验很好
      在这里插入图片描述

异步处理:

  • 相比于串行和并行处理,异步处理可以减少处理的时间
  • 如:
    • 用户注册时,
    • 之前没有使用消息队列那么就是同在这里插入图片描述
      步处理,点击完注册按钮,要发短信/发邮件/发站内欢迎信…一系列操作等待时间很久
    • 现在使用了消息队列,那么就可以异步处理,点击完注册按钮,直接返回成功,然后再异步并行处理同时发短信/发邮件/发站内欢迎信…

流量削峰/数据限流:

  • 流量高峰期,可通过消息队列来控制流量, 避免流量过大而引起应用系统崩溃
  • 消息队列还具有很好的削峰作用,通过异步请求,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务.在电商网站促销,秒杀活动中,合理使用消息队列,可有效抵御促销活动刚开始大量涌入的订单对系统造成的冲击
    在这里插入图片描述

消息通信:

  • 实现点对点消息队列或聊天室等。
    在这里插入图片描述

消息系统/消息队列的模式分类

  • 点对点:一对一
  • 发布订阅
    在这里插入图片描述

常见的消息系统有哪些

  • 注意:
    • RocketMQ是阿里开源的一款消息中间件, 底层参考Kafka做了一些改进
    • 但是Kafka要比RocketMQ更加成熟,所以大数据领域用的最多的还是Kafka
      在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46893497/article/details/114177318