2018WOT全球軟件與運維技術峰會日前于北京正式落下帷幕,在本屆論壇上,來自九州云的黃舒泉先生就邊緣計算的話題進行了精彩演講。以下是演講實錄:
邊緣計算是如何興起的
大家都知道,過去的十年二十年以來云計算是非常火的一個概念。但最早的概念出現在上個世紀60年代,最早是由非常出名的一名教授,他提出了一個分時的概念。其實這個概念奠定了后面一系列計算的發展。因為有了分時,我們才想到需要有虛擬化這樣的技術。需要用虛擬化來實現各種資源的共享,包括計算、存儲、網絡等等一系列資源的共享。
然后到了上個世紀的九十年代逐漸地才有人把正式的云的概念包裝提出來。最早其實我們可以看到云其實是基于虛擬化技術演變發展過來的。而虛擬化技術最早并不是在我們現在熟悉的X86這個平臺上。它最早其實是IBM的小型機、大型機上的一些虛擬化的技術。
等到了90年代才有了VMware開始把這個技術引入到X86平臺。也正是因為X86平臺對虛擬化技術一系列更好的支持,包括KVM項目逐漸的成熟,我們才有了云計算的爆發。這個可以看到大概在2005年、2006年的時候Google發布了一系列的云服務,以及亞馬遜也發布了它的EC2的服務。
九州云黃舒泉
然后另外一個里程碑可以看到就是2010年的這個OpenStack。OpenStack作為一個開源的云計算的管理平臺。它可以幫助我們使用KVM或者使用別的一些虛擬化的技術以及整合了像開源的這種存儲的技術,OVS的網絡虛擬化技術來實現一整套的云計算的平臺的搭建。不需要像以前一樣還是使用自己的一些研發去實現自己公司內部的一些系統去解決這樣的問題。
所以逐漸從2010年開始OpenStack成為了云計算的開源領域的事實上的一個標準。接著才有了后面最近十年來云計算蓬勃的發展。企業對于自己內務要求比較高的可能會搭建私有云,主要供內部的系統服務。然后更注重于數據的安全性方法。
然后對于有能力、有IDC資源的一些廠家,他們可能逐漸轉型成為公有云,他們也可以使用OpenStack技術來搭建一整套公有云的服務,對外提供服務。然后有些企業它也可以使用混合云的業務里提供這樣的一個滿足企業內部的需求。
所以我們其實可以看到,總結一下就是云計算它是過去十年來的一個主導的計算的模式。隨著我們的這個移動手機的發展,我們還是把大部分的計算能力放在了后端。然后正式因為這種超大規模的數據中心,它才可以強化我們最早提出的這個資源共享分時這樣一個概念,使得我們可以降低用戶的成本,然后降低我們總體的運營的成本。所以這是云計算最近20年來發展的一個歷程。
可以看到,有了這樣的一個開源的云計算的技術,它使得我們有能力去軟件定義數據中心。我們可以把傳統的這種通過專有的設備、專有的技術,井倉式的結構的數據中心把它打散成為一種更通用型的數據中心。它是完全可以采用軟件定義。
其實大家需要明白什么是軟件定義,舉一個最簡單的例子,就是我所有的資源的調配,我都可以非常方便靈活地使用一個API的調用就可以去實現這點。這就是一個比較直白的軟件定義的理解。
然后OpenStack他非常地靈活,他可以有不同的項目來專注于某一個資源的管理。比如說NOVA是幫助我們管理這個計算資源的。然后計算資源分別有什么呢?它可能是有虛擬化,大家可能非常地熟悉采用這個虛擬化的技術產生一個虛機。然后計算還有別的一些表現的形式。比如說裸機、裸金屬、Bare Metal。通過Bare Metal的這種計算的形式,我們可以去承載更多比如說像HPC這類的應用。
另外現在也非常火的就是容器,容器也是一種計算表現的形式。當然OpenStack有別的項目去專門地為容器的管理而提供這樣的一些服務了。但是OpenStack它通過把資源靈活地來管理,對外提供上層的API來實現我們可以根據自己的業務的需求而實現資源的靈活的調配,從而滿足我們不斷快速變化的需求。
所以云計算發展到這個時候,大家可以理解它對外是提供了一整套標準的API。這個API可以幫你去實現對計算存儲網絡的靈活的管理。這一點非常重要,因為其實邊緣計算它的實質也是這樣子。
邊緣計算為了能夠像我們在云計算這一端、在邊緣端,我們也能夠有靈活的這么一個軟件的框架或者是架構來去管理,你在邊緣端所有的計算存儲網絡的資源。
但是大家看一下現在邊緣發展的一個情況。比如說剛剛提到的這個IOT。其實IOT是非常異構的一個環境,它可能有ARM的設備、Intel的設備,還有別的一些芯片的設備。這個異構的情況遠遠比云計算的這個領域要復雜得多。云計算現在可能大家用的就是X86或者是大機、小機,ARM可能都很少用。但邊緣可能是完全不同的一個情況。
所以邊緣的平臺同樣要解決云計算我們要解決的問題。所以它的問題遠遠更加地復雜。異構的環境、復雜的API的調度、計算存儲網絡的調度。對于計算存儲網絡。每一種這樣三大資源其實都有非常復雜的表現的形式。以我剛才舉例的計算來講,就是容器、Bare Metal和虛擬機。
邊緣其實同樣遇到這樣的一個問題。我在邊緣也可以是啟容器來承載更加復雜的一些應用。而更加傳統的一些應用,我可以用虛擬機。高性能的EDN的應用我可以用Bare Metal,對吧?
所以這也希望給大家一點啟發,就是云計算跟邊緣計算其實在架構上是趨同,他們在某種程度上遇到的問題也類似。帶著這樣的一個想法我們可以看一下接下來對邊緣計算的一些理解可能會有幫助。
九州云黃舒泉
工業智能制造與邊緣計算
工業革命的演進最早其實是1.0,就是蒸汽機的發明,然后他帶來了我們一種新的動力。然后到了電力,更方便地去使用各種各樣的一些以電為主要能源的自動化的設備,從而實現了大規模的生產。
然后到工業的3.0,我們有集成電路,我們能夠相對可編程地自動化地去實現我們一些復雜的工序。然后到了4.0其實并沒有提出像之前1.0、2.0、3.0一樣一些完全新的想法。他其實是說我要把原來很多孤立的一些設備,通過網絡把它連接起來。所以網絡化是4.0非常重要的一個特點。
另外一點就是智能化。我單單把所有的設備聯網其實并沒有什么用,關鍵是這些設備是不是智能地能夠去幫我們做一些事情,以及它能夠不斷地反饋、不斷地去改進我的工序,這才是更關鍵的一個事情。所以智能化+網絡化是我們在工業4.0非常關注的兩個特點。
邊緣計算在這里面扮演了一個什么樣的角色呢?其實邊緣計算就像神經末梢一樣,它賦予了我們在每一個聯網的設備上的末端的智能化。為什么叫末端的智能化?因為更復雜的智能化,非常復雜的智能化其實這個決策還是必須由中心的云計算做出來的。因為它可能需要搜集全局的數據做一些分析。
但是邊緣的智能化也是很重要,這里舉了一個神經末梢的例子。我就以我們平時大家都會感受到的一個例子來說明。比如說我們生火,然后當你的手碰到這個火的時候,你會本能地把手指縮回來,因為你要趨利避害。所以你這個縮回來的動作其實是神經末梢的感覺。它通過你最末端地智能,本能的一個反映。這就是我們說邊緣端給予了設備的一個反映。
如果你想一下這里有一個火,你的手碰到了火。你所有的感受到你的大腦里面,你再想兩秒鐘,這是一個火、很燙,你再收回來。這時候可能就會已經出現了很大的問題。
而邊緣端其實就是賦予了我們很多設備本能的一些反應、本能的末端的一些智能。它給予了我們很多IOT設備感知的能力、智能的一些能力。再往上它把這些數據整理了之后可以到云端進行全局的分析,然后云端再把它整合的信息通過推送的方式推送到這個智能邊界設備邊緣端來不斷提高邊緣端所有的智能。所以是這么一個統一的結構。
所以從這個關鍵的技術體系和平臺架構,我們可以看到在對于工業互聯網領域最底層的就是這個邊緣層它主要包括了這個設備的接入、協議的解析以及邊緣數據的一些簡單的處理。
然后處理完了之后它可以把這些數據反饋到我們中心服務器、中心云段的一些IaaS層,比如說就是我們常見的這個OpenStack這樣的一個云基礎設施。
然后云基礎設施可以管理非常多的邊緣的設備,成千上萬個邊緣設備。然后它把所有的數據進行一個匯總,匯總了之后上面有我們工業PaaS平臺的一系列的工業特定領域的組件服務。比如說這個機器學習、可視化、數據清理、模型建模等等。
再往上可能是一些應用層。應用層,我可以把這樣的一些數據分析處理完了之后,通過一些工業應用的系統,然后我可能是直接地控制某些生產線,也有可能是我進行一些報表。然后給我們的這個企業的負責人進行一些分析。
然后同時我也可以根據所有設備的一些傳感器的情況分析這個設備的壽命來進行這個生產線的更替,對這個生產量進行一些預測等等。
我們再回到整個云+邊緣的這個大架構來看。其實無非就是在我們傳統的這個用戶端或者終端領域和核心云端加了一個管道。也就是剛剛給大家最早看的這個CDN的例子,其實我們就是在中間加了一層。這一層也是同樣非常地重要。它是跟我們之前在云計算領域是類似的,它也是有計算存儲網絡的資源。它也是需要對接的一個設備,它也是需要對外提供標準的API。所以它解決的問題、它面臨的問題跟十年、二十年前我們在云計算的領域面對的問題也是類似的。我們帶著這樣的一個思路就可以去看邊緣計算整個技術架構的發展。
現在有非常多的邊緣計算的一些開源項目,主要的有三個。第一個是這個CORD,就是局端的這個,在電信領域的這個局端機房改造的項目。它通過把電信機房的局端改造成數據中心而對外提供更靈活的資源編排的能力。
然后第二個是vCO,也是一個開源的項目,它采用的網絡編排是以OpenDaylight,然后資源承載是采用OpenStack。
第三個是最近比較火的這個Intel和AT&T一起捐獻代碼發布了這個Akraino項目。它的網絡編排是ONAP,然后資源承載也是OpenStack。所以其實大家看到在邊緣的開源項目中,資源承載這一層其實還是沿用了原來在云計算的一些技術的框架。比方說OpenStack,所以這也是九州云為什么把我們從云計算的技術一直把我們擴張到邊緣計算的一個原因。
我們再根據剛剛看的那三部分,我們其實可以看一下總體的、具體里面的技術分別有什么。主要是三部分,最靠近用戶,我們把它叫做數據源,然后中間的叫做edge computing,然后在核心云的我們把它叫做Cloud computing。在Data source這一端,其實數據采集我們就通過IOT設備進行數據采集。然后在邊緣端的話其實它更重要的是一個數據搜集、數據的一些加密,然后如何把數據傳送到核心云這么一些主要的技術。
然后它上面的這個基礎的設施的管理,我們可以采用OpenStack,然后也可以采用容器化的方式來進行一些基礎設施的管理。
在傳統的云、數據中心中,我們可以采用比較常見的技術架構,比如說你采用容器的話,你可以使用這個KBS,存儲可以采用ceph,然后云平臺的管理你可以采用OpenStack。再往上就是一些管理性的組件,比如說你可以用ELK來進行一些數據的分析,采用SAHARA來做Big Data這個平臺。然后通過neutron來提供一系列的LB的服務,可能這個需要有專門的管理的一些組件來進行遠端的IOT設備的管理。
邊緣端其實可以直接地去操控這個IOT的設備。因為他離用戶更加近,所以他就可以提供實時性的操作。比如說某一條產線的變動。我通過換一些比如說以紡織為例,我通過剪切這個布都可以實時地進行一些操作。
當然邊緣端到核心云端,它的傳輸途徑也是很多的。一般邊緣端可能是在,比如說以電信為例,它可能是在局端機房。那么它可能有較好的網絡條件,我可以通過互聯網或者甚至是光纖的方式直接跟我們的云端進行數據的交互。
當然也有可能它本身就是一個小的基站。那么如果沒有這個網絡的話可能就通過LT這樣的一些無線網絡進行數據的一些傳輸。
核心云端它扮演的一個角色其實就是搜集了非常多的邊緣端的數據,然后它進行更復雜的運算之后,它可以把相關的更高的一些分析后的結果push到我們的邊緣端。然后邊緣端實現了一個模型的更新,然后還實現了自身的升級。所以這個是三個主要的模塊之間他們交互的一個流程。
我們可以從紡織行業來看一下邊緣計算帶給了紡織行業什么樣的好處。首先紡織行業其實都有一個非常重要的環節就是驗布。因為像這么一個工廠里面,它一塊布匹是非常大的,可能有幾米寬、好幾十米甚至上百米長。然后這么一大塊布只要有一個小的瑕疵,那么其實若干米個布就廢掉了。這個就對紡織企業就是一個非常大的損失。
那么傳統就是整個布織完了之后,我需要一個工人站在這邊不斷地看這個布匹在滾動。一旦有一個瑕疵點,他就要暫停這臺機器,然后用手標出這個瑕疵點在哪里。同時做上一個標記,在這個布匹的第幾米有一個瑕疵點。接下來要做的一個事情就是這個機器需要去把這個瑕疵點找出來,然后裁掉,接上去另外一個布,然后繼續進行滾動。
所以這個其實對于人力成本是非常地高的。然后對工人也是有損害的。因為長期看來,一個工人長期凝視著同一個顏色的布,準確性也會降低,同時對視力影響也很大。
所以根據一些統計,一個小時來講,一個紡織工可能只能檢測最多200個瑕疵點,而且他們每天工作的時長也是有限的。因為一旦時間過長的話,他總的這個誤判的程度就會很高。因此其實就有一個想法是說,我能不能通過計算機視覺的辦法,通過甚至是機器學習的方法,我來自動地找出這個布匹里的瑕疵點,這樣子我就可以代替人工。然后我通過機器來標注這個點,然后回頭能不能再自動地用機器去控制這個布匹裁剪,把這個瑕疵點自動裁剪掉。這樣我就可以完全替換掉人了,我不需要人工去驗布。
我通過一個機器上面裝上攝像頭,打上相關的光源,我不斷地在滾。然后這個攝像頭實時地識別這個布匹的質量。一旦發現某些瑕疵點,他自動地把這個機器停下來,然后自動地去讓這個機器把瑕疵點給裁剪掉,然后再把布匹接起來,自動地去滾動。這個其實是紡織行業在驗布環節希望改進的一個點。
所以現在比較多的一個方案其實是這么一個方案。就是說我需要有非常多的車間,有一到N個車間,然后每個車間又有非常多的織布機。然后在織布機上放了這攝像頭,然后也放了比如說別的一些設備,像打印機、光源等等。
這時候所有的攝像頭需要拍這個照片,拍了照片之后它再傳輸回我這整個企業統一的云平臺。然后這個云平臺對這個數據進行分析。分析完了之后它再把這個數據返回到這個車間的某一個驗布機,看看在某一個地方有這個瑕疵點,你需要怎么做。
這種傳統架構的缺陷就在于往往是一種事后的分析。也就是說我整卷布可能都卷完了,可能還要過一段時間,我這個工人才可以拿到這個報告說這個布第幾米到第幾米之間有瑕疵點,我應該去裁掉。所以這還有一個返工的工序。我需要看著這個報告把這個布重新地再打一遍,然后手工地把它再裁一遍。
因為整個圖像在網絡中的傳輸,尤其是非常多的車間的時候,這個傳輸的帶寬是非常地高的。然后核心云平臺處理能力也是有限的。所以這個時候等到他反饋回來的時候,其實這個延時一定很高,我不能實現剛剛說到實時的處理瑕疵點的這么一個事情。
因此我們當采用了這個邊緣云的架構的時候,我們可以以車間為單位,或者是以這個驗布機為單位。我在驗布機的旁邊可能就可以放上一個小的計算設備。然后這個計算設備它直接跟驗布機的控制單位連接,它直接操作這個攝像頭、光源以及旁邊的這個打印機,它直接完成這個數據的采集。
我預先在企業的云平臺中,我把已有的這個瑕疵庫的特征給推送到我的邊緣的云平臺中去。這個驗布機在邊緣平臺中跑的時候,邊緣云平臺根據我已有的瑕疵庫先做一部分的識別。同時它也會離線地把這些數據再匯總到企業的云平臺中。然后有企業的云平臺不斷地去更新這樣的一個模型。所以雖然有可能剛開始我的準確性是由最原始的瑕疵庫、特征庫來決定的。
但隨著我的車間不斷地跑,我跑越多的布,我邊緣云平臺的整個特征或者整個瑕疵庫它會不斷地被完善、不斷地被提升。所以這個準確率也是不斷地提高的。
然后有了邊緣云平臺我可以更低延時地去操作這個驗布機來完成我想做的一些自動化的操作。比如說完成自動的裁剪或者自動停下來,讓這個驗布工人去手動地做一些操作等等。所以引入了一個邊緣的云平臺,我們可以更快地在我們的驗布機上做一些自動化的操作以及可以避免很多人工的操作,為企業節省人力的資源。
所以我們跟我們的合作伙伴進行了一些POC之后,其實可以發現這么一個智能的織布機,其實它可以在某種布的情況下,比如說我們現在只能識別這個特定,就是純色的這種布。因為復雜顏色的這種布其實對特征的識別還是難度比較高的。
在這種相對簡單一點的這種純色補助的情況下,我們可以相當于五到六個人的人工織布機。
然后同時通過這樣一個簡單的項目,我們也幫助我們的企業完成了整個統一的驗布機的管理。我可以通過邊緣端采集驗布機的數據,在統一的云平臺中,我可以去看到所有驗布機的一些指標,知道驗布機生產的效率是什么,更好地幫助我們的企業去預測整個產線的一些能力等等。此次的分享就到這里,謝謝大家!
摘自《51CTO》