打造一套真正能落地的 AI 软件解决方案

想象一下,如果程序员维护服务A和服务B时,服务A每秒产生200条消息,而服务B的处理能力仅为每秒100条消息。这种供需不平衡导致服务B面临过载的风险,有没有办法让 B 在不被压垮的同时,还能处理掉 A 的消息?
这就不得不提到消息队列Kafka!它可以作为中间层,以实现服务A与服务B之间的解耦和流量控制,起到缓冲的作用。
kafka是什么
Kafka 就像一个大型的邮局,它负责接收、存储和转发消息。
Kafka是一个分布式流处理平台,它提供了一个高吞吐量、可扩展和容错的消息队列系统。它允许应用程序发布和订阅消息流,这些消息流可以被实时处理或存储下来用于后续分析。
它一般被称为“分布式提交日志”或者“分布式流平台”。文件系统或者数据库提交日志用来提供所有事物的持久化记录,通过重建这些日志可以重建系统的状态。同样地,kafka的数据是按照一定顺序持久化保存的,可以按需读取。
Message的作用就像邮局里的信件,每个消息都包含了一些数据,可以是文本、图片、视频等任何形式的信息。
Message消息是Kafka中数据的基本单位。每个消息包含一个键(可选)、一个值(必须)和时间戳。消息被生产者发送到Kafka集群,并由消费者读取。
Producers就可以想象成写信的人,他们把消息(信件)写好,然后投递到邮局(Kafka)。
Producers生产者是Kafka生态系统中的一个组件,负责创建消息并发送到Kafka集群。生产者将消息发布到特定的主题中,这些消息随后会被Kafka集群存储和转发。
Consumers可以理解为收信人,他们去邮局(Kafka)取信,然后阅读信件(消息)。
Consumers消费者是Kafka生态系统中的另一个组件,负责从Kafka集群中读取消息。消费者订阅一个或多个主题,并处理从这些主题接收到的消息。

如果把 Kafka 比作邮局,那么 Broker 就像是邮局里的一个工作人员,负责处理邮件的收发。
Broker是Kafka集群中的一个节点,它负责维护主题和消息。Broker接收来自生产者的消息,并将其存储在磁盘上,同时确保这些消息可以被消费者以高吞吐量的方式读取。
Kafka 可以创建消息的多个副本Replicas,这就像你写信时,可能会抄送一份副本给其他人,以防原信件丢失。
Replicas副本是Kafka中用于确保数据可靠性和高可用性的机制。每个消息在Kafka中可以有多个副本,这些副本分布在不同的Broker上。副本分为领导者副本和追随者副本,其中领导者副本负责处理所有的读写请求,而追随者副本则复制领导者的数据以提供冗余。
kafka特性
分布式系统
Kafka是一个分布式系统,可以部署在多个节点上,实现负载均衡和容错性。
发布/订阅模式
Kafka采用发布/订阅模式,允许消息的生产者和消费者解耦,提高了系统的可扩展性和灵活性。
高吞吐量
Kafka具有非常高的吞吐量,可以处理大量的数据流,满足实时数据处理的需求。
持久性
Kafka将消息持久化到磁盘上,保证了数据的可靠性和稳定性。
流式处理
Kafka可以作为流式处理平台,支持实时数据流的处理和分析。
kafka的应用
让我们用一个更简单、直观的例子来说明Kafka的应用:
想象一下,你拥有一个在线购物网站,当顾客下单时,你需要快速更新库存数量,并通知仓库准备发货,可以选择使用Kafka来简化这个过程。
-当顾客在你的网站上完成购物并下单时,系统会创建一个订单。系统自动将这个订单的详细信息(如顾客信息、购买的商品和数量)转换成一条消息,并发送到Kafka。
-Kafka会确保这个消息被发送到需要处理订单的系统。库存管理系统订阅了Kafka中的订单消息,一旦收到新订单,它就会自动减少相应商品的库存数量。仓库管理系统也订阅了订单消息,当它收到消息时,就会知道有新的订单需要处理,并开始准备发货。
通过Kafka,系统可以将订单信息快速传递给需要它的各个部分,而不需要它们之间直接通信,这样就简化了整个流程。
因此,以下几种情况会用到Kafka:
日志收集与聚合:Kafka 可以作为中心化的日志收集和聚合平台,收集来自各个应用程序的日志并将其发送到中央存储和处理系统。
消息队列:Kafka 可以用作消息队列,用于异步通信,解耦生产者和消费者,以及处理大量消息。
事件流处理:Kafka 可以用于处理事件流数据,例如实时监控、实时分析和实时决策。
流式处理:Kafka 可以与流处理框架(如Apache Flink、Apache Spark)结合使用,支持实时流处理应用程序。
根据我司业务情况来看,Kafka的应用可将吞吐量提高至50-100倍,为系统带来了显著的性能提升和扩展能力。
kafka的价格
目前,国内主流云平台最低配置的价格大约在一年1~3万人民币不等,价格不是固定的,不同情况下价格存在较大差异。
不同地域或不同版本的Kafka可能会有不同的定价,以及峰值带宽的高低和磁盘容量的大小,都会直接影响最终价格,因此可根据需求选择。
文章内容与图片来源于网络资讯整合
仅供分享学习,侵删