浅谈Kafka

2018-06-14
  • 1615
  • 0

随着互联网行业快速发展,微服务,分布式占据了现在互联网行业的主流市场,因为可以解决大数据并发,业务分离,提高程序性能,利于系统优化和代码规划。随着业务的不断扩展,我们会遇到很常见的一些场景,比如第三方系统的对接,比如内部微服务系统之间的对接,这就用到了远程通信技术。

远程通信技术常用的有RPCRMI、ESB、SOAP、EJBWebServiceJMS等。

在现今互联网行业中,由于JMS使得开发包括网络分布式多程序应用程序更加便捷容易。在互联网大数据的时代,JMS的应用已经越来越广。JMS可以为通信程序之间传输数据,跨语言跨平台也是JMS的一大优点。

JMS(Java Message Service是用于提供消息服务的规范,制定了消息提供过程数据的结构和交互。而MQ(Message Queue)是消息队列服务,面向消息中间件MOM(Message Oriented Middleware)的实现,也是服务提供者。而Kafka则为MQ中比较常用的一种JMS系统。它支持分区(Partition),多副本(Replica)同时基于Zookeeper协调的高吞吐量分布式发布订阅消息系统,也是一个开源流处理平台。

Kafka架构核心和其他MQ大体相似,主要包括:话题(topic)、生产者(producer)、代理(broker)、消费者(consumer)。

Kafka同时具有以下几点特性:

1) 高吞吐量:Kafka每秒可以处理几十万消息。

2) 低延迟:Kafka的延迟最低只有几毫秒。

3) 分区,多副本:每个topic可以分为多个分区,设置多个group来对分区进行消费。

4) 可扩展性:Kafka集群支持热扩展。

5) 持久性:消息被持久化到本地磁盘。

6) 安全性:支持数据备份防止数据丢失。

7) 容错性:允许集群中节点失败,一般允许(副本量-1)个节点失败。

8) 高并发:支持千个客户端同时读写。

Kafka的特性决定了在JMS中一个重要的地位,相比于ActiveMQRabbitMQ,Kafka高吞吐量占了绝大的优势,同时Kafka支持动态扩容。在现今的互联网大数据时代,消息的处理速度越快,对系统性能支持的就更好,同时对用户体验也会造成好的影响,大数据时代,比拼的依旧是速度,安全,高效,性能。Kafka每秒几十万消息的处理速度占据当前MQ消息队列中几乎霸主的地位,同时MQACK机制也可以确保数据可以进行重新处理等措施,也同样起到了安全的作用。

现今的时代,Kafka的应用越来越广泛,不同的Group可以从最初偏移量(Offset)进行重新读取消息再处理,也是独有的一大特点。