摘 要:伴隨互聯網的飛速發展,Web 信息迅速膨脹,單機系統遠不能滿足大規模數據的信息處理需求。為此,以 Hadoop 為代表的分布式技術得到迅速發展,本文主要介紹了分布式概念,分布式技術的特點以及分布式的常用技術。
關鍵詞:分布式;大數據;分布式常用技術;物聯網
一、概念
分布式技術作為一種基于網絡的計算機處理技術,與集中式相對應。分布式系統的核心理念是讓多臺服務器協同工作,完成單臺服務器無法處理的任務,尤其是高并發或者大數據量的任務。分布式系統由獨立的服務器通過網絡松散耦合組成的。每個服務器都是一臺獨立的PC機,服務器之間通過內部網絡連接,內部網絡速度一般比較快。因為分布式集群里的服務器是通過內部網絡松散耦合,各節點之間的通訊有一定的網絡開銷,因此分布式系統在設計上盡可能減少節點間通訊。此外,因為網絡傳輸瓶頸,單個節點的性能高低對分布式系統整體性能影響不大。比如,對分布式應用來說,采用不同編程語言開發帶來的單個應用服務的性能差異,跟網絡開銷比起來都可以忽略不計。因此,分布式系統每個節點一般不采用高性能的服務器,而是性能相對一般的普通PC服務器。提升分布式系統的整體性能是要通過橫向擴展(增加更多的服務器),而不是縱向擴展(提升每個節點的服務器性能)。
二、分布式技術特點
分布式系統最大的特點是可擴展性,它能夠適應需求變化而擴展。其主要是橫向擴展性。企業級應用需求經常隨時間而不斷變化,這也對企業級應用平臺提出了很高的要求。企業級應用平臺必須要能適應需求的變化,即具有可擴展性。比如移動互聯網2C應用,隨著互聯網企業的業務規模不斷增大,業務變得越來越復雜,并發用戶請求越來越多,要處理的數據也越來越多,這個時候企業級應用平臺必須能夠適應這些變化,支持高并發訪問和海量數據處理。分布式系統有良好的可擴展性,可以通過增加服務器數量來增強分布式系統整體的處理能力,以應對企業的業務增長帶來的計算需求。
分布式系統對服務器硬件要求很低。分布式系統對服務器硬件可靠性不做要求,允許服務器硬件發生故障,硬件的故障由軟件來容錯。所以分布式系統的高可靠性是由軟件來保證。對服務器的性能不做要求,不要求使用高頻CPU、大容量內存、高性能存儲等等。因為分布式系統的性能瓶頸在于節點間通訊帶來的網絡開銷,單臺服務器硬件性能再好,也要等待網絡IO。
分布式系統不允許單點失效。單點失效是指,某個應用服務只有一份實例運行在某一臺服務器上,這臺服務器一旦掛掉,那么這個應用服務必然也受影響而掛掉,導致整個服務不可用。因為分布式系統的服務器都是廉價的PC服務器,硬件不能保證100%可靠,所以分布式系統默認每臺服務器隨時都可能發生故障掛掉。同時分布式系統必須要提供高可靠服務,不允許出現單點失效,因此分布式系統里運行的每個應用服務都有多個運行實例跑在多個節點上,每個數據點都有多個備份存在不同的節點上。這樣一來,多個節點同時發生故障,導致某個應用服務的所有實例都掛掉、或某個數據點的多個備份都不可讀的概率大大降低,進而有效防止單點失效。
分布式系統盡可能減少節點間通訊開銷。分布式系統的整體性能瓶頸在于內部網絡開銷。目前網絡傳輸的速度還趕不上CPU讀取內存或硬盤的速度,所以減少網絡通訊開銷,讓CPU盡可能處理內存的數據或本地硬盤的數據,能顯著提高分布式系統的性能。典型的例子就是Hadoop MapReduce,把計算任務分配到要處理的數據所在的節點上運行,從而避免在網絡上傳輸數據
三、分布式常用技術
3.1分布式系統的架構體系
分布式結構是相對于集中式結構而言的,整個應用系統的執行是分成多個不同的部分并且執行在不同的機器之中。分布式架構主要有:基于對象的體系機構、面向服務的架構(SOA)、REST風格的架構、微服務架構(MSA)、容器技術、Serverless架構。
3.2.分布式消息服務
分布式消息服務是一項基于分布式集群技術的消息中間件服務,具有高可靠性、高并發、低延遲、海量消息堆積的能力特點,提供有效的安全防護、完善的監控與審計、報警機制,為分布式系統提供靈活可靠的異步通信機制。分布式消息服務主要有: Apache ActiveMQ、RabbitMQ、RocketMQ、Apache Kafka。
3.3分布式計算
分布式計算( Distributed computing )是一種把需要進行大量計算的工程數據分割成小塊,由多臺計算機分別計算,在上傳運算結果后,將結果統一合并得出數據結論的科學。分布式計算技術主要有: MapReduce、Apache Hadoop、Apache Spark、Apache Mesos。
3.4分布式存儲
分布式存儲是一種數據存儲技術,通過網絡使用企業中的每臺機器上的磁盤空間,并將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在企業的各個角落。分布式存儲技術主要有: Bigtable、Apache HBase、Apache Cassandra、Memcached、Redis、MongoDB。
3.5分布式監控主要技術有:Nagios、Zabbix、Consul、Zookeeper。
3.6分布式的版本控制
分布式的版本控制就是每個人都可以創建一個獨立的代碼倉庫用于管理,各種版本控制的操作都可以在本地完成。每個人修改的代碼都可以推送合并到另外一個代碼倉庫中。主要的分布式版本控制技術有:Bazaar, Mercurial, Git。
參考文獻:
[1]劉罡.云計算關鍵技術及其應用[J].信息與電腦(理論版),2016(18):68-69.
[2]昝斌.構建大數據云計算平臺分布式技術初探[J].電子科學技術,2017,04(03):55-57.
[3]涂蘇娟. 分布式架構設計[D].南昌大學,2017.
[4]溫苑花.分布式技術與數據庫應用于計算機技術領域研究[J].信息系統工程,2018(01):28.
[5]鄧靈,陳亮,葉仲和.分布式技術及其應用概述[J].計算機時代,2004(06):6-8.
[6]白翠琴;王建;李旭偉.存儲虛擬化技術的研究與比較 [J].計算機與信息技術,2008(7).
[7] Eric A. Brewer,Towards Robust Distributed Systems. (Invited Talk) In the Proc. of 19th ACM Conference on Principles of Distributed Computing (PODC). Portland, OR, July 2000.
基金項目:項目 2017年國家級大學生創新創業訓練計劃項目:面向車輛數據的分布式實時存儲系統的設計與研究(編號: 201713324080)
作者簡介:
孫艷華(1989.10-), 女 ,山東聊城人,碩士,講師,研究方向大數據分布式處理與計算.