SMP架構
數據處理系統的架構最簡單的實現方式就是單節點,但是隨著數據量的增大,為了使單節點的機器性能更加強大,需要增加CPU數量和加大內存來提高吞吐量。這就是所謂的SMP(Symmetrical Multi Processing,對稱多處理)架構。
但是這種架構帶來的問題也很明顯,不僅所有CPU是完全平等且共享內存和總線資源的,會帶來資源競爭。而且隨著CPU數量的增加,機器成本會呈指數級增長。因此,SMP的可擴展性是比較差的,無法應對海量數據的處理場景。
分布式架構
基于SMP的局限,提出了不共享任何東西(share-nothing)的分布式架構,比如從 MPP(Massively Parallel Processing,大規模并行處理)架構,到以Hadoop、Spark為代表的批處理,再到以Flink為代表的流處理架構,都是以分布式作為系統架構的基本形態。Flink是一個分布式的并行流處理系統,由多個進程構成,這些進程一般會分布運行在不同的機器上。
對于分布式系統的管理,有很多棘手的問題。比如集群中資源的分配和管理、進程協調調度、持久化和高可用的數據存儲、以及故障恢復等。不過,對于分布式系統中這些典型問題,業內已經有比較成熟的解決方案和服務了。
因此,Flink在設計中并不會去處理這些通用問題,而是利用現有的集群架構和服務。比如,在集群資源管理方面,會與現有Yarn、K8s、Mesos等工具集成;在分布式村粗方面,會直接利用現有的HDFS、S3等分布式文件系統;在高可用配置方面,會依賴ZooKeeper來完成。
通過以上方式,Flink就可以把精力集中在核心工作上了,也就是分布式數據流處理。那么,Flink是如何具體實現分布式流處理的,它有哪些組件構成。 下一篇詳細介紹。