萬物互聯課程筆記

HowieLee59發表於2018-08-17

萬物互聯簡介

  • Internet的四個階段:連線->網路化經濟->協作體驗->萬物互聯
  • IOE是什麼?

    • 人員
    • 流程
    • 資料
    • 事物
  • IOE會影響企業的五個核心優先任務:

    • 客戶體驗
    • 創新
    • 員工工作效率
    • 資產利用率
    • 供應
  • 網路元件

    • 裝置
    • 介質
    • 服務
  • 能夠發揮IOE全部潛能的轉型

    • 移動性
    • 雲端計算
    • 大資料
    • IPV6
  • 三種主要的資料儲存型別

    • 本地資料
    • 集中式資料
    • 分散式資料(由中央資料庫管理系統(DBMS)管理的資料)
  • IOE架構方法

    • 應用層
    • 平臺層
    • 基礎設施層
  • 建模的好處

    • 獲得利益相關者的認可
    • 實現系統互動的視覺化
    • 改善與開發人員和其他的利益相關者之間的通訊
    • 明確角色和職責
    • 明確定義的技術要求
    • 更強大的端到端記錄
    • 更優質的最終產品

建模樣式
這裡寫圖片描述

裝置互聯

  • 通用流程(輸入->操作->輸出)
  • 物理連線(銅;光纖(傳送裝置使用 LED 或鐳射器將二進位制位傳送為光脈衝。接收裝置使用光電二極體檢測光脈衝,並將其轉換為電壓。光纖電纜大致分為單模光纖 (SMF) 和多模光纖 (MMF));無線(電磁訊號,無線電,微波頻率));
  • 新的應用層協議(MQTT,REST)
  • 後設資料(後設資料可以嵌入到數字物件內,也可以單獨儲存。 使用者通常看不到後設資料。 例如,郵件報頭開頭包含以下資訊:郵件傳送所選取的路徑、郵件收件人姓名和 IP 資訊、郵件發件人姓名和 IP 資訊,以及郵件傳送時間和日期。 此資訊被視為後設資料)

  • 解釋性和編譯性

    • 解釋性語言依賴另一種程式解析和執行程式碼。該程式稱為直譯器。程式碼儲存為人類可讀的文字,並被饋送至直譯器以供執行。雖然解釋性語言使得程式碼維護和故障排除更容易,但執行速度仍慢於編譯性語言。解釋性語言的示例有 Python、JavaScript 和 PHP。
    • 編譯性語言依靠編譯器(另一種程式)將人類可讀的程式碼轉換為二進位制可執行程式碼。編譯性程式碼儲存為二進位制檔案,可隨時執行,無需重新編譯。此外,編譯性程式碼執行速度更快,因其直接由 CPU 執行,無需直譯器。由於編譯性語言直接由 CPU 執行,因此,編譯器和生成的二進位制編譯性程式碼是平臺特定的。原始碼即編譯前的編譯性語言程式碼。在該階段,程式碼為人類可讀形式,可輕鬆修改。如果程式設計師想要更改編譯性程式,則必須將更改應用於原始碼,並在執行前重新編譯。編譯性語言的示例包括 C 和 C ++。
  • 計算機語言

    • JavaScript 是一種解釋性計算機語言,專為建立 Web 應用而設計。使用 JavaScript,程式設計師可建立能夠與使用者和其他應用進行互動的 Web 應用。

    • Python 是允許使用更簡單語句的另一種解釋性語言。Python 非常易於使用、功能強大且具有多種用途,成為眾多物聯網開發人員的首選語言。Python 受歡迎的主要原因之一是開發人員社群的推廣;Python 開發人員已建立並提供眾多特定模組,可匯入至任何程式中以立即提供附加功能。

    • Blockly 是一種視覺化程式語言,讓使用者能夠通過連線代表不同邏輯語言結構的程式塊來建立程式,而無需編寫實際程式碼。Blockly 在 Web 瀏覽器中執行,可將直觀建立的程式轉換為 JavaScript、PHP 或 Python。Blockly 示例如圖所示。

    • C 語言是一種編譯性語言,非常適用於建立複雜、快速的程式,但其嚴格的規則和語法使得開發難度較大。C 語言建立於上世紀 70 年代初,一直是使用最廣泛的程式語言之一。Linux 作業系統是使用 C 語言編寫的。

    • Java 是一種“一次編寫,到處執行”(WORA) 的編譯性語言。 雖然 Java 和 JavaScript 名稱類似,但它們並無關聯。Java 可在任何平臺上執行,無需重新編譯。基於 Java 的應用需在計算機上安裝 JVM(Java 虛擬機器)平臺。JVM 即執行 Java 編譯程式碼的環境。

  • API 型別多樣,包括作業系統 API、應用 API 和網站 API。建立檔案管理器應用時,軟體開發者利用作業系統 API 複製、移動或刪除檔案。如果開發者應用不具備執行這些功能所需的程式碼,則只需通過公開的作業系統 API 請求作業系統予以執行。

  • REST api:具象狀態傳輸 (REST)(或 RESTful Web 服務)是一種 API,旨在使程式更容易在網際網路上進行互動。REST API 在不同應用間使用基於 HTTP 的呼叫訪問和操作儲存於強大資料庫內的資訊。
  • 作為使用者-外殼-核心互動的示例,假設使用者想要刪除名為 myFile 的檔案。使用者鍵入 rm myFile。rm 是檔案刪除命令,而 myFile 是待刪除的檔名稱。外殼在檔案系統中搜尋 rm 程式,然後通過系統呼叫請求核心執行引數為 myFile 的程式 rm。當該程式正在執行時,外殼無法供使用者使用,且不會顯示錶明狀態的提示。rm myFile 程式執行結束後,外殼向使用者顯示提示,表明其已就緒且等待進一步的命令。
  • 基本Linux命令
  • 程式管理命令
    • ps – 該命令用於列出系統在呼叫時執行於其中的程式。可指示 ps 顯示屬於當前使用者或其他使用者的正在執行的程式。雖然列出的程式無需 root 許可權,但停止或修改其他使用者程式則需 root 許可權。
    • top – 該命令還用於列出正在執行的程式,但不同於 ps,top 一直動態地顯示正在執行的程式。按 q 退出 top。
    • kill – 該命令用於修改特定程式的行為。kill 將根據引數刪除、重新啟動或暫停程式。在許多情況下,使用者將執行 ps 或 top 後,再執行 kill。這樣做是為了讓使用者能夠在執行 kill 前瞭解程式 PID。
  • 不同作業系統包括不同包管理器。Debian 及其衍生產品包括 dpkg(Debian GNU/Linux 包管理器的簡稱)。為進一步自動化程式,使用者可將 apt 作為 dpkg 前端。Red Hat Linux 及其衍生產品將 RPM(紅帽包管理器)作為 Linux 發行版的預設包管理器。 另一種受歡迎的包管理器稱為 yum (Yellowdog Updater Modified)。Yum 能夠自動跟蹤軟體包的依賴關係,並能夠在安裝軟體包前安裝依賴關係
  • Linux命令
  • Blockly編寫Python指令碼
  • 在 Linux 機器中,Python 直譯器通常安裝在 /usr/bin/python 或 /usr/bin/python3 中(具體取決於系統上的可用 Python 版本)。 使用新的 Windows Python 安裝程式,預設情況下,將 Python 安裝到使用者的主目錄中。在較舊的 Windows 機器中,Python 通常被置於 C:\PythonXX 中(其中,XX 是 Python 的版本)。Python 直譯器安裝完成後,其操作有點類似於 Linux 外殼。這意味著在無引數的情況下呼叫 Python 直譯器時,Python 直譯器將互動地讀取和執行命令;在檔名引數或檔案作為標準輸入的情況下呼叫時,Python 直譯器從該檔案讀取並執行指令碼。
  • 也可通過互動模式處理定義為字元序列的字串。使用反斜槓字元 (“\”) 轉義字元。例如,字串使用雙引號,但也需在字串內使用雙引號。 如果輸入的字串如下:”I really “need” this.”,Python 可能會出錯,因其認為字串內的首個雙引號實際上結束字串。如果在字串內的雙引號前放置反斜槓 (),如下所示:”I really \”need\” this”,反斜槓 () 會導致 Python 轉義或忽略後面的字元。
  • RESTful API實驗
  • 雲端計算提供的服務
    • 基礎設施即服務 (IaaS) – 包括伺服器和其他基礎設施元件在內的硬體由提供商提供並按需調整。提供商處理系統維護、備份和連續性規劃。
    • 平臺即服務 (PaaS) –提供商提供使用者開發和啟動應用所需的平臺、伺服器、儲存及作業系統。
    • 移動 PaaS (mPaaS) –提供商為移動應用的設計人員和開發人員提供開發功能。
    • 軟體即服務 (SaaS) –在訂用基礎之上授予軟體(例如訊息傳遞、物聯網資料處理、工資處理、遊戲和報稅)許可證並將其託管在雲伺服器中。

大資料和資料分析

  • 大資料的特徵

    • 數量
    • 速度
    • 種類
    • 準確性
  • 靜態資料:儲存->分析->通知->操作;動態資料:分析->操作->通知->儲存

  • NoSQL 資料庫儲存和訪問資料的方式與關係型資料庫不同。NoSQL 有時稱為“不僅是 SQL”、“非 SQL”或“非關係型”。NoSQL 系統可以支援類 SQL 查詢語言。NoSQL 資料庫使用鍵值、寬列、圖形或檔案等資料結構。很多 NoSQL 資料庫提供“最終一致性”。通過最終一致性,資料庫變更最終會顯示在所有節點上。這意味著,資料查詢可能無法提供最近的可用資訊。該問題稱為“過時讀取”。

  • 建立 NoSQL 是為了讓資料庫設計變得更簡單。相對於標準關係型資料庫,使用 NoSQL 擴充套件節點叢集更簡單。

  • 2015 年,最常見的 NoSQL 資料庫是 MongoDB、Apache Cassandra 和 Redis。

  • SQLite 是手機、MP3 播放器、機頂盒和其他電子產品的資料庫引擎的普遍選擇。SQLite 具有較小的程式碼規模,可有效利用記憶體、磁碟空間和磁碟頻寬,且高度可靠,無需資料庫管理員維護。測試時通常使用 SQLite 而不是企業 RDBMS。SQLite 無需設定,使測試更為容易。它也非常適合中小型網站的後臺資料庫。
  • CSV 檔案用英文逗號分隔資料表中的列,用新行字元分隔行。每行都是一條記錄。雖然這種格式經常用於傳統資料庫的電子表格的匯入和匯出,但沒有具體的標準。JSON 和 XML 也是純文字檔案型別,用標準方式表示資料記錄。這些檔案格式與廣泛的應用相容。將資料轉換為通用格式是將來自不同來源的資料相結合的一種重要方式。
  • CIA三元組

    • 可用性
    • 機密性
    • 完整性
  • 使用Python和SQLite
    Internet Meter SQL

    • 大資料分析中最經常使用的各類推論和機器學習分析:
      • 叢集:用於找出觀察結果彼此相似的群組
      • 關聯:用於找出不同變數值的共現性
      • 迴歸:用於對一個或多個變數的變動之間的關係進行定量
  • 根據資料型別的不同,缺失值可能具有不同的形式。Pandas 資料型別有:物件/字串、int64/整數、float64/浮點和 datatime64/時間戳。NaN 用來表示未定義的字串、整數和浮點,NaT 用來表示時間戳。也可能存在這樣的情況,Python None 值也表示缺失的資料。

  • 科學分析的過程

    • 針對觀察結果提出問題,例如什麼、何時、如何或者為什麼
    • 執行調查研究
    • 通過調查研究做出假設
    • 通過試驗測試假設
    • 分析試驗資料以得出結論
    • 傳達過程的結果

這裡寫圖片描述

  • 虛擬機器監控程式是將抽象層新增到實際物理硬體上的程式、韌體或硬體。抽象層用於建立虛擬機器,能訪問物理計算機中所有硬體(如 CPU、記憶體、磁碟控制器和 NIC)。每一臺虛擬機器執行完整和獨立的作業系統。利用虛擬化,企業現在可以整合多臺他們擁有和操作的伺服器。

  • 虛擬機器監控程式

    • 第一類虛擬機器監控程式 - 這也稱為“裸機”方法,因為虛擬機器監控程式直接安裝在硬體上。第一類虛擬機器監控程式通常用在企業伺服器上。
    • 第二類虛擬機器監控程式 - 這也稱為“託管”方法。第二類虛擬機器監控程式會新增一個額外的抽象層。這是因為虛擬機器監控程式是在物理主機作業系統上執行的應用,而其他作業系統例項安裝在虛擬機器監控程式中。

這裡寫圖片描述

虛擬機器監控程式允許每個虛擬機器都有自己的作業系統,同時共享相同的硬體。如果虛擬機器中使用的作業系統與主計算機上執行的作業系統相同,則此配置比較浪費。容器可解決此問題。

容器是一種專用“虛擬區域”,應用可以在其中相互獨立地執行,同時共享相同的作業系統和硬體。從應用的角度來看,它是在計算機上執行的唯一應用。通過共享主機作業系統,可重複使用大多數軟體資源,從而優化操作。

圖中顯示了與傳統虛擬機器監控程式相比,容器技術的結構。容器只需必要的作業系統部分、系統資源以及任何程式和執行程式所需的庫。這使伺服器在任何時候支援的容器可以比它支援的虛擬機器要多得多。

只是因為可以使用容器技術在伺服器上執行更多程式並不意味著傳統虛擬機器已毫無用處。容器要求作業系統的虛擬機器與主計算機相同。如果需要多個作業系統,則必須使用虛擬機器監控程式。

決定是使用虛擬機器還是容器取決於要實現的目的。儘管要求作業系統相同看起來可能是一種限制,不過生產環境應用通常需要相同的作業系統。

這裡寫圖片描述

  • HDFS 從一臺集中式協調伺服器(稱為 NameNode)管理整個叢集中的資訊。NameNode 伺服器會跟蹤駐留在各臺 DataNode 伺服器上的資料。當資料引入系統中時,它會匯入到 NameNode,NameNode 隨後會將資料劃分為 64Mb 資料塊,這些資料塊隨後根據配置在三臺或更多 DataNodes 間進行復制。此冗餘可提供類似於映象 RAID 陣列的容錯能力,因為如果一個 DataNode 發生故障,則可以更換伺服器 DataNode ,並且檔案系統和資料會藉助複製的 DataNode 還原。

這裡寫圖片描述

這裡寫圖片描述

  • Hadoop 的兩個主要元件是 HDFS 和 MapReduce。HDFS 用於儲存資料。MapReduce 用於處理資料。

  • Kafka 充當訊息傳送系統,用於集中系統中所有資料生產者與所有資料消費者之間的通訊。Kafka 採用分散式設計,以便可以處理大量資料並輕鬆擴充套件。它還可以彈性應對硬體、軟體和網路故障。

  • 除了用作訊息傳送伺服器外,Kafka 還有很多功能。Kafka 工作方式與分散式資料庫類似。向 Kafka 寫入的訊息會複製到許多伺服器並寫入磁碟。如果需要,資料儲存可以永遠持續下去。得益於此分散式設計,Kafka 具有高可用性,支援自動恢復,而且可以彈性應對網路故障。

這裡寫圖片描述

相關文章