ARTS 打卡第三周:什么是 Kafka
Kafka 是开源的消息引擎系统。根据维基百科的定义,消息引擎系统是一组规范。企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递。
需要明确的是传输消息的格式和传输协议。
Kafka 的消息格式采用的是纯二进制的字节序列,消息内容还是结构化的,只是在使用之前转换成二进制的字节序列。其他协议还有 json、protocol buffer、thrift 等。
传输协议是如何把消息传输出去的方法,常见有两种方法:
点对点模型:也叫消息队列模型。即 A 点对点发送给 B 系统。
发布/订阅模型:有一个主题概念,发布者将消息发布到主题里(Topic),订阅者可以订阅这个主题,这样可以实现一个消息给多给订阅者。
Kafka 同时支持这两种消息引擎模型。
消息引擎的设计目标是为了削峰填谷。目的是避免上游系统海量流量把下游系统压垮了,通过消息引擎系统来缓冲。
当引入了 Kafka 之后。上游订单服务不再直接与下游子服务进行交互。当新订单生成后它仅仅是向 Kafka Broker 发送一条订单消息即可。类似地,下游的各个子服务订阅 Kafka 中的对应主题,并实时从该主题的各自分区(Partition)中获取到订单消息进行处理,从而实现了上游订单服务与下游订单处理服务的解耦。这样当出现秒杀业务时,Kafka 能够将瞬时增加的订单流量全部以消息形式保存在对应的主题中,既不影响上游服务的 TPS,同时也给下游子服务留出了充足的时间去消费它们。这就是 Kafka 这类消息引擎系统的最大意义所在。
评论