27、设计自己的边缘计算系统

设计自己的边缘计算系统

在边缘计算项目中,项目的成功往往不在于所采用的技术,而在于设计和执行的方式。接下来,我们将探讨如何设计自己的边缘计算系统,包括使用设计画布、选择云服务提供商、了解可用的硬件等内容。

1. 使用边缘计算系统设计画布

边缘计算系统设计画布基于精益画布业务计划模板,旨在帮助人们通过填写一张纸来创建和组织边缘计算系统。该模板涵盖了 14 个方面,以下是详细介绍:
| 方面 | 描述 | 相关问题 |
| ---- | ---- | ---- |
| 目的 | 定义构建系统的原因,即系统存在的主要理由 | - 系统的目的是什么?
- 它将做什么?
- 它将解决什么问题? |
| 特性 | 列出系统的前五大特性,可从可用性、可靠性等系统属性的功能方面进行描述 | - 系统的主要特性有哪些?
- 这些特性为客户带来了哪些功能?
- 该系统的独特特性是什么? |
| 挑战 | 找出构建系统的顺利路径和潜在障碍 | - 在边缘或云端运行软件有哪些挑战?
- 系统中边缘设备与云端通信时会面临哪些挑战? |
| 人员 | 评估参与系统工作的人员,定义未来招聘的基本技能 | - 构建系统需要哪些必要技能?
- 构建系统需要多少人?
- 项目将如何管理?是按季度、学期、两周冲刺还是其他方式? |
| 成本 | 计算购买硬件、运行第三方服务等可能的成本 | - 设备的成本是多少?
- 传感器的成本是多少?
- 云服务提供商的成本是多少?
- 硬件提供商有哪些?
- 还需要考虑哪些额外成本? |
| 自动化 | 评估自动化流程和代码版本控制 | - 哪些流程将被自动化?
- 代码版本控制将如何实现?
- 是否需要 CI/CD 或 GitOps?
- 软件测试将如何实现? |
| 数据 | 定义如何管理数据,包括格式、数据库、数据摄取、存储等 | - 系统是否使用 NoSQL 数据库?
- 系统是否使用 SQL 数据库?
- 系统将使用哪种类型的数据(JSON、CSV 等)?
- 数据库需要具备哪些特性?可使用 CAP 定理选择最适合需求的数据库。 |
| 安全 | 评估数据和服务的安全性 | - 系统将实施哪些安全策略?
- 系统中哪些地方需要使用数据加密?
- 系统认证在系统中是如何工作的? |
| 边缘 | 列出并决定哪些设备将在边缘运行,以及使用哪些技术 | - 边缘将运行什么?
- 设备上将运行哪些软件?
- 系统是否需要在边缘运行单节点或多节点集群?
- 软件是使用虚拟机、容器、二进制文件还是其他方式运行? |
| 设备 | 列出系统可能使用的设备以及可与之配合使用的额外硬件 | - 设备将使用哪种类型的处理器?ARM 还是 x86_64?
- 设备需要使用哪些额外硬件?
- 设备将如何供电?使用电池还是直流电?
- 设备将如何管理本地时间?
- 设备的固件和数据存储将有多少内存可用? |
| 传感器 | 列出可能使用的传感器以及如何从它们获取数据,并将信息转换为度量或变量 | - 将使用哪些传感器?
- 传感器将测量什么?
- 传感器是否需要电源?需要哪种类型的电源?
- 传感器将如何校准? |
| 云 | 评估系统的哪些部分需要在云端运行,必要时使用哪些托管服务,以及是否有可用于简化系统实施时间的第三方服务 | - 哪个云服务提供商最适合系统需求?
- 系统需要哪些托管服务?
- 系统中是否有任何关键的第三方服务需要使用? |
| 通信 | 定义边缘和云层之间的通信方式、使用的协议、通信是否实时以及设备之间是否使用特殊协议进行通信 | - 边缘设备将如何将数据传输到云端?
- 将使用哪种类型的通信方式与边缘设备和云端进行通信?可以是套接字、REST API、gRPC 等。
- 系统是否使用 LoRa、Wi-Fi、蓝牙、Sigfox 或其他协议与边缘或云端的设备进行通信?
- 数据存储的通信将是同步还是异步的? |
| 指标 | 定义系统将收集的指标并进行可视化 | - 系统将收集哪种类型的指标?黄金指标、天气指标还是其他指标?
- 系统将生成和使用哪些指标?可以包括延迟、温度、速度等。
- 系统将如何可视化收集到的数据?
- 系统是否将使用仪表板软件(如 Grafana 或类似软件)来可视化数据? |

填写这张纸的想法是在不超过 10 分钟的时间内完成,类似于精益画布的工作方式。

2. 使用云服务提供商的托管服务

选择合适的云服务提供商非常重要。常见的三大云服务提供商包括亚马逊网络服务(AWS)、谷歌云(Google Cloud)和 Azure,以下是它们提供的不同托管服务:
- AWS
- 可使用 EC2 和 Graviton 2 ARM 实例的虚拟机来测试将在边缘运行的软件。
- Fargate 服务可用于在容器中部署应用程序,能自动扩展服务。
- Elastic Kubernetes Service (EKS) 是 AWS 针对 Kubernetes 的托管服务,但某些任务需要更多手动步骤。
- 数据库方面,可使用 Aurora 作为 MySQL 或 Postgres 实例,还可使用基于 Redis 或 Elastic Cache 的其他托管服务。
- 文件存储可使用 S3 服务。
- 对于完全无服务器解决方案,可部署 Lambda 函数。
- 拥有 IoT 平台,可连接在边缘运行的设备,并提供一些认证设备。官方网站:https://aws.amazon.com。
- Google Cloud
- 提供与 AWS EC2 实例类似的虚拟机,属于 Compute Engine 服务的 VM 实例,还通过 Tau 实例类型提供 ARM 实例。
- Cloud Run 服务用于运行容器,Google Kubernetes Engine (GKE) 是 Kubernetes 托管服务,比 EKS 更易于管理且更稳定。
- 数据库方面,可使用 Memory Store(自管理的 Redis 服务)和 Cloud SQL(类似于 AWS Aurora)。
- 使用云存储管理存储,类似于 S3 使用存储桶存储信息。
- 具有 Cloud Functions 实现无服务器功能,类似于 AWS Lambda。其服务定义与开源项目兼容,还拥有自己的 IoT 解决方案,可与一些开源硬件和设备配合使用。官方网站:https://cloud.google.com。
- Azure
- 提供虚拟机服务,支持 ARM 处理器的 Dpsv5 和 Epsv5 实例。
- Azure Kubernetes Service (AKS) 是 Azure 的 Kubernetes 托管服务,但某些功能配置较复杂,显得不够成熟,成本也稍高。
- Azure Container Instances 用于运行容器,类似于 AWS Fargate 和 Google Cloud Run。
- 数据库方面,提供 Azure Cosmos DB,与 Cassandra、SQL Server、MongoDB 和 Gremlin 兼容,还默认提供企业级 Redis 服务。
- 提供 Azure Functions 支持多种语言,在 IoT 方面有更多连接设备的选项和大量认证硬件。官方网站:https://azure.microsoft.com。

此外,还可以考虑 Civo 云,它提供托管的 K3s 服务,官方网站:https://www.civo.com。

在选择云服务提供商时,可以考虑以下问题来帮助决策:
1. 提供商的托管服务价格是否合理,能否替代系统计划使用的自管理服务?
2. 采用托管服务的学习曲线是否值得,是否会影响项目的截止日期?
3. 云服务提供商是否包含系统需要实施的大部分服务,而无需使用其他云服务提供商?
4. 云服务提供商是否提供支持和良好的文档来使用其服务?
5. 采用所选云服务提供商是否允许在不大量修改应用程序源代码的情况下继续运行应用程序?

3. 项目可用的现有硬件

有许多硬件可用于边缘计算项目,以下是一些示例:
- Coral Dev Board :由谷歌设计的开发板,使用 Coral Accelerator 运行机器学习应用程序,尺寸合适,能提供运行机器学习应用程序的处理能力。更多信息:https://coral.ai/products/dev-board。
- Rock Pi :类似于 Raspberry Pi,但包含 Mali GPU,可用于处理机器学习应用程序,还有其他可在边缘运行的板卡版本。更多信息:https://rockpi.org。

mermaid 流程图如下:

graph LR
    A[设计边缘计算系统] --> B[使用设计画布]
    A --> C[选择云服务提供商]
    A --> D[选择硬件]
    B --> B1[明确目的]
    B --> B2[确定特性]
    B --> B3[分析挑战]
    C --> C1[AWS]
    C --> C2[Google Cloud]
    C --> C3[Azure]
    D --> D1[Coral Dev Board]
    D --> D2[Rock Pi]
4. 探索系统的补充软件

为了构建一个完整且高效的边缘计算系统,除了选择合适的硬件和云服务提供商,还需要探索与之匹配的补充软件。以下是一些常见的可用于构建边缘计算系统的软件类型及相关介绍:
| 软件类型 | 描述 | 示例 |
| ---- | ---- | ---- |
| 容器编排工具 | 用于自动化部署、扩展和管理容器化应用程序 | Kubernetes、Docker Swarm |
| 数据库管理系统 | 存储和管理系统中的数据 | MySQL、PostgreSQL、Redis |
| 消息队列 | 实现异步通信和数据传输 | RabbitMQ、Kafka |
| 监控和日志管理工具 | 监控系统性能和收集日志信息 | Prometheus、Grafana、ELK Stack(Elasticsearch、Logstash、Kibana) |
| 自动化部署工具 | 实现代码的自动化部署和持续集成/持续交付 | Jenkins、GitLab CI/CD |

这些软件可以根据系统的具体需求进行选择和组合使用。例如,如果需要构建一个高可用的分布式系统,可以选择 Kubernetes 进行容器编排;如果需要处理大量的实时数据,可以选择 Kafka 作为消息队列。

5. 构建边缘计算系统的建议

在构建边缘计算系统时,以下是一些建议可以帮助你更好地完成项目:
1. 明确系统需求 :在开始构建系统之前,务必明确系统的目的、特性和功能需求。可以使用边缘计算系统设计画布来帮助梳理这些信息。
2. 选择合适的技术栈 :根据系统需求选择合适的硬件、云服务提供商和补充软件。要考虑技术的成熟度、可扩展性和兼容性。
3. 注重安全性 :边缘计算系统涉及到大量的数据传输和存储,因此安全性至关重要。要实施适当的安全策略,如数据加密、访问控制和身份验证。
4. 采用自动化流程 :使用自动化工具实现代码的自动化部署、测试和监控,提高开发效率和系统的稳定性。
5. 进行性能测试 :在系统上线之前,进行充分的性能测试,确保系统能够满足预期的性能要求。
6. 持续优化和改进 :边缘计算系统是一个不断发展和演进的过程,要持续关注系统的性能和用户反馈,及时进行优化和改进。

6. 探索额外的边缘计算用例

边缘计算的应用场景非常广泛,除了常见的物联网、工业自动化等领域,还有许多其他的用例可以探索:
- 智能交通 :在交通路口部署边缘计算设备,实时处理交通流量数据,实现智能交通信号控制和交通拥堵预警。
- 医疗保健 :在医院或诊所中使用边缘计算设备,实时处理医疗数据,如患者的生命体征监测、医学影像分析等,提高医疗服务的效率和质量。
- 智能能源 :在能源生产和分配环节中应用边缘计算,实现对能源设备的实时监控和优化控制,提高能源利用效率。
- 零售行业 :在商店中部署边缘计算设备,实时分析顾客的购物行为和偏好,提供个性化的营销和服务。

以下是一个简单的 mermaid 流程图,展示了边缘计算系统构建的主要步骤:

graph LR
    A[明确需求] --> B[选择技术栈]
    B --> C[构建系统]
    C --> D[性能测试]
    D --> E[上线部署]
    E --> F[持续优化]

通过以上对边缘计算系统设计、云服务提供商选择、硬件使用、补充软件探索、构建建议和额外用例的介绍,希望能够帮助你更好地设计和构建自己的边缘计算系统。在实际项目中,要根据具体情况进行灵活调整和优化,以实现系统的最佳性能和功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值