程序员基础解答:什么是Kafka?( 二 )


程序员基础解答:什么是Kafka?

文章插图
 
 
Kafka是多语种来自客户端和服务器的Kafka通信使用经过版本控制和记录的TCP有线协议 。Kafka承诺与较旧的客户端保持向后兼容性,并且支持多种语言 。有C#,JAVA,C,Python,Ruby和许多其他语言的客户端 。Kafka生态系统还提供REST代理,允许通过HTTP和JSON轻松集成,这使得集成更加容易 。
Kafka还通过Confluent Schema Registry for Kafka支持Avro模式 。Avro和Schema Registry允许客户端以多种编程语言生成和读取复杂的记录,并允许记录的演变 。因此它是真正的多语种 。
Kafka很有用Kafka允许构建实时流数据管道 。Kafka支持内存中的微服务(即actor,Akka,Baratine.io,QBit,reactor,reactive,Vert.x,RxJava和Spring Reactor) 。Kafka允许构建对流做出反应的实时流应用程序,以进行实时数据分析,转换,反应,聚合,加入实时数据流,以及执行 CEP(复杂事件处理) 。
  • 我们可以使用Kafka来帮助收集指标/ KPI,汇总来自许多来源的统计信息以及实施事件源 。
  • 可以将其与微服务(内存中)和参与者系统一起使用以实现内存服务(分布式系统的外部提交日志) 。
  • 可以使用Kafka在节点之间复制数据,为节点重新同步以及恢复状态 。尽管Kafka主要用于实时数据分析和流处理,但也可以将其用于日志聚合,消息传递,点击流跟踪,审计跟踪等 。
在数据科学和分析非常重要的世界中,捕获数据以馈入数据湖和实时分析系统也 很重要 。而且由于Kafka可以承受这些特别复杂的用例,因此Kafka至关重要 。
Kafka是可伸缩的消息存储Kafka是一个很好的记录/消息存储系统 。Kafka就像高速文件系统一样,用于提交日志的存储和复制 。这些特性使Kafka可用于各种应用程序 。
写入Kafka主题的记录将保存到磁盘,并复制到其他服务器以实现容错 。由于现代驱动器速度快且体积很大,因此非常适合并且非常有用 。Kafka生产者可以等待确认,因此消息是持久的,因为在消息复制之前生产者的操作不会完成 。Kafka磁盘结构可伸缩 。当批量写入大量流时,现代磁盘驱动器具有很高的吞吐量 。
同样,Kafka的客户和消费者可以控制读取位置(偏移量),这允许使用案例,例如,如果存在严重错误(例如,修复错误和重新播放),则重播日志 。
Kafka的保留纪录Kafka集群保留所有已发布的记录 。如果未设置限制,它将保留记录,直到磁盘空间用完为止 。您可以设置基于时间的限制(可配置的保留期限),基于大小的限制(可根据大小配置)或压缩(使用键保留最新的记录版本) 。例如,您可以将保留策略设置为三天或两周或一个月 。可以使用主题日志中的记录,直到按时间,大小或压缩将其丢弃 。消耗速度不受大小影响,因为Kafka始终写入主题日志的末尾 。

【程序员基础解答:什么是Kafka?】


推荐阅读