大家好,又是没更新的一周。
周末早早爬起来写了一点字,然后发出来,文章很短。
本次是回答知识星球的一个问题。问题如下:
前两个问题都很好回答,没什么难度。重点是后面两个问题。
「如果碰到Binlog丢失,有修复机制吗?」 「如果出现问题,如何解决?」
在面试界有一类经典的问题就是「如果」类问题,例如我们上面的那两个问题。
这个也是我在给很多同学做模拟面试时候提的问题。
首先,「如果」类问题已经预设了这个问题已经发生。
所以一方面,你可以从原理上说一下Flink CDC抽取Binlog的原理,他是怎么保证不会丢失的,例如binlog position记录、CP机制等等。
这部分原理性的内容是一定要准备的,既然你提到了你在项目中使用了Flink CDC,那么原理性的知识必须要会,只到使用的程度不够。
另外一方面,既然面试官预设了问题一定发生且已经发生。那么需要你给出一套方案去修复它。这个问题就比较考验水平了。
简单的说,你可以说从重置消费位点等、增加Binlog日志的存储时间、重新进行全量扫描等方面回答。但是这个答案面试官可能并不会满意。
那么更近一步你可以从离线在线数据对账、构建离线回补链路方面入手,不影响下游的正常使用的情况下寻找根因。
其实针对这类问题,面试官主要在考察两方面内容:
首先,考察你对原理的认知。你对某个知识点的原理是否足够了解,自己是否除了简单使用主动去了解过他的原理,甚至翻一翻源代码;
其次,考察你的知识储备。你可能没有这样的知识储备,那么需要在平时多关注社区的分享,然后把它记录下来,甚至可以自己在实际工作中动手去实践。这是一个积累的过程,没有办法短时间补足。
所以你看,答案根本就都在日常的积累中,其实它并没有什么难度,你只需要稍微留意一下,答好这类问题并不难。