第十二周

Algorithm

并查集: java实现并查集,一种特殊的树,子节点指向父节点。rank优化、路径优化。

github地址

Review

一、《为什么要学习 Apache Flink?》

应用场景:

  • flink-kafka ETL 数据清洗。(构建实时数仓,实时索引build)
  • 数据分析 (报表、大屏)
  • 数据触发(触发器,告警)

链接

二、《有状态流式处理引擎基石》

  • 状态容错

    • Flink如何保证精确一次如何保证?分布式快照 流程中安插checkpoint barrier,其中记录source的position和流过的各个operator中的state。
  • 状态维护

    • JVM Heap状态后端 (on memery)
    • RocksDB状态后端(on disk)
  • Event-time处理

    • 如何判定在某一个时间点数据都到齐了
  • 状态的保存与迁移

链接

三、《DataStream API》

操作概览.png
image.png
image.png

链接

Tips/Technology

一、JVM知识体系复习

参考资料:https://github.com/CyC2018/CS-Notes/blob/master/notes/Java%20%E8%99%9A%E6%8B%9F%E6%9C%BA.md

二、Flink教程(更新中)

本系列课程由 Apache Flink Community China 官方出品。旨在为具备一定大数据基础、对Apache Flink感兴趣的同学提供系统性的入门教程,课程路径为“基础篇>>进阶篇>>运维篇>>实战篇>>源码篇”。地址

三、分布式锁

  • redis

现成实现框架:Redisson,实现原理:

石衫大神的图.png

其中lua脚本中有两个判断:第一个判断当前key是否有空闲锁和是否过期,第二个判断客户端id,如果相同则为重入锁,数据结构后+1。
如果加锁成功则启动watch dog后台进程,没十秒扫描一次,如果当前持锁的客户端还继续持有锁则继续延长时间。

缺点:集群或者主从结构在master宕机的时候,客户A持有锁。还没同步过去就宕机了,此时客户端B去加锁就成功了,客户端A也认为自己持有锁。

  • zk

现成的实现框架 Curator

image.png

1.谁需要加锁,谁就去zk上创建一个临时顺序节点
2.创建完成后,判断一下自己是不是最小的节点,如果是就拿锁,不是就对上一个节点添加监听器
3.上一个节点结束自己就排到前面去了,相当于一个排队机制
4.如果节点挂了,因为是临时的zk会自动删除节点,完成释放锁的过程。

Share

《什么是命》

最近这个时间一直感觉自己很迷茫。总有这样一种感觉,自己无论多么努力好像最后也就那么回事了,而开始慢悠悠的养老生活其实也不会差到哪里去,我相信很多中年人都会有这种体会,这就应该是命。

如果一个人中了彩票或者家里拆迁了,我想这不是命好而运气好。运气和命是不一样的,世界上从不缺少有好运气的人,并且每个人都会有走运和不走运的时候,但是命如果定了,那些中奖的人就会在几年内把钱败光,或者当一辈子守财奴一生也就那样了。运气无非是在命运曲线上的微调而已。

我个人是不信宿命论这一系列说法的。我认为命是由环境和性格决定的。环境很重要,生在现在肯定就比生在100年前要好。在同一个时代下,人的性格就是命运,因为它决定人看问题的角度和处理事情的方法。有的人保守,有的人激进,有的人软弱,有的人冲动.... 这些不同的性格会让人在人生这条路上选择不同的方向,选着选着命运的曲线就出来了,而运气不过是在这条曲线上的微调而已。我在和不同的人交流的时候,就能看到一个人未来的命运判断他到底能不能成功,不是我会算命,因为我感觉他做事的方式不会引导他向成功的方向前进。

Research

JVM知识体系复习,多级JSON树型结构,Flink使用SQL语法解析。

你可能感兴趣的:(第十二周)