版權聲明:本文爲博主原創文章,未經博主容許不得轉載。php
雲與後端相關的技術彷佛並不屬於嵌入式和物聯智能硬件開發工程師的範疇,可是嵌入式開發工程師有必要認識成熟的網絡架構和相關的雲技術,以拓展本身在系統架構方面的視野。大數據分析是物聯網背後的核心價值,物聯智能硬件是物聯大系統的終端,開發工程師不只要深刻精通物聯技術,也應該去理解大系統,甚至整個生態領域的相關技術。html
做爲嵌入式開發工程師,也許並不須要熟悉雲和後端的技術開發,但至少要對其中用到的技術和接口有必定的認識。mysql
1、網絡架構web
常見的網絡架構分爲C/S和B/S兩種模式。sql
1. C/S是客戶端/服務器模式,典型應用如QQ客戶端、百度雲管家等;B/S則是瀏覽器/服務器模式,典型的應用就是門戶網站、銀行業務系統等。兩種模式的優勢和缺點都顯而易見。數據庫
2. C/S交互性強、網絡通訊量低、響應速度快,不少處理都集中在本地客戶端完成,是胖客戶端/瘦服務器。可是其是針對性開發,不利於變動和擴展。C/S通訊編程基於TCP/IP層的socket編程,或者基於對socket的封裝類。apache
3. B/S方式分佈性強、升級維護方便、開發簡單、整體成本低,本地只須要安裝一個通用的瀏覽器便可,是瘦客戶端/胖服務器。但其有數據安全性問題、對服務器要求太高、數據傳輸速度慢。B/S的通訊是基於HTTP協議。隨着網頁腳本技術的提升,B/S也逐漸加強本地瀏覽器端的處理能力,以減輕服務器的負荷。編程
4.以上分析都是基於對PC端網絡架構的思考,可是在移動互聯網上卻有大相徑庭的體驗。以門戶新聞網站而言,在PC領域是以B/S方式來呈現的,可是若是將其直接移植到手機和平板端,會由於屏幕尺寸的差別使得用戶體驗變差,儘管在服務器端能夠經過獲取終端的個性化參數來進行適配,但整體體驗是遠不上APP客戶端來展示的,因此咱們在手機看到的是新浪新聞、網易新聞等等客戶端。在移動互聯網領域,應該考慮的是更多的垂直服務,而不是大而全的產品。後端
2、服務器架構瀏覽器
接下來以B/S架構爲例來分析服務器端的架構。示意圖以下:
1.用戶瀏覽器來訪問業務系統,如銀行業務,瀏覽器是直接跟WEB頁面服務器交互的。WEB服務器通常會部署apache(或者tomcat),而業務系統的網頁(如html,php)則經過apache服務轉爲HTTP協議通訊給用戶。
2.業務系統不一樣的業務頁面由業務引擎來進行控制和處理,業務引擎還會訪問數據庫,另外還須要將處理結果的頁面視圖經過WEB向用戶展現。
3.若是數據訪問量不大,咱們通常能夠認爲WEB是一臺服務器,業務引擎是一臺服務器,數據庫和服務是一臺服務器。若是數據量大,那WEB前面可能還有負載均衡服務器,業務引擎和數據庫多是服務器集羣。若是是超大型數據,如大數據,那傳統的oracle根本就無論用,要用到分佈式文件系統,如Hadoop裏面的HDFS。固然,若是數據量很小,一臺服務器裝下三者也能夠。
3、後端軟件架構
以上分析是基於部署視圖對整個系統的理解。在通常的軟件業務系統中,web服務使用apache(開源),數據庫服務用MySQL(開源)等,都是成熟的軟件產品,或者咱們能夠認爲它們是一種軟件工具。在實現業務系統中,咱們能作的是去高效利用apache和mysql,而業務實現的核心是業務引擎的實現。
業務引擎是應用系統的核心,應用系統上成熟的模型是MVC模型。M是模型,是對數據庫應用接口的封裝,業務引擎即經過M模型的接口來訪問數據庫的業務數據;V是視圖,是應用根據數據處理的結果而整合的頁面,最終會經過WEB推向用戶的瀏覽器;而C則是控制,即業務引擎的核心,其根據用戶的交互來進行有針對的數據處理。
用戶的交互最終都會經過HTTP協議來傳送,而HTTP有兩種方式,相似編程中的函數的參數傳遞,一種是GET的方式,即在網頁的訪問地址後面加上參數來傳遞;另外一種是POST方式,不出如今訪問地址後面,而是出如今消息體中。MVC的控制器會根據參數的不一樣來區分不一樣的子業務請求,並將它們交給對應的數據處理引擎來處理。
業務引擎的開發通常都是用解釋性語言來開發,如php,JSP,asp等等。中小型系統經常使用apache+php+Mysql這種組合,另外就是tomcat+jsp+mysql.
4、雲平臺
雲平臺並非什麼神祕的技術,對於應用者而言,雲技術能給咱們帶來極大的便利和成本優點。咱們來想象一下,一個公司若是隻在廣州辦公,它開發的產品系統是服務全國,若是它只是在本身的公司架設服務器,但全國各地用戶訪問的IP包都要在網絡上跋山涉水來到廣州,北方的用戶的體驗確定不好。假設淘寶的服務器都在杭州,那11.11的搶購,咱們在廣州怎麼搶得過杭州的。由於租賃雲平臺來假設分佈式的服務平臺是大型系統的不二選擇,有人可能會想,這些公司能夠在全國各地租機房買服務器放着啊,成本呢?並且用戶的訪問也有峯值和週期性,360的搶票雖然牛掰,但若是不是過年,也沒多少人用吧。平時買那麼多服務器就爲了過年搶一搶多浪費,確定比不上過年有針對性地租用雲資源來得便宜。
簡單地說,對於通常用戶來講,雲平臺就是提供在看不見的地方提供虛擬服務器主機(CPU、內存、硬盤)和數據庫、WEB服務(apache)等資源。對於雲平臺的提供商,那纔是虛擬集羣技術人才的聚居地,我們不去討論了。
目前,國內有阿里雲、新浪雲和百度雲等知名雲平臺。新浪雲對於體驗用戶是免費的(php免費,Java是收費的)。對於初學者,能夠考慮申請新浪雲來進行技術開發。
各類雲的申請和建立雲應用的過程都比較簡單。以新浪云爲例簡單說明一下,詳細的例程能夠百度獲得。
1.註冊新浪微博帳號,二者是綁定的。
2.以新浪帳號登錄新浪雲計算中心。
3.在新浪SAE上建立新應用,如圖:
這個時候能夠經過二級域名來訪問了,即意味着你擁有了雲平臺的主機資源和apache服務和php腳本解釋引擎。
4.編輯或者上傳代碼(php語言開發)
5、微信公衆平臺開發接入
微信公衆平臺的後臺管理有兩種模式,一種是常規的模式,即由微信官方提供的後臺菜單功能來進行管理,如用戶管理、羣發、交互回覆等等;另外一種是開發者模式,即由公衆號的運營商自行開發後端,來對關注該公衆號的用戶提供服務,如自動回覆、地理信息服務、移動支付等等。微信硬件服務也屬於開發者模式,由微信硬件的廠商提供後端進行支持,詳細的架構能夠參考《物聯網架構場景技術分析》一文。開發者模式給微信公衆號注入了強大的生命力,有第三方創造力的加入,使得微信公衆服務大放異彩,也能夠預見基於微信的物聯網會推到物聯網大幅前進。
第三方後端服務假設在雲前述的雲平臺基礎上,只要按照微信提供的接口便可以接入微信公衆平臺。
1.先使用token來驗證第三方主機方的存在。
2.第三方服務按照微信的接口來提供服務。目錄微信公衆號提供消息服務、對話服務、移動支付、硬件服務、地理信息、圖像音頻等方面的接口。詳細請參考微信官方資料。
本文從大的宏觀網絡架構一步一步深刻到所謂微觀的微信後臺接入,但願對你有所啓發。
一、講述C/S和B/S網絡架構
二、從部署視圖理解(S)服務器架構,包含web、業務引擎、數據庫
三、從開發視圖理解業務引擎的軟件架構
四、雲平臺提供服務器資源(web服務、數據庫服務、主機資源),申請免費雲
五、雲平臺實現微信公衆平臺開發接入
做爲嵌入式開發工程師,不用對未知領域有所畏懼,只要付出足夠的努力,一切都能在掌握之中!
敬請關注微信公衆號:嵌入式企鵝圈,獲取更多嵌入式和物聯網開發相關技術原創分享。