一文将大数据、云计算、物联网、5G(移动网)、人工智能等最新技术串起来
? ?可以看見,上述概念都是隨著技術的發展而不斷創造的。技術的發展與需求的發展相伴相生,新的需求促進新的技術,新的技術解決新的問題,問題的解決又催生新的需求,如此往復。那么,新的問題有什么特點呢?或者說與舊的問題有什么本質區別?顯然,新的問題總是比舊的問題更復雜,更難以解決。技術的演進,就是隨著這些問題的不斷解決而更新、發展的。
???這些技術雖然涉及不同領域,但是我們還是會發現共同點,即它們都屬于ICT(即信息通信)范圍。為了更好的將它們串起來,我們看看ICT的架構本質。個人認為,無論涉及范圍多么龐大、實現細節多么復雜,就如ICT三個字母所概括的,本質上都是信息的處理和傳輸。因此,抽象到極簡視圖,本質上都是節點連接中心的架構。除了區塊鏈(其實區塊鏈也不是絕對的無中心,是否有中心,取決于實現方式。技術上和協議中并無去中心要求,實現上是可以利用一些設備做相對中心的),現有各類系統,大部分都是屬于有中心結構的系統,各類問題也主要都是通過有中心的結構來系統化解決的。所以,ICT的架構本質上就是如下圖的外圍節點與中心通過網絡連接的架構。
?
???下面我們所有論述都圍繞上述結構展開。
???首先看節點部分。這部分可以是PC,應用包括原生客戶端和瀏覽器客戶端;可以是手機,包括原生APP和瀏覽器客戶端;可以是各類嵌入式設備,整合多種傳感器。節點可以連接有線或者無線網絡。
???節點通過特定的協議,與中心互通。這里單獨提一下物聯網相關協議,考慮到場景和設備特點,這類協議多為二進制方式,甚至可以壓縮,以節省資源和帶寬,從而降低功耗。
???節點處理簡單邏輯,計算任務多放在后臺中心區域完成,那里可以提供更加強大的計算力,更加豐富的存儲資源。
???節點主要承擔數據采集和展示的任務。傳感器可以用來采集多種用途的數據。節點也可以承載一部分計算任務,比如區塊鏈數據塊的生成,人工智能相關的簡單處理,特別是語音和圖像直接相關的。如果節點是PC類終端,則可以承載更重的計算任務。但不管怎樣,節點獨立的特點決定了其只處理與自身相關的計算任務,而不像中心那樣,需要涉及到其他所有節點。
???其次是連接部分。除了傳統PC有線接入中心外,更多的是移動手持設備通過移動互聯網接入中心,特別是最新發展的5G方式。對于特定行業,可能還會用到自建基站,甚至衛星網絡,以達到全網(局域、廣域)、全地形覆蓋。
???近期發展的邊緣計算,承載了一部分原本放在中心的計算任務,以更快的反饋給終端節點,從而獲得更好的用戶體驗。
???技術上來講,連接分物理相關的通信鏈路及其上的協議棧和應用數據。每一部分都可以展開成一顆巨大的知識樹,這里概都省略。額外的,根據自身的業務領域,多提一句與服務中心的溝通技術形式,這包括消息隊列的方式(可以是可讀形式或者二進制打包)、RPC遠程調用方式、基于HTTP技術的服務接口以及RESTfull方式的資源訪問等。
???最后是中心部分。這是最關鍵的部分。因為面對的終端節點可能非常多,并且同時連線跟中心溝通的節點也可能非常多,所以中心不僅面臨本身構成上的復雜化問題,也面臨總數和同時工作數都非常大的終端節點帶來的性能和資源上的復雜化問題。
???普通物理機無法處理高計算和高存儲需求,所以,從一開始就存在大型機。其性能相比普通PC強大很多倍,用于提供不對稱的資源服務。但是,隨著外圍終端節點數量的不斷攀升、任務類型的不斷復雜化、計算量的不斷增加以及用戶體驗的不斷改進,大型機CPU、存儲和網絡的物理性能被不斷的逼近到工程極限,進一步提高單機性能,投入和產出將不成比例。
???此時的解決方案,需要從兩方面著手。一方面,是否有辦法將問題的復雜度降低;另一方面,是否可以多機代替單機。這是相輔相成的。降低問題復雜度,很多時候采用分而治之的辦法,將一個大問題,拆分為多個小問題,分別由不同機器處理,這樣就降低了單機要求。多機代替單機,不但可以解決這種分而治之的問題,還可以解決同質問題,比如WEB類問題。這類問題的局限主要在于服務用戶太多,所以可以將用戶分流,一臺機器處理一定數量的用戶,達到降低中心單機規格的目的。
???所以,現在的中心,并不是一臺或幾臺機器組成,而是由大量機器構成。這種解決方案,一般稱之為集群。集群可以用來實現廉價多機代替昂貴高性能大型機。
???除了上述單純的集群方案外,物理位置很多時候也是限制因素,特別是現在全球化的發展。所以,中心也不再是傳統意義上的一個中心,而是有多個中心,這使得中心構成變成分布式系統。其實分布式并不是說物理位置上的多點,只要是在邏輯處理上具備分布式特點,就可以算作是分布式系統了。
???分布式和集群的界限并不是很清晰。大任務拆分后的小任務可能具備兩個特點,一是這些小任務處理不同的問題,這種任務具有MAP-REDUCE的特點;一種是小任務處理相同的問題,這里的變小只是從應對大量用戶變為應對小量用戶,WEB類應用具有明顯的這種特點。即使這樣,一個系統中的問題,也往往同時具有這兩種特點。這體現水平和垂直分割的區別。一個大任務,首先拆分為多個小任務,這些小任務的組合是大任務的最終處理結果;但是每個小任務處理相同的問題,就可以由多個中心節點來共同處理。所以,我們不但采用多機分別處理多個任務節點,而且對每個任務節點,也利用多機來分擔請求量。這里單純看多機分擔,我們側重認為是集群,提供高可靠性、高擴展,也提供最終高性能;而如果看做一個整體,則更多側重分布式,意即在整體上最終針對的是一個問題。由此,分布式面對一致性問題(對整體的系統而言,嚴格意義上講,所有步驟數據影響的都是最終的一份數據,而非像單純獨立問題那樣,可以獨立數據,如果是這種情況,就不存在一致性問題了)。最后再啰嗦一句,總結起來就是:如果是為了利用多臺機器處理相同的問題,減輕單機負載量,同時提高可靠性(備份作用),我們稱之為集群方案;如果是用多臺機器處理一個問題的不同階段,面對一致性問題,則我們稱之為分布式方案。一個實際系統往往二者兼而有之。
???實際中的復雜問題,往往并不是單純問題本身的復雜(比如說是某個復雜的數學問題),或者說是一個流程的復雜,而是系統的復雜。這種復雜性更多的表現在整體性上,也可以說是立體的復雜性。為了解決這種系統復雜問題,在技術演進過程中,軟件開發上(以下都從軟件角度展開)采用了多種技術方案,從最初的單體,到單體三層(表現層MVC、業務邏輯層、數據層),到服務化及如今的微服務化。演進過程中,總的思想是將復雜問題分層分塊加以解決。縱向上(垂直面上)分層,橫向上(水平面上)分塊。不同的層和不同的塊上,有著不同的技術解決方案。這里單獨提幾個點。服務這一塊,微服務化后,涉及服務治理、服務管控、服務熔斷、服務降級等概念。對外限制上,涉及負載均衡、代理(DNS)、反向代理、CDN加速等具體技術方案。
???總的來看,分層走的比較早,塊相對晚一點。不過,最終都成為一個一個塊,這些塊可能在同一層上,也可能在不同層上。每一個塊完成一部分功能,可能的塊包括數據庫、落盤、緩存、各種服務;另外還有各種輔助塊,包括消息隊列、數據分析、集群管理、資源調度等。
???對于各個塊,其體現形式可以輔助以分布式或者集群修飾詞。比如數據庫,可以為單機數據庫,也可以使用分布式方式,分庫分表表現。緩存同樣也可以修飾以分布式。而服務,更多的以集群修飾。不論以分布式或者集群修飾,所有這些塊,只要是能夠以物理機作為承載,則就可以通過虛擬化方式承載,甚至于容器方式。采用虛擬化或容器方式,可更容易動態的做伸縮擴展動作,更容易做集成、測試、交付、部署。
???這樣一來,后臺中心部分的構建基本有了架子。至于架子中每一個格子如何規劃,如何填充,則不同問題有不同的處理方法。但對一個系統而言,消息隊列,分布式存儲、分布式緩存、各種服務是必不可少的。
???當我們采用虛擬化或者容器來做服務的分布式或者集群落地時,這里就出現一個新的問題,這個問題是關于平臺與服務的。技術的進步,帶來的是分工的細化,效率的提高。所以,對一個公司而言,既搭平臺又做服務是不符合讓專業的人做專業的事這一原則的。而且,隨著現在虛擬化和容器技術的發展,平臺發展越來越規范化,并產生一批公司,專門做計算、存儲和網絡資源的管理,并對外提供資源,我們將這種平臺稱之為云計算。
???有了云計算后,業務公司只負責搭建自己的解決方案,提供微服務集,而具體的承載設備和平臺,就由云來承擔。這里,所謂的云,是將大量普通機器整合起來,通過虛擬化和容器進行劃分隔離,從而對外提供虛擬的機器設備。如此一來,提供云的公司專門做基礎資源的管理和服務;提供具體業務功能的公司購買云設備,在其上跑自己的業務功能。提供云的公司之所以可以成立,關鍵在于業務可以比較獨立的與設備分割,特別是云中包含一些獨特的特性,比如CDN內容加速、高可用性、不用購買設備、維護設備、購買寬帶、維護網絡等,業務公司可以專注于自己的業務優化。并且,設備被虛擬化,云化,就可以比較靈活的定義,我們知道,軟的虛的東西就可以擺脫硬件的固有限制。一臺物理機,可以靈活根據資源需求,被分割為多個虛擬機對外提供。
???云計算平臺被分為IaaS、PaaS、SaaS三個級別。傳統的基礎設施層服務傾向于IaaS,更高一點的,可以到PaaS級別,再進一步服務標準化,就可以提供SaaS。資源被不斷的封裝,高效管理,業務不斷的獨立、專業化。平臺這一塊,技術概念也是蠻拼得,比如針對存儲和網絡,出現了軟件定義存儲、軟件定義網絡等概念。
???到這里,我們通過上述技術的演進,解決了中心的硬件限制、硬件維護、方案承載、方案優化等問題。提供服務或者中心的一方,此時可以專心提供業務解決方案,其余的部分有現成的多樣的高效方案供選擇。
???其實來到業務層面,是順其自然的,因為底層所有一切最終都是為業務服務的。業務層面,我們有時候也稱之為對外提供的服務、功能,是中心的核心所在。作為中心,具備數據的匯聚點特點,而且數據通常也代表了價值,是業務或者服務圍繞升華的中心,所以最終數據就自然而然地成為了中心的中心。現在互聯網技術的發展,用戶群的培養,我們每時每刻都在得到大量的數據,這在以前是不可想象的。數據實現了極大的匯聚化,這就為大數據技術提供了用武之地。進一步的,有了數據,我們就可以從數據中獲取深層價值,這就是我們常聽到的數據挖掘。數據挖掘的前提是大數據,這個大至少體現兩個層面:一個數據量的大,這是顯而易見的;另一個方面是數據面的大,或者說廣。得益于互聯網本身互聯互通的特點,通過收集面廣量大的數據,我們就可以通過數據挖掘得到以前無法了解的一些特點和規律。利用這些特點和規律,不但可以提供更好的服務,甚至可以提供數據本身之外的一些不可想象的價值,比如決策方面的、社會資源管控方面的、人類和自然資源利用方面的(避免資源的重復、浪費),相當于有了上帝的視角。說到這一點,有數據后,我們甚至可以拋開人自身,讓機器學習數據、學習數據處理、學習決策、學習“學習”本身...,最終實現機器智能。
???做個通俗的總結:數據,讓上帝有了眼睛;數學算法,為上帝提供了邏輯思維。二者的結合,讓上帝有了智慧,這就是上帝的智能大腦。
總結
以上是生活随笔為你收集整理的一文将大数据、云计算、物联网、5G(移动网)、人工智能等最新技术串起来的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZCMU-1550-AA
- 下一篇: java压缩文件详解_Java解压和压缩