Algorithm
并查集: java實現并查集,一種特殊的樹,子節點指向父節點。rank優化、路徑優化。
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》
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,實現原理:
其中lua腳本中有兩個判斷:第一個判斷當前key是否有空閑鎖和是否過期,第二個判斷客戶端id,如果相同則為重入鎖,數據結構后+1。
如果加鎖成功則啟動watch dog后臺進程,沒十秒掃描一次,如果當前持鎖的客戶端還繼續持有鎖則繼續延長時間。
缺點:集群或者主從結構在master宕機的時候,客戶A持有鎖。還沒同步過去就宕機了,此時客戶端B去加鎖就成功了,客戶端A也認為自己持有鎖。
- zk
現成的實現框架 Curator
1.誰需要加鎖,誰就去zk上創建一個臨時順序節點
2.創建完成后,判斷一下自己是不是最小的節點,如果是就拿鎖,不是就對上一個節點添加監聽器
3.上一個節點結束自己就排到前面去了,相當于一個排隊機制。
4.如果節點掛了,因為是臨時的zk會自動刪除節點,完成釋放鎖的過程。
Share
《什么是命》
最近這個時間一直感覺自己很迷茫。總有這樣一種感覺,自己無論多么努力好像最后也就那么回事了,而開始慢悠悠的養老生活其實也不會差到哪里去,我相信很多中年人都會有這種體會,這就應該是命。
如果一個人中了彩票或者家里拆遷了,我想這不是命好而運氣好。運氣和命是不一樣的,世界上從不缺少有好運氣的人,并且每個人都會有走運和不走運的時候,但是命如果定了,那些中獎的人就會在幾年內把錢敗光,或者當一輩子守財奴一生也就那樣了。運氣無非是在命運曲線上的微調而已。
我個人是不信宿命論這一系列說法的。我認為命是由環境和性格決定的。環境很重要,生在現在肯定就比生在100年前要好。在同一個時代下,人的性格就是命運,因為它決定人看問題的角度和處理事情的方法。有的人保守,有的人激進,有的人軟弱,有的人沖動.... 這些不同的性格會讓人在人生這條路上選擇不同的方向,選著選著命運的曲線就出來了,而運氣不過是在這條曲線上的微調而已。我在和不同的人交流的時候,就能看到一個人未來的命運判斷他到底能不能成功,不是我會算命,因為我感覺他做事的方式不會引導他向成功的方向前進。
Research
JVM知識體系復習,多級JSON樹型結構,Flink使用SQL語法解析。