万物互联课程笔记

万物互联简介

  • 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 进程运行结束后,外壳向用户显示提示,表明其已就绪且等待进一步的命令。
  • 万物互联课程笔记
  • 进程管理命令
    • 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 具有高可用性,支持自动恢复,而且可以弹性应对网络故障。

万物互联课程笔记