Kafka使用经验小结

本文尽量从一个使用者的角度去记录一些在实战当中使用Kfaka所需要关注的要点,这样可能会贴切更多的读者,本文并不会介绍太多的Kafka的一些架构层次设计的知识,因为网上已经有一大堆的重复搬运的资料任由你们学习参考。

明确Kafka在你的系统中的定位

众所周知,Kafka的可用性和数据可靠性相对其他的高可用的MQ来说会一点,但是带来的却是更大更高性能的消息吞吐量的优势,因此要是你的系统需要的是金融级别的高可靠高可用就尽量选择其他的MQ产品。

Kafka比较适合那种容忍即使丢失一定量数据也不会带来较大影响的业务,比如数据采集监控系统

关注Topic和Partions的关系

Topic决定了你的系统的消息数据的丰富度,Partions决定了你每个Topic的消费速度(并发消费)能力,通常不同的数据需要通过不同的Topic进行隔离,不同Topic的数据体量也会存在差异较大的情况,可以视情况而分配对应的Partitions数目

关注Kafka实例的各项指标监控

1、各个Partitions的消费进度

Consumer的消费进度决定了你的整个系统的时延程度,因此要监控消费不及时的异常情况,及时排查是不是消费进程出问题还是Kafka实例问题

2、整个Kafka实例的磁盘占据空间

需要设置数据的超时时间,不然长期堆积数据不消费会沾满磁盘空间,导致新增数据无法写入

开发编程纪要

生产端

1、尽可能用高并发的方式去写,这样会增加写入性能
2、可以通过 key,value的方式去写入,但是不能将他当作kv数据库消费,通常来说我们可以对key进行一些协议的设计,让他具备更多的业务属性。

消费端

1、要选择一个靠谱的Kafka开源客户端(不过发展到今天基本开源的都挺靠谱),项目使用什么语言就选择对应语言的客户端就是了
2、Consumer必须和Kafka建立起一个稳定的TCP长连接,因为频繁创建销毁Consumer连接实例会对整个Kafka的稳定性造成较大冲击,因为消费涉及到负载均衡,以及复杂的路由设置等,非常影响性能
3、Comsumer不能无限创建多个并发worker实例,比如某个Topic-A被你分配了3个Partitions,那就只能创建三个拉去的worker任务,再多的话是无法进行消费的
4、消费的worker账号最好都统一用一个id进行管理,不然容易造成消费的offset不可控

原文地址:https://www.cnblogs.com/jusonalien/p/10640040.html

时间: 2024-10-23 10:39:14

Kafka使用经验小结的相关文章

mybatis 使用经验小结

一.多数据源问题 主要思路是把dataSource.sqlSesstionFactory.MapperScannerConfigurer在配置中区分开,各Mapper对应的包名.类名区分开 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="h

Struts2 interceptor使用经验小结

1. interceptor 调用Spring容器中的bean 在interceptor中常有需要调用Spring Bean的需要,其实很简单和Struts2的Action一样配置即可. Spring中的配置 <!--spring配置 -->1 <bean id="authorityInterceptor" class="com.xxx.interceptor.AuthorityInterceptor"/> 2 3 <bean id=&

从源码分析如何优雅的使用 Kafka 生产者

前言 在大量消息的情况下 Kakfa 是如何保证消息的高效及一致性呢? 正好以这个问题结合 Kakfa 的源码讨论下如何正确.高效的发送消息. 内容较多,对源码感兴趣的朋友请系好安全带??(源码基于 v0.10.0.0 版本分析).同时最好是有一定的 Kafka 使用经验,知晓基本的用法. 简单的消息发送 在分析之前先看一个简单的消息发送是怎么样的.(以下代码基于 SpringBoot 构建.) 首先创建一个 org.apache.kafka.clients.producer.Producer

用VisualSVN做项目版本控制

一.SVN服务端 1.VisualSVN Server下载: http://download.csdn.net/detail/jiminull/4448874 或 http://www.visualsvn.com/server/download/ VisualSVN Server是免费的 2.VisualSVN Server安装: 下载完VisualSVN Server后,只要双击VisualSVN Server安装文件,按步骤点击下一步安装即可,VisualSVN Server捆绑安装了Apa

Delphi中的TChart使用用法

1.TChart Hello world 放一个控件到窗体上,然后写代码加入一个折线数据序列: var Series: TLineSeries; begin Series := TLineSeries.Create(Chart1); Series.Add(100, '头部', clRed); Series.Add(200, '颈部', clGreen); Chart1.AddSeries(Series); end; 这样就会生成一个简单的折线图表,要生成其它类型的数据图表,可以添加不同的数据序列

浅谈消息队列及常见的消息中间件

消息队列 已经逐渐成为企业应用系统 内部通信 的核心手段.它具有 低耦合.可靠投递.广播.流量控制.最终一致性 等一系列功能. 当前使用较多的 消息队列 有 RabbitMQ.RocketMQ.ActiveMQ.Kafka.ZeroMQ.MetaMQ 等,而部分 数据库 如 Redis.MySQL 以及 phxsql 也可实现消息队列的功能. 正文 1. 消息队列概述 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流,并基于 数据通信 来进行分布式系统的集成. 通过提供

技术调研参考——业界开源实时流处理系统小结

这里对目前业界开源的一些实时流处理系统做一次小结,作为日后进行技术调研的参考资料. S4 S4(Simple Scalable Streaming System)是Yahoo最新发布的一个开源流计算平台,它是一个通用的.分布式的.可扩展性良好.具有分区容错能力.支持插件的分布式流计算平台,在该平台上程序员可以很方便地开发面向无界不间断流数据处理的应用,开发语言为Java. 项目链接:http://incubator.apache.org/s4/(注:S4 0.5.0已支持TCP链接及状态恢复等特

Kafka SocketServer源代码分析

Kafka SocketServer源代码分析 标签: kafka 本文将详细分析Kafka SocketServer的相关源码. 总体设计 Kafka SocketServer是基于Java NIO来开发的,采用了Reactor的模式,其中包含了1个Acceptor负责接受客户端请求,N个Processor负责读写数据,M个Handler来处理业务逻辑.在Acceptor和Processor,Processor和Handler之间都有队列来缓冲请求. kafka.network.Accepto

Kafka学习笔记

Apache Kafka 一.消息队列分类 1.1 点对点 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并消费消息 注意:   1.消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息   2.Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费 1.2 发布/订阅 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息.和点对点方式不同,发布到topic的消息会被所有订阅者消费 二.消息队