容器、物联网与微服务:技术融合与应用
1. 物联网基础与相关设备
1.1 标准设备与物联网集成
标准设备如桌面电脑、平板电脑和手机都与物联网集成,用于命令接口和远程管理。桌面电脑和平板电脑可对系统及其设置提供高级别的控制,手机也能提供远程功能以修改某些设置或配置。路由器和交换机作为标准网络设备,是连接设备的关键。
1.2 物联网系统的数据综合
物联网系统的有效性通过数据收集、设备集成、实时分析、网络连接以及通过平台、嵌入式系统、合作伙伴系统和中间件采取行动来实现。这些独立和主应用程序负责与关键业务系统集成,如物联网网络内的订购系统、机器人技术和调度系统。
1.3 数据收集
数据收集软件收集并最终将所有收集到的数据传输到中央服务器。它收集各种数据,如传感器数据、通过应用数据过滤、数据安全和数据聚合进行的测量。通过协议,来自多个设备和传感器的数据与机器对机器网络实时连接,还可以将分布式数据反向传输回设备。
1.4 设备集成
通过依赖关系和关联集成所有连接的系统设备,绑定了物联网生态系统。这确保了必要的协作能够管理各种应用程序、协议和每个设备的限制,从而允许设备之间进行通信和稳定的网络连接。
1.5 实时分析
分析应用程序从各种设备收集实时数据输入,并将其转换为清晰的模式,以便人类进行分析和采取可行的行动。信息分析和可视化技术可扩展到特定于行业需求的自动化相关任务。
1.6 应用和流程扩展
这些物联网应用程序集成预定义的设备,以扩展现有系统的范围,例如允许某些移动设备或工程仪器访问软件,从而实现更广泛、更有效的系统,提高生产力并进行更准确的数据收集和分析。
1.7 技术和协议
除了标准网络协议外,物联网技术还包括 RFID、NFC、低能耗无线电协议、低能耗蓝牙、低能耗无线、LTE - A 和 WiFi - Direct,所有这些都支持物联网系统所需的特定网络功能。
| 技术 | 说明 |
| ---- | ---- |
| RFID 和 NFC | 简单、低能耗的连接启动和身份及访问令牌支付选项 |
| 低能耗无线电协议 | 支持低能耗设备通信 |
| 低能耗蓝牙 | 适用于近距离低能耗通信 |
| 低能耗无线 | 提供低能耗的无线连接 |
| LTE - A | 增强的长期演进技术 |
| WiFi - Direct | 实现设备间直接无线连接 |
2. 物联网在多领域的应用
2.1 可穿戴电子设备
物联网智能可穿戴电子设备,如头盔、手表、鞋子和眼镜的普及。
2.2 制造和工程行业
对市场需求、设备故障、分销网络问题、客户需求、不合格产品做出动态响应,降低成本、优化资源利用和减少浪费。
2.3 产品安全
避免故障、不合格产品和其他危险,避免召回,并控制不合格产品或产品向市场的分销。
2.4 医疗保健应用
物联网应用可以扩展偏远地区的医疗保健,提供与发达地区相同水平的医疗援助,支持移动诊所。
2.5 住房、环境、健康和安全应用
利用物联网提高生产力,改善生活质量。
2.6 交通应用
扩展到道路上的商用车辆、火车、无人机,提供改进的通信、控制和数据分发。
2.7 商业农业
利用先进的生物技术,物联网实现更深入的自动化和分析。
3. 物联网开发平台
3.1 常见的物联网开发平台
有许多物联网开发平台,带有集成开发工具,以支持智能连接设备的快速开发和部署,包括:
- ThingWorx by PTC
- Virtualized Packet Core by Cisco
- Electric Imp - Salesforce
- Predix by GE
- Eclipse IoT
- Contiki(开源)
3.2 ThingWorx
ThingWorx 可通过接口和嵌入式工具(如 Vuforia、Kepware、Composer、Mashup builder、存储搜索引擎、协作和连接功能)实现快速开发:
- Vuforia 用于现实开发
- Kepware 用于单点数据分发,以促进互操作性
- ThingWorx agent 用于工业连接
- Composer 是设计测试的建模环境
- Mashup builder 是用于构建组件的仪表板
- SQUEL 是搜索引擎,用于分析和过滤数据
- 数据形状描述自定义事件、信息表、流和数据表的数据结构
- 事物模板允许新设备在大型物联网系统中继承属性
- 事物形状定义模板、属性或执行服务,使开发人员避免重复设备属性定义
3.3 Virtualized Packet Core (VPC)
VPC 技术为 4G、3G、2G、Wi - Fi 和小蜂窝网络提供核心服务,具有分组核心服务整合、动态扩展和系统敏捷性等关键特性。网络功能作为虚拟化服务提供,以实现更大的可扩展性和更快的部署,并降低新服务的成本。它在所有资源上分布和管理分组核心功能,无论是虚拟还是物理的。VPC 应用在网络功能虚拟化、软件定义网络(SDN)和快速网络系统部署方面更为突出,支持低功耗、高流量网络以及各种小型设备的简单部署。
3.4 Electric Imp
Salesforce Electric Imp 平台用于快速将设备连接到云,并通过一种名为 Squirrel 语言的高级、面向对象、轻量级脚本语言开发应用程序。应用程序由两个模块组成:
- 设备模块在设备上运行
- 代理模块在 Electric Imp 云中运行
该平台通过模块之间的简单调用确保安全的通信消息,使用标准的 Web 应用程序开发编码进行设备交互、监控和响应,语法简单易学。
3.5 Predix
通用电气(GE)的 Predix 是一个用于工业仪器的软件平台。它是基于云的平台即服务(PaaS)、数据收集平台,可实现工业级分析。它以简单的方式连接工厂数据、个人和设备,以优化运营和进行性能管理。Predix 生态系统由英特尔 Edison 处理器模块、双核板和 Raspberry Pi 板组成。开发人员提供 IP 地址、以太网连接和电源,即可自动建立连接,向中央 Predix 系统注册,以传输传感器数据。
3.6 Eclipse IoT
基于开源技术的 Eclipse IoT 是一个由实体(行业和学术界)组成的生态系统,为物联网解决方案创建开源框架和服务,为物联网开发人员开发工具,实现物联网标准技术的开源实现。其主要实用程序包括:
- SmartHome:Eclipse IoT 的主要服务,是构建智能家居解决方案的框架,集成了各种协议和标准,适用于异构环境。它通过统一的设备和信息访问促进设备之间的交互,由 OSGi 捆绑包组成,可在 OSGi 运行时部署,并使用 OSGi 服务。
- Eclipse SCADA:最先进的开源 SCADA 系统,用于将各种工业仪器与共享通信系统连接起来进行数据后处理。所采用的技术包括 shell 应用程序、JDBC、Modbus TCP 和 RTU、Simatic S7 PLC、OPC 和 SNMP。该 SCADA 系统具有通信服务、监控系统、存档和数据可视化功能,用于开发自定义解决方案。
3.7 Contiki
开源操作系统 Contiki 为小型物联网设备提供程序、进程、资源、内存和通信管理功能。其生态系统包括操作系统、Web 浏览器、Web 服务器、计算器、shell、telnet 客户端和守护程序、电子邮件客户端、VNC 查看器和 FTP。它很受学术界、组织研究人员和专业人士的欢迎,因为它非常轻量级,非常适合内存、功率、带宽和处理能力有限的设备,运行只需几千字节,占用空间不到 30 KB。
Contiki 支持的标准协议和物联网启用协议包括:
- uIP(用于 IPv4):支持 8 位和 16 位微控制器的 TCP/IP
- uIPv6(用于 IPv6):uIP 的扩展,完全符合 IPv6
- Rime:为低功耗系统提供一组原语,在 IPv4 或 IPv6 不适用时作为替代栈
- 6LoWPAN:代表低功耗无线个人区域网络上的 IPv6,是一种低数据速率无线压缩技术,支持资源有限的设备
- RPL:距离矢量 IPv6 协议,可在复杂的低功耗和有损网络(LLNs)中为不同能力的设备找到最佳路径
- CoAP:适用于需要强大远程监控的简单设备的协议
此外,Contiki 还支持动态模块加载,动态模块加载器可加载、重定位和链接 ELF 文件,在运行时进行加载和链接,支持部署后应用程序行为的更改。Cooja 网络模拟器可用于编译运行 Contiki 和控制系统。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(标准设备):::process --> B(物联网系统):::process
B --> C(数据收集):::process
B --> D(设备集成):::process
B --> E(实时分析):::process
B --> F(应用和流程扩展):::process
B --> G(技术和协议):::process
H(物联网应用领域):::process --> I(可穿戴电子):::process
H --> J(制造和工程):::process
H --> K(产品安全):::process
H --> L(医疗保健):::process
H --> M(住房等应用):::process
H --> N(交通):::process
H --> O(商业农业):::process
P(物联网开发平台):::process --> Q(ThingWorx):::process
P --> R(Virtualized Packet Core):::process
P --> S(Electric Imp):::process
P --> T(Predix):::process
P --> U(Eclipse IoT):::process
P --> V(Contiki):::process
4. 微服务架构
4.1 微服务概述
微服务是一种架构模式,将应用程序构建为一组松散耦合的服务,以实现业务功能。这种架构使组织能够在持续交付和部署大型复杂应用程序时,不断演进其技术栈。
4.2 微服务与单体架构对比
4.2.1 单体架构的挑战
- 代码维护困难 :大型单体代码库难以维护,随着时间推移,模块化结构会逐渐瓦解,因为没有明确的模块边界,实施变更变得繁琐。
- IDE 性能问题 :代码库越大,IDE 运行越慢,降低开发人员的生产力。
- 容器启动时间长 :应用程序越大,容器启动所需的时间就越长,部署过程也会降低开发人员的效率。
- 持续部署挑战 :大型单体应用程序频繁更新部署是一项挑战,用户界面需要迭代开发并频繁重新部署,重新部署的风险也会增加。
- 应用程序扩展困难 :单体架构只能在一个维度上扩展,即通过运行更多的应用程序副本来处理不断增加的事务量,但无法应对数据量的增长。每个应用程序实例都会访问所有数据,导致缓存效果不佳,增加内存消耗和 I/O 流量。此外,为不同资源需求(如 CPU 密集型和内存密集型)独立扩展每个组件也很困难。
- 开发扩展性受限 :单体应用程序阻碍了团队的独立工作,需要在 UI 团队、会计团队、库存团队等之间进行协调开发。一旦应用程序达到一定规模,多团队开发的可扩展性就会受到阻碍。
- 技术栈升级困难 :单体架构可能与特定的技术栈绑定,升级到较新的技术框架将非常繁琐。如果平台框架随后过时,重写整个应用程序将是一个冒险的提议。
4.2.2 微服务架构的优势
- 开发效率高 :每个微服务相对易于理解,可以更快地构建和部署,IDE 运行速度更快,开发人员的生产力更高。
- 团队独立性强 :每个服务可以由各自的团队独立开发和部署,无需依赖其他服务。
- 频繁部署容易 :新版本的频繁部署更加容易。
- 故障隔离性好 :任何服务的内存泄漏只会影响该服务,其他服务将继续正常处理请求。
- 技术栈灵活性高 :可以灵活采用新的技术栈。
4.3 微服务架构的组成与通信
微服务是一组松散耦合的协作服务,是应用程序的构建块。每个服务实现一组狭窄且相关的功能,如订单管理和客户管理服务。服务之间通过同步协议(如 HTTP/REST)或异步协议(如 AMQP)进行通信。服务独立开发和部署,拥有自己的数据库,并强制执行数据一致性。
4.4 微服务架构的决策依据
微服务架构更适合大型、复杂的应用程序,而对于小型或初创应用程序,单体架构可能更合适。微服务架构将应用程序构建为一组松散耦合的服务,通过实现持续交付和部署来加速软件开发。微服务决策基于以下几点:
-
基于业务能力
:微服务应对应业务能力或业务对象,以创造价值,如库存管理、订单管理、交付管理等。
-
基于子域
:一个领域由多个子域组成,不同的业务部分对应不同的子域,如核心子域(关键业务差异化因素和应用程序的最关键部分)、支持性子域(非关键业务差异化因素,可以在内部实现或外包)和通用子域(非特定于业务,使用现成软件实现)。
-
面向对象设计(OOD)
:遵循面向对象设计原则,确保服务的设计具有良好的结构和可维护性。
-
单一职责原则(SRP)
:作为服务设计的基础,定义类的职责和引发变更的原因,创建具有凝聚力的服务设计,并实现一组紧密相关的功能。
-
共同闭包原则(CCP)
:因相同原因而变更的类应放在同一个包中。如果两个类在不同方面实现了相同的业务规则,那么对于任何业务规则的变更,只需对代码进行小的修改即可。
4.5 微服务部署模式
4.5.1 服务部署的指导原则
- 多样化技术选择 :服务可以使用多种语言、框架和框架版本。
- 多实例部署 :每个服务部署多个实例,以提高吞吐量和可用性。
- 独立部署和扩展 :服务可以独立部署和扩展。
- 实例隔离 :服务实例之间相互隔离。
- 快速构建和部署 :服务应具备快速构建和部署的能力。
- 资源约束 :服务消耗的资源(CPU 和内存)应受到限制。
- 监控透明 :每个服务实例应易于监控其行为。
- 可靠且经济高效的部署 :确保服务的可靠和经济高效部署。
- 应用指标和健康检查 :提供应用指标和健康检查 API。
- 审计日志和合规性 :进行审计日志记录和合规性检查。
- 分布式跟踪和管理 :实现分布式跟踪和管理。
- 异常跟踪和管理 :进行异常跟踪和管理。
- 日志聚合和变更管理 :进行日志聚合、日志部署和变更管理。
- 服务组件测试和集成测试 :进行服务组件测试和服务集成合同测试。
- UI 组合 :支持服务器端页面片段和客户端 UI 的组合。
- 安全访问 :基于 JSON Web Token 的访问令牌,安全地识别每个服务的请求者。
4.5.2 具体的部署模式
| 部署模式 | 说明 |
|---|---|
| 每主机多服务实例 | 在物理或虚拟主机上运行不同服务的多个实例 |
| 共享主机部署 | 将服务实例部署在共享主机上 |
| 每个服务实例作为 JVM 进程 | 每个服务实例作为一个独立的 JVM 进程运行 |
| 同一 JVM 中部署多实例 | 在同一个 JVM 中部署多个服务实例 |
| 避免资源冲突 | 避免冲突的资源需求或依赖版本 |
| 每个 VM 一个服务实例 | 每个虚拟机部署一个服务实例 |
| 服务实例与容器关联 | 将服务实例与容器关联 |
| 无服务器部署 | 探索无服务器部署选项,如 AWS Lambda、Google Cloud Functions、Azure Functions |
4.6 微服务底盘
微服务底盘提供外部化配置、日志记录、健康检查、指标测量、分布式跟踪等功能,以支持微服务的开发和管理。不同编程语言的微服务底盘示例如下:
-
Java
:Spring Boot 和 Spring Cloud、Dropwizard
-
Go
:Gizmo、Micro、Go kit
4.7 微服务通信模式
微服务中使用的各种通信类型包括远程过程调用(RPC),用于服务之间的客户端请求,具体如下:
- REST
- gRPC
- Apache Thrift
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(单体架构):::process --> B(存在的挑战):::process
C(微服务架构):::process --> D(组成与通信):::process
C --> E(决策依据):::process
C --> F(部署模式):::process
C --> G(微服务底盘):::process
C --> H(通信模式):::process
D --> I(松散耦合服务):::process
D --> J(同步/异步通信):::process
E --> K(业务能力):::process
E --> L(子域):::process
E --> M(OOD):::process
E --> N(SRP):::process
E --> O(CCP):::process
F --> P(指导原则):::process
F --> Q(具体模式):::process
综上所述,物联网和微服务架构在现代技术领域中都具有重要的地位。物联网通过连接各种设备和传感器,实现了数据的收集、分析和应用,广泛应用于多个领域。而微服务架构则为大型复杂应用程序的开发和部署提供了一种有效的解决方案,提高了开发效率和系统的可扩展性。在实际应用中,我们可以根据具体的需求和场景,选择合适的物联网开发平台和微服务架构模式,以实现最佳的效果。
超级会员免费看
2393

被折叠的 条评论
为什么被折叠?



