原创 MapReduce實現大規模矩陣乘法

矩陣乘法 第一種做法 兩次mr過程 第一次Map:對矩陣元素mij產生鍵值對(j,(M,i,mij)),對每個元素njk產生鍵值對(j,(N,k,njk)) 第一次Reduce: 生成鍵值對key:(i,k),value:mi

原创 Kubernetes In Action 有狀態應用編排——Statefulset

本文整理自 CNCF X 阿里巴巴雲原生技術公開課 & 《Kubernetes In Action》 回顧一下Deployment的功能 支持定義一組pod的期望數量,Controller會爲我們維持Pod的數量在期望的版本以及

原创 雲原生公開課筆記-----Linux虛擬化網絡,Docker網絡模型與K8s網絡模型介紹

Linux 虛擬網絡 Network Namespace Linux內核提供的功能 實現網絡虛擬化的重要功能 能創建多個隔離的網絡空間 每個空間有獨立的網絡棧 多個空間之間試圖隔離互不干擾 虛擬網絡設備 veth 屬於可轉移

原创 分佈式文件與分佈式存儲系統學習總結(持續更新)

存儲系統知識 Write Ahead Log 問題引入 存儲系統在運行過程中,每時每刻都在發生數據更新。如對文件數據的CRUD. 對於中心控制節點來說,這些都會涉及到metadata的更新操作。 爲了保持元數據和文件數據的狀態

原创 對分佈式系統課程電商秒殺項目的再思考

項目源碼: https://github.com/AlexanderChiuluvB/DistrubutedSystemProject 本項目經歷過一次架構的迭代,核心思想是把保證數據安全的機制從基於mysql樂觀鎖機制遷移到re

原创 ElasticSearch&Lucene學習總結

https://zhuanlan.zhihu.com/Elasticsearch 阿里雲TableStore團隊出品的ElasticSearch技術研討學習總結 ES定位 搜索領域:基於lucene Json文檔數據庫: 相對於M

原创 Kubernetes In Action 持久化存儲 & Volume

Background K8s的卷可以理解爲是pod的一個組成部分,不是獨立的的資源,pod的所有容器都可以使用卷,但是必須先掛載在每個需要訪問它的容器中。 換句話說,不同的container的某個路徑只要掛載到同一個捲上,這幾個c

原创 深入瞭解JAVA虛擬機——垃圾收集器與內存分配策略

首先java虛擬的堆存放着所有的對象實例,那麼在進行垃圾回收的時候,如何確定有哪些對象還活着?哪些已經死去了? 引用計數算法 給對象添加一個引用計數器,每當有一個對象引用它的時候,計數器加一,失效的話計數器減一,任何時候計數器爲

原创 一次在K8s上運行Flink的實錄

本文先介紹一下K8s的ConfigMap資源和Ingress的基本概念,然後講一下如何在K8s上部署Flink,最後看一下Flink的Operator又是怎麼編寫的 ConfigMap 問題背景: 生產環境可能需要多個Config

原创 一文總結Spark和Flink的內存模型&執行流程

首先,要做JVM內存模型調優之前先好好審視你的代碼質量!算法不行就改算法!!不要什麼都交給調優!!! Spark部分 摘抄自 https://www.ibm.com/developerworks/cn/analytics/libr

原创 Chandy-Lamport分佈式快照學習記錄和Flink與實現分佈式快照的機制

Snapshot Algorithm 分佈式快照算法是拿來幹嘛的? 在缺乏全局時鐘或者全局時鐘不可靠的分佈式系統確定全局狀態 A snapshot algorithm is used to create a consistent

原创 JDK源碼閱讀計劃(Day7&8) HashMap 非紅黑樹部分

JDK11版本 今天看到篇文章如何閱讀JDK源碼,受益良多 今後讀源碼應該帶着問題來讀,而不是爲了讀而讀! 思考問題既要橫向比較(HashMap,ConcurrentHashMap或者其他map之間的區別),也要縱向比較(不同JD

原创 聊一聊Docker所使用到的Linux底層技術(Namespace,Cgroup與存儲驅動和容器引擎)

容器 基於鏡像 鏡像image就是附加一個JSON配置文件的tar包。鏡像常常是嵌套的,防止重複內容佔用空間 容器運行時會從某處下載鏡像,這個地方稱爲registry。Registry通常是一個通過HTTP協議暴露鏡像的元

原创 Kubernetes In Action 學習筆記 Chapter3,4,5 (一)Pod,副本機制,守護進程與Job

Pod background K8s的基本調度單位,一個Pod可以運行一個或者以上數量的容器. 我們知道Docker的一個container實際上是一個進程,那麼每一個container只能運行一個進程(除非產生子進程). 由於不

原创 JDK源碼閱讀計劃(Day16) j.u.c之Semaphore

註釋閱讀 Semaphore是計數信號量,允許N個線程同時訪問資源。然而Semaphore並不會創建相應的許可證object,它內部僅僅是維護一個計數量。 acquire操作會阻塞線程,除非拿到許可證才能繼續進行。 releas