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不可控
Kafka使用经验小结的更多相关文章
- 【心得】Lattice后端使用经验小结(ECP5UM,DDR3,Diamond3.10,Reveal逻辑分析)
[博客导航] [导航]FPGA相关 背景 下边的内容,适合初次使用Lattice的.具备FPGA开发经验的同学. 1.初次使用,还真遇到不少的坑,Lattice的工具也有不少优缺点,通过总结,希望能缩 ...
- Git使用经验小结
2012春,开始正式使用SVN,2014年9月加入一起好后,开始使用Git. 有了一些使用经验,也看了下网上关于"Git全胜SVN"的言论. 结合自己的实际情况,简要写几句: 1 ...
- mybatis 使用经验小结
一.多数据源问题 主要思路是把dataSource.sqlSesstionFactory.MapperScannerConfigurer在配置中区分开,各Mapper对应的包名.类名区分开 <? ...
- jmeter linux使用经验小结
1. 确认务必安装了JDK,并且把路径配置OK.否则执行会报错. 2. 当做负载机时,在hosts 配置上 你的ip 你的hostname 或者使用./bin/jmeter-server ...
- Struts2 interceptor使用经验小结
1. interceptor 调用Spring容器中的bean 在interceptor中常有需要调用Spring Bean的需要,其实很简单和Struts2的Action一样配置即可. Spring ...
- DEV_TreeList使用经验小结
1. 点击叶子节点是希望Open键显示,点击非叶子节点时希望隐藏.实践中发现点击到了非叶子节点图标,Open没有隐藏,如何解决? 增加一个判断: if (_hitInfo.HitInfoType != ...
- 性能测试工具Loadrunner使用经验小结(原创更新版)
1. 引言 1.1. 简介 loadrunner是一种预测系统行为和性能的负载测试工具,它可以轻松创建虚拟用户.创建真实的负载.定位性能问题.重复测试保证系统的高性能 globa-100的注册码:AE ...
- mybatis 使用经验小结 good
一.多数据源问题 主要思路是把dataSource.sqlSesstionFactory(用来产生sqlSession).MapperScannerConfigurer在配置中区分开,各Mapper对 ...
- Kafka 与 RabbitMQ 如何选择使用哪个?
目录 前言 如何选择? 开发语言 延迟队列 消息顺序性 优先级队列 消息留存 消息过滤 可伸缩行 小结 推荐阅读 前言 我们在工作中经常会用到异步消息,主要使用两种消息模式: 消息队列 发布/订阅 消 ...
随机推荐
- Python入门--13--爬虫一
URL的格式一般为(带方括号的是可选的): protocol://hostname[:port]/path/[;parameters][?query]#fragment URL由三部分组成: 第一部分 ...
- hdu3078 建层次树+在线LCA算法+排序
题意:n个点,n-1条边构成无向树,每个节点有权,Q次询问,每次或问从a->b的最短路中,权第k大的值,/或者更新节点a的权, 思路:在线LCA,先dfs生成树0,标记出层数和fa[](每个节点 ...
- Codeforces 665D Simple Subset【构造】
题目链接: http://codeforces.com/problemset/problem/665/D 题意: 给定序列,从中找出最大的子集,使得子集中的数两两相加均为质数. 分析: 貌似有用最大团 ...
- Codeforces 757 F Team Rocket Rises Again
Discription It's the turn of the year, so Bash wants to send presents to his friends. There are n ci ...
- 如何细粒度地控制你的MyBatis二级缓存(mybatis-enhanced-cache插件实现)
前几天网友chanfish 给我抛出了一个问题,笼统地讲就是如何能细粒度地控制MyBatis的二级缓存问题,酝酿了几天,觉得可以写个插件来实现这个这一功能.本文就是从问题入手,一步步分析现存的MyBa ...
- 【paddle学习】识别数字
Softmax回归(Softmax Regression) 最简单的Softmax回归模型是先将输入层经过一个全连接层得到的特征,然后直接通过softmax 函数进行多分类 输入层的数据$X$传到输出 ...
- 【转】 nginx rewrite 伪静态配置参数详细说明
nginx rewrite 伪静态配置参数和使用例子 附正则使用说明 正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分 ...
- 30 分钟编写一个 Flask 应用
Flask 是一种很赞的Python web框架.它极小,简单,最棒的是它很容易学. 今天我来带你搭建你的第一个Flask web应用!和官方教程 一样,你将搭建你自己的微博客系统:Flaskr.和官 ...
- 机房收费系统(VB.NET)个人版总结
重构版个人机房收费系统大概从暑假开学開始进行.花了不到一个半月的时间才完毕.以下对我在重构过程中的一写理解. 1.系统设计一个非常重要的目的就是重用.而要做到重用,低耦合是最有效的手段回想一下我们C/ ...
- java开始到熟悉66-69
本次内容:DateFormat类 1.DateFormat类 package array; /** * 时间和字符串之间的转化 */ import java.text.DateFormat; impo ...