Kafka

kafka实现无消息丢失与精确一次语义(exactly once)处理

北城余情 提交于 2020-11-17 07:21:54
在很多的流处理框架的介绍中,都会说kafka是一个可靠的数据源,并且推荐使用Kafka当作数据源来进行使用。这是因为与其他消息引擎系统相比,kafka提供了可靠的数据保存及备份机制。并且通过消费者位移这一概念,可以让消费者在因某些原因宕机而重启后,可以轻易得回到宕机前的位置。 但其实kafka的可靠性也只能说是相对的,在整条数据链条中,总有可以让数据出现丢失的情况,今天就来讨论如何避免kafka数据丢失,以及实现精确一致处理的语义。 kafka无消息丢失处理 在讨论如何实现kafka无消息丢失的时候,首先要先清楚大部分情况下消息丢失是在什么情况下发生的。为什么是大部分,因为总有一些非常特殊的情况会被人忽略,而我们只需要关注普遍的情况就足够了。接下来我们来讨论如何较为普遍的数据丢失情况。 1.1 生产者丢失 前面介绍Kafka分区和副本的时候,有提到过一个producer客户端有一个acks的配置,这个配置为0的时候,producer是发送之后不管的,这个时候就很有可能因为网络等原因造成数据丢失,所以应该尽量避免。但是将ack设置为1就没问题了吗,那也不一定,因为有可能在leader副本接收到数据,但还没同步给其他副本的时候就挂掉了,这时候数据也是丢失了。并且这种时候是客户端以为消息发送成功,但kafka丢失了数据。 要达到最严格的无消息丢失配置,应该是要将acks的参数设置为-1

程序员如何提升自己的格局?

旧城冷巷雨未停 提交于 2020-11-17 04:23:06
程序员如何提升自己的格局? IT行业是一个公平公正的行业,任何人只要有实力、肯努力,就能达到一个不错的未来。 IT行业也是一个危机四伏的行业,这个行业竞争激烈,稍有松懈就会被时代所淘汰。 身为一个程序员,如果能够在这个行业站稳脚步,越行越远呢? 有许许多多的因素,但最重要的是我们的格局。 如何提升我们的格局呢?可以从如下几个方面切入。 1.以更高的维度审视技术 有许多程序员,尤其是初级程序员,仅仅满足于完成公司分配给自己的工作。他们偶尔使用到一些开源组件和框架,也仅仅是停留在使用层面。 比如Apache Kafka,初级程序员们或许只知道它是一个消息中间件,却完全不了解Apache Kafka的优势劣势在哪里,底层原理是什么样子,架构是如何设计和演变,未来的发展方向是什么。 2.学习大厂的宝贵经验 许多程序员身处传统IT企业,或是小型初创公司。他们所做的业务仅仅是功能上的实现,完全不会遇到诸如“双十一”、“六一八”那样的大数据量,高并发量挑战。 正是诸如此类的挑战性问题,才能促使程序员们的经验更丰富,技术更精进。 那么,如果并没有身处大型互联网公司,是不是就没有机会了呢? 当然不是,我们可以通过一些BAT大牛的技术分享,学习到这些大型项目的设计和优化经验。 3.尝试与技术大神交流 什么样的人算是技术大神呢?在这里举个栗子: Georges Saab Saab先生是现任Oracle

工具篇-Flink里边的一些坑

我与影子孤独终老i 提交于 2020-11-16 00:24:13
1. 自定义Sink写入hbase? 使用的是原生的hbase客户端,可以自己控制每多少条记录刷新一次。遇到了几个坑导致数据写不到hbase里边去: 集群hbase版本和客户端版本不一致(版本1和版本2相互之间会有冲突) Jar包冲突 例如protobuf-java版本冲突,常见的是两个关键错误, java.io.IOException: java.lang.reflect. InvocationTargetExceptio n 和 Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase .protobuf.ProtobufUtil 。 2. Flink 消费Kafka偏移量 Flink读写Kafka,如果使用Consumer08的话,偏移量会提交Zk,下边这个配置可以写在Conf文件中,提交偏移量的Zk可以直接指定。Consumer09以后版本就不向Zk提交了,Kafka自己会单独搞一个Topic存储消费状态。 1 xxxx08 { 2 bootstrap.servers = "ip:9092" 3 zookeeper.connect = "ip1:2181,ip2/vio" 4 group.id = "group1" 5 auto.commit

kafka协议抓包分析

只愿长相守 提交于 2020-11-16 00:10:49
抓心跳包: sudo tcpdump tcp -i lo0 -A -x dst port 9092 and greater 90 and less 100 53-56字节0000 0028 四个字节代表数据包长度,这里抓取的是心跳包协议,其长度为40(即0x0028) 57-58字节000c位置的2个字节代表协议类型,这里是12号协议心跳协议。 59-60两字节代表api版本类型,这里代表version 1 来源: oschina 链接: https://my.oschina.net/u/3690589/blog/3051465

这三年被分布式坑惨了,曝光十大坑

丶灬走出姿态 提交于 2020-11-15 19:25:28
点击蓝色“ Java建设者 ”关注我哟 加个“ 星标 ”,及时阅读最新技术文章 本篇主要内容如下: 主要内容 前言 我们都在讨论分布式,特别是面试的时候,不管是招初级软件工程师还是高级,都会要求懂分布式,甚至要求用过。传得沸沸扬扬的分布式到底是什么东东,有什么优势? 借用火影忍术 风遁 · 螺旋手里剑 看过 火影 的同学肯定知道 漩涡鸣人 的招牌忍术: 多重影分身之术 。 这个术有一个特别厉害的地方, 过程和心得 :多个分身的感受和经历都是相通的。比如 A 分身去找卡卡西(鸣人的老师)请教问题,那么其他分身也会知道 A 分身问的什么问题。 漩涡鸣人 有另外一个超级厉害的忍术,需要由几个影分身完成: 风遁·螺旋手里剑。 这个忍术是 靠三个鸣人一起协作完成的。 这两个忍术和分布式有什么关系? 分布在不同地方的系统或服务,是彼此相互关联的。 分布式系统是分工合作的。 案例: 比如 Redis 的 哨兵机制 ,可以知道集群环境下哪台 Redis 节点挂了。 Kafka的 Leader 选举机制 ,如果某个节点挂了,会从 follower 中重新选举一个 leader 出来。(leader 作为写数据的入口,follower 作为读的入口) 那 多重影分身之术 有什么缺点? 会消耗大量的查克拉。分布式系统同样具有这个问题,需要几倍的资源来支持。 对分布式的通俗理解 是一种工作方式

这三年被分布式坑惨了,曝光十大坑

≡放荡痞女 提交于 2020-11-15 08:00:00
这是我的第 60 篇原创文章 作者 | 悟空聊架构 来源 | 悟空聊架构 (ID:PassJava666) 转载请联系授权(微信ID:PassJava) 本篇主要内容如下: 主要内容 前言 我们都在讨论分布式,特别是面试的时候,不管是招初级软件工程师还是高级,都会要求懂分布式,甚至要求用过。传得沸沸扬扬的分布式到底是什么东东,有什么优势? 借用火影忍术 风遁 · 螺旋手里剑 看过 火影 的同学肯定知道 漩涡鸣人 的招牌忍术: 多重影分身之术 。 这个术有一个特别厉害的地方, 过程和心得 :多个分身的感受和经历都是相通的。比如 A 分身去找卡卡西(鸣人的老师)请教问题,那么其他分身也会知道 A 分身问的什么问题。 漩涡鸣人 有另外一个超级厉害的忍术,需要由几个影分身完成: 风遁·螺旋手里剑。 这个忍术是 靠三个鸣人一起协作完成的。 这两个忍术和分布式有什么关系? 分布在不同地方的系统或服务,是彼此相互关联的。 分布式系统是分工合作的。 案例: 比如 Redis 的 哨兵机制 ,可以知道集群环境下哪台 Redis 节点挂了。 Kafka的 Leader 选举机制 ,如果某个节点挂了,会从 follower 中重新选举一个 leader 出来。(leader 作为写数据的入口,follower 作为读的入口) 那 多重影分身之术 有什么缺点? 会消耗大量的查克拉

欢迎加入大数据学习群

一世执手 提交于 2020-11-15 00:16:35
该系列精选文章来自于 「 数据社 」 公众号 ,作者从事过大数据开发,大数据架构,数据分析相关岗位,有着丰富的实战经验。 该系列文章主要包括 大数据平台、数据仓库、数据挖掘 等。 系列文章都是基于实战总结的干货,下面列出文章链接,建议收藏,方便查看。 【大数据平台】 从0到1搭建大数据平台之数据采集系统 从0到1搭建大数据平台之调度系统 从0到1搭建大数据平台之计算存储系统 从0到1搭建自助分析平台 从0到1搭建大数据平台 基于Ambari的大数据平台搭建 基于CDH(Cloudera Distribution Hadoop)的大数据平台搭建 一文入门流处理开发 浅谈数据中台 数据中台设计方法论 收藏|如何做一个好的大数据平台架构 大数据集群迁移的那一夜是怎么过的|回忆录 收藏|Flink比Spark好在哪? 【数据仓库】 数据分析师应该了解的数据仓库(1) 数据分析师应该了解的数据仓库(2) 数据分析师应该了解的数据仓库(3) 数据分析师应该了解的数据湖 一文了解数据湖引擎 数据湖vs数据仓库vs数据集市 一分钟讲解数据仓库元数据 谈谈ETL中的数据质量 你是分析师,还是“提数机”? Hive改表结构的两个坑|避坑指南 【数据挖掘】 数据挖掘从入门到放弃(一):线性回归和逻辑回归 数据挖掘从入门到放弃(二):决策树 数据挖掘从入门到放弃(三):朴素贝叶斯 数据挖掘从入门到放弃(四

你知道Redis可以实现延迟队列吗?

穿精又带淫゛_ 提交于 2020-11-14 17:03:41
点击上方蓝色字体,选择“设为星标” 回复”资源“获取整理的海量电子书 作者:_BKing 来源:www.cnblogs.com/xiaowei123/p/13222710.html 最近,又重新学习了下Redis,深深被Redis的魅力所折服,Redis不仅能快还能慢(我想也这么优秀o(╥﹏╥)o),简直利器呀 咳咳咳,大家不要误会,本文很正经的啦!伙伴们跟我一起冲呀,我们一起去爬爬这座延时队列的山峰,探一探它究竟到底有高。 那接下来开始我们的旅行啦~,我们都知道Redis是一种基于内存的单进程单线程数据库(Redis6.0开始之后支持多线程啦!),处理速度都非常快。那么为何Redis又能慢呢?原来,这里说的慢是指Redis可以设置一些参数达到慢处理的结果。(这就是为什么Redis既能快又能慢啦!) 那接下来开始讲讲我们的Redis在队列中如何实现延时的情况: 在我们日常生活中,我们可以发现: 在淘宝、京东等购物平台上下单,超过一定时间未付款,订单会自动取消。 打车的时候,在规定时间没有车主接单,平台会取消你的单并提醒你暂时没有车主接单。 点外卖的时候,如果商家在10分钟还没接单,就会自动取消订单。 收快递的时候,如果我们没有点确认收货,在一段时间后程序会自动完成订单。 在平台完成订单后,如果我们没有在规定时间评论商品,会自动默认买家不评论。 ....... 这时

大厂高频面试题-连续登录问题

梦想的初衷 提交于 2020-11-14 04:02:13
1 背景 对于数据开发人员来说,手写sql是比较熟悉的了,就有这样一道题,面试时需要手写sql,这就是非常经典的连续登录问题,大厂小厂都爱问,这种题说简单也不简单,说难也不难,关键是要有思路。 2 真题 hql统计连续登陆的三天及以上的用户 这个问题可以扩展到很多相似的问题:连续几个月充值会员、连续天数有商品卖出、连续打车、连续逾期。 数据提供 用户ID、登入日期 user01,2018-02-28 user01,2018-03-01 user01,2018-03-02 user01,2018-03-04 user01,2018-03-05 user01,2018-03-06 user01,2018-03-07 user02,2018-03-01 user02,2018-03-02 user02,2018-03-03 user02,2018-03-06 输出字段 +---------+--------+-------------+-------------+--+ | uid | times | start_date | end_date | +---------+--------+-------------+-------------+--+ 3 群内讨论 这道题在群里发出后,大家就展开了激烈的讨论: 4 解决方案 可以看出来,有很多种不同的解决方案。

每天两小时轻松掌握java、spring、Redis、JVM、分布式、高并发

早过忘川 提交于 2020-11-13 13:14:34
干货视频,高级架构师最新java、spring、Redis、JVM、分布式、高并发。要的留下私信我,一小时之内回复。里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点高级进阶干货的免费直播讲解。 需要资料直接关注下方公众号即可免费领取。 精选JAVA 高并发分布式架构课程视频 。 高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx 互联网架构专题课程【马士兵教育】---Java架构师学这个就够了 若干架构资料文档 面试系列视频发放 如果需要获取到这个里面的文档的话帮忙转发一下然后再关注下方公众号得到获取方式吧! 来源: oschina 链接: https://my.oschina.net/u/4310950/blog/4715598