本文尽量从一个使用者的角度去记录一些在实战当中使用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使用经验小结的更多相关文章

  1. 【心得】Lattice后端使用经验小结(ECP5UM,DDR3,Diamond3.10,Reveal逻辑分析)

    [博客导航] [导航]FPGA相关 背景 下边的内容,适合初次使用Lattice的.具备FPGA开发经验的同学. 1.初次使用,还真遇到不少的坑,Lattice的工具也有不少优缺点,通过总结,希望能缩 ...

  2. Git使用经验小结

    2012春,开始正式使用SVN,2014年9月加入一起好后,开始使用Git.  有了一些使用经验,也看了下网上关于"Git全胜SVN"的言论. 结合自己的实际情况,简要写几句: 1 ...

  3. mybatis 使用经验小结

    一.多数据源问题 主要思路是把dataSource.sqlSesstionFactory.MapperScannerConfigurer在配置中区分开,各Mapper对应的包名.类名区分开 <? ...

  4. jmeter linux使用经验小结

    1. 确认务必安装了JDK,并且把路径配置OK.否则执行会报错. 2. 当做负载机时,在hosts 配置上    你的ip   你的hostname  或者使用./bin/jmeter-server ...

  5. Struts2 interceptor使用经验小结

    1. interceptor 调用Spring容器中的bean 在interceptor中常有需要调用Spring Bean的需要,其实很简单和Struts2的Action一样配置即可. Spring ...

  6. DEV_TreeList使用经验小结

    1. 点击叶子节点是希望Open键显示,点击非叶子节点时希望隐藏.实践中发现点击到了非叶子节点图标,Open没有隐藏,如何解决? 增加一个判断: if (_hitInfo.HitInfoType != ...

  7. 性能测试工具Loadrunner使用经验小结(原创更新版)

    1. 引言 1.1. 简介 loadrunner是一种预测系统行为和性能的负载测试工具,它可以轻松创建虚拟用户.创建真实的负载.定位性能问题.重复测试保证系统的高性能 globa-100的注册码:AE ...

  8. mybatis 使用经验小结 good

    一.多数据源问题 主要思路是把dataSource.sqlSesstionFactory(用来产生sqlSession).MapperScannerConfigurer在配置中区分开,各Mapper对 ...

  9. Kafka 与 RabbitMQ 如何选择使用哪个?

    目录 前言 如何选择? 开发语言 延迟队列 消息顺序性 优先级队列 消息留存 消息过滤 可伸缩行 小结 推荐阅读 前言 我们在工作中经常会用到异步消息,主要使用两种消息模式: 消息队列 发布/订阅 消 ...

随机推荐

  1. C# 判断上传图片是否被PS修改过的方法

    今天在网上发现一个判断图片是否被Photoshop修改过的方法.发现还不错,呵呵.摘录下来. 讲下基本的原理:其实每张被photoshop修改过的图片都会有Adobe Photoshop这样的字样在图 ...

  2. Day 3 网络基础

    网络基础 一.什么是互联网协议及为何要有互联网协议 ? 互联网协议:指的就是一系列统一的标准,这些标准称之为互联网协议.互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Proto ...

  3. GridView动态添加View

    activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  4. OSI模型详解

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

  5. 关于FileZilla Server的安装问题

    网上很多FileZilla Server教程到最后一步在本机上测试访问成功就没了,实际上还是不完整的,一般情况下外网还是访问不了,外网访问同样很重要. 可能有点童鞋会说安装的时候防火墙提示的时候我也点 ...

  6. Object源码

    1.Object是所有类的父类,默认会继承Object. 2.Object类中常用的方法有:getClass().hashCode().equals().clone().toString().fina ...

  7. 【Java TCP/IP Socket】深入剖析socket——TCP通信中由于底层队列填满而造成的死锁问题(含代码)

    基础准备 首先需要明白数据传输的底层实现机制,在http://blog.csdn.net/ns_code/article/details/15813809这篇博客中有详细的介绍,在上面的博客中,我们提 ...

  8. elasticsearch学习网站

    elasticsearch学习网站 https://elasticsearch.cn/

  9. COCOS学习笔记--重力感应Acceleration

    Cocos2dx重力感应Acceleration,准确来说叫加速度计,加速度计能够感应设备上X.Y.Z轴方向上线性加速度的变化.事实上叫"重力感应"或"重力加速度计&qu ...

  10. CCPhysicsSprite

    #ifndef __PHYSICSNODES_CCPHYSICSSPRITE_H__ #define __PHYSICSNODES_CCPHYSICSSPRITE_H__ #include " ...