程序员必学的中间件,消息队列的应用场景与简介

在互联网中,我们常常讲究着唯快不破,相信不少人都有这样的经历,明明一个非常简单的需求,但却要修改非常多的系统,导致开发效率低下,从而不停的加班 。一个好的程序员,一定要学会设计出好的架构,写出优雅的代码,而好的架构,往往是各个系统低耦合的,消息队列,正是解耦的一个神器 。
消息队列背景我们举一个简单的例子,在我们的系统设计之初,所有的系统都是非常的简单,我们以电商系统为例,一开始我们可能只需要非常简单的一个web页面,然后调用成单系统,紧接着扣减库存,最后存到db即可 。
 

程序员必学的中间件,消息队列的应用场景与简介

文章插图
 
 
到后面,随着业务的发展,系统变得越来复杂,可能我们每次交易,还要通知搜索系统,推荐系统,广告结算系统,商家后台等等等,我们的系统就会变得非常复杂 。
 
程序员必学的中间件,消息队列的应用场景与简介

文章插图
 
 
本来一次非常交易操作,我们却要通知非常多个调用方,一旦任何一方调用失败,我们是否需要去重试?同时,有些操作非常的重,需要消耗大量的时间,本来用户都要下单给钱了,因为调用多个系统导致耗时过长用户下单失败,就非常容易造成客户的流失 。
【程序员必学的中间件,消息队列的应用场景与简介】为了解决这个问题,我们引入了消息队列,让消息队列去通知其他系统,而下单仍然是下单操作 。
 
程序员必学的中间件,消息队列的应用场景与简介

文章插图
 
 
交易系统只要在原来的基础上,把对应的信息写到消息队列里面,再有消息队列去干剩下的事情 。这样,我们就能保持原有的交易流程上的简洁 。而我们今天的主角Kafka正是常用的消息队列!
Kafka的作用
  • Kafka最被大家熟知的运用场景,便是消息队列,也称消息中间件,消息中间件的主要优点有解耦、削峰、异步扩展性等等,并且Kafka还能保证消息是顺序消费 。
  • 存储系统,因为Kafka会将数据写到磁盘,所以不用担心数据断电丢失,有时候,我们也将Kafka作为存储系统来使用 。同时,Kafka天生的持久化与多机副本机制,让数据存储更加可靠与可用 。
  • 流式处理平台,Kafka提供非常多的api,并且式非常可靠的数据来源,可以结合spark等开源框架进行流式计算 。
Kafka的体系架构Kafka的体系架构也比较简单,一个典型的卡夫卡体系包括若干消息的生产者,若干消息的消费者,若干个Broker以及一个Zookeeper集群,如下图所示,其中,zk集群主要用来进行集群元数据的管理以及控制器的选举等操作 。
 
程序员必学的中间件,消息队列的应用场景与简介

文章插图
 
 
总结今天我们对Kafka的初识就到这里,作为一个最流行的消息队列框架之一,Kafka有非常多值得学习的架构知识,欢迎大家关注我,共同学习,共同进步 。大家的支持是我继续唠嗑的动力 。同名公众号(沙茶敏碎碎念)




    推荐阅读