CNCF 发布了一篇Dapr 的IoT 案例:Tempestive uses Dapr and K8s to track IoT messages | CNCF。Tempestive 是一家物联网解决方案提供商,其产品 Nuboj 面临着可扩展性、成本和维护方面的挑战。为了解决这些问题,Tempestive 采用 Dapr 和 Kubernetes 构建了一个新的架构,实现了以下优势:

  • 模块化: Nuboj 现在可以灵活地适应不同规模和需求的系统,无需昂贵的基础设施。
  • 平台独立性: Dapr 允许 Nuboj 与底层技术解耦,例如数据库和消息传递软件,从而提高灵活性和可维护性。
  • 多语言支持: Dapr 使 Nuboj 能够使用多种编程语言进行开发,例如 C#、Java 和 Python,从而扩展其功能。
  • 成本降低: 新架构显著降低了产品成本,使 Tempestive 在市场上更具竞争力。

Tempestive 在采用 Dapr 和 Kubernetes 之前,Nuboj 的微服务架构遇到了以下可伸缩性问题:

1. 资源限制:
昂贵的资源: 早期版本 Nuboj 的微服务架构需要昂贵的资源才能实现可伸缩性,这增加了运营成本并限制了其扩展能力。

本地化需求: 一些客户需要一个可以从几台设备扩展到几十万台设备的本地解决方案,而早期版本 Nuboj 难以满足这种需求。

2. 扩展复杂性:
微服务间依赖: 早期版本 Nuboj 的微服务之间存在复杂的依赖关系,这增加了扩展的难度。修改或升级一个微服务可能会影响到其他微服务,导致系统出现故障或性能问题。

手动扩展: 早期版本 Nuboj 的扩展需要手动操作,这不仅效率低下,而且容易出错。

3. 运维挑战:
部署和监控: 早期版本 Nuboj 的微服务架构需要手动部署和管理,这增加了运维成本和复杂性。此外,监控和调试微服务也更加困难。

故障恢复: 早期版本 Nuboj 的故障恢复机制不够完善,这导致系统在出现故障时难以快速恢复,从而影响了系统的可用性。

4. 环境限制:
云依赖: 早期版本 Nuboj 基于云的架构限制了其在本地环境中的部署能力,这无法满足一些客户对数据安全性和成本控制的需求。

Tempestive 在采用 Dapr 和 Kubernetes 之前,Nuboj 的微服务架构面临着资源限制、扩展复杂性、运维挑战和环境限制等问题,这些问题限制了其可伸缩性和可用性。迁移到 Dapr 和 Kubernetes 后,Nuboj 的架构发生了以下关键变化:

1. 微服务架构:

模块化: Nuboj 从单体应用转变为微服务架构,将功能划分为独立的微服务模块。这提高了系统的可扩展性和可维护性,并允许各个模块独立部署和升级。

独立性: 微服务之间通过 Dapr 提供的 gRPC API 进行通信,无需直接依赖。这提高了系统的灵活性和可移植性,并允许使用不同编程语言开发微服务。

2. 发布/订阅消息传递:

解耦: 使用 Dapr 的发布/subscribe API,Nuboj 可以解耦发布者和订阅者。这意味着设备可以独立发送消息,而处理组件可以独立接收消息,无需直接相互依赖。

可扩展性: 发布/subscribe 模式支持消息代理(如 MQTT、Redis 或 Kafka),这些代理可以有效地处理大量消息,并确保消息的可靠传递。

负载均衡: 消息代理可以自动分配消息到不同的订阅者,从而实现负载均衡并提高吞吐量。

3. 容器化和自动化部署:

容器化: Nuboj 的微服务被容器化,这允许它们在不同的环境中一致地运行,并简化了部署和扩展过程。

Kubernetes 集群: Nuboj 使用 Kubernetes 集群来管理容器化的微服务。Kubernetes 提供了自动化部署、扩展和管理功能,并确保了高可用性和可靠性。

4. 基础设施抽象:

平台独立性: Dapr 将底层基础设施技术(如数据库和消息传递系统)抽象化,使 Nuboj 可以轻松地在不同的环境中运行,而无需修改代码。

灵活的配置: Dapr 允许通过配置文件轻松地更改底层基础设施技术,例如使用不同的数据库或消息代理。

5. 多语言支持:

编程语言独立性: Dapr 支持多种编程语言,例如 C#、Java、Python 等。这使得 Nuboj 可以使用最适合特定功能的编程语言开发微服务。

总而言之,迁移到 Dapr 和 Kubernetes 后,Nuboj 的架构变得更加模块化、可扩展、可维护和灵活。它现在可以处理海量数据流,并支持多种部署环境。这使得 Nuboj 成为更具竞争力的物联网平台。Dapr 和 Kubernetes 分别在解决 Nuboj 微服务架构的可伸缩性问题中发挥了重要作用:

Dapr 的作用:

  • 解耦微服务: Dapr 通过抽象化服务间通信,使得微服务之间可以独立扩展和部署。这降低了微服务之间的依赖,并简化了扩展过程。
  • 发布/订阅模式: Dapr 的发布/subscribe API 支持可扩展的消息传递,允许设备独立发送消息,而处理组件可以独立接收消息。这提高了系统的吞吐量和可扩展性。
  • 基础设施抽象: Dapr 将底层基础设施技术(如数据库和消息传递系统)抽象化,使 Nuboj 可以轻松地在不同的环境中运行,而无需修改代码。
  • 多语言支持: Dapr 支持多种编程语言,这使得 Nuboj 可以使用最适合特定功能的编程语言开发微服务。

Kubernetes 的作用:

  • 自动化部署和扩展: Kubernetes 提供了自动化部署、扩展和管理功能,简化了微服务的部署和扩展过程,并确保了高可用性和可靠性。
  • 负载均衡: Kubernetes 可以自动分配流量到不同的微服务实例,从而实现负载均衡并提高系统的吞吐量。
  • 自我修复: Kubernetes 可以自动检测和恢复失败的微服务实例,从而提高了系统的可用性。
  • 存储和网络管理: Kubernetes 提供了存储和网络管理功能,简化了微服务架构的运维工作。

采用Dapr 的IoT 案例的更多相关文章

  1. 单体应用 适合采用 dapr 构建吗?

    缘起今天在微信群里有同学问 "纯.net 项目,有必要上dapr吗?" 当时不假思索的说不是微服务没必要,其他群友也说没必要.下午细想了一下,觉得这个和微服务没有关系,如果我的应用 ...

  2. 敢为人先,从阿里巴巴云原生团队实践Dapr案例,看分布式应用运行时前景

    背景 Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间内,github star数达到了1.2 ...

  3. windows10 IOT +Azure会议概要总结

    windows10 IOT +Azure会议概要总结 会议资料将放到https://channel9.msdn.com/Blogs/WinHEC FAQ:msftsziot@microsoft.com ...

  4. Spring 事务管理案例

    事务管理简介   Spring 事务管理有两种方式:一种是编程式事务管理,即通过编写代码实现事物管理,包括定义事务的开始,程序正常执行后的事物提交,异常时进行的事务回滚.另一种是基于AOP技术实现的声 ...

  5. Hadoop案例(二)压缩解压缩

    压缩/解压缩案例 一. 对数据流的压缩和解压缩 CompressionCodec有两个方法可以用于轻松地压缩或解压缩数据.要想对正在被写入一个输出流的数据进行压缩,我们可以使用createOutput ...

  6. 走进MEasy的世界:基于STM32MP1的IOT参考设计

    前言:在万物互联快速发展的趋势下,板卡处理器性能.内存大小.接口外设等都是人们非常关心的硬件参数,但是如何让硬件的作用实现它的功能最大化,一套完善的软件支持尤为重要. 背景:随着HTML5技术的发展, ...

  7. 规则引擎在IoT的重要性?

    前言 物联网的强大功能主要来自于它使我们能够实时做出更准确的决策的能力,这些在通知.自动化和预测性维护上都有所体现.因此我们需要能对实时数据进行实时响应的工具,答案就是规则引擎.规则引擎可以通过摄取实 ...

  8. Dapr微服务应用开发系列0:概述

    题记:Dapr是什么,Dapr包含什么,为什么要用Dapr. Dapr是什么 Dapr(Distributed Application Runtime),是微软Azure内部创新孵化团队的一个开源项目 ...

  9. Dapr 正式发布1.0

    年前我写了一篇博客<Dapr 已在塔架就位 将发射新一代微服务>, 今天Dapr 正式发布了1.0 : Dapr Runtime v1.0.0 Dapr dotnet SDK v1.0.0 ...

  10. 浅析 Dapr 里的云计算设计模式

    Dapr 实际上是把分布式系统 与微服务架构实践的挑战以及k8s 这三个主题的全方位的设计组合,特别是Kubernetes设计模式 一书作者Bilgin Ibryam 提出的Multi-Runtime ...

随机推荐

  1. 谢老师2024春 - Day2:期望DP

    Day2:期望DP​​ A - CF148D Bag of mice 设 \(dp_{i,j}\) 表示还剩下 \(i\) 只白鼠,\(j\) 只黑鼠 A 的胜率. 大家都没有拿到白鼠,那么 B 赢, ...

  2. 几种Java常用序列化框架的选型与对比

    简介: 序列化与反序列化是我们日常数据持久化和网络传输中经常使用的技术,但是目前各种序列化框架让人眼花缭乱,不清楚什么场景到底采用哪种序列化框架.本文会将业界开源的序列化框架进行对比测试,分别从通用性 ...

  3. 龙蜥社区成立系统运维SIG,重磅开源sysAK系统运维工具集

    简介:系统运维SIG致力于打造一个集主机管理.配置部署.监控报警.异常诊断.安全审计等一系列功能的自动化运维平台. ​ OpenAnolis 龙蜥社区(以下简称"龙蜥社区")正式成 ...

  4. DevOps发布策略简介

    简介: DevOps追求更短的迭代周期.更高频的发布.但发布的次数越多,引入故障的可能性就越大.更多的故障将会降低服务的可用性,进而影响到客户体验.所以,为了保证服务质量,守好发布这个最后一道关,阿里 ...

  5. [Py] Jupyter 写入和执行 python 文件

    以 %%writefile request.py 开头. 下面写 python 代码,然后 shift + enter 键,可以把 python 代码写入开头指定的文件中,没有则自动创建. 以 %ru ...

  6. [ELK] 生产环境中 Elasticsearch 的重要配置项

    配置 Elasticsearch https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html 重要的 E ...

  7. Pinpoint对k8s关键业务模块进行全链路监控(17)

    一.全链路监控概述 1.1 什么是全链路监控 在分布式微服务架构中,系统为了接收并处理一个前端用户请求,需要让多个微服务应用协同工作,其中 的每一个微服务应用都可以用不同的编程语言构建,由不同的团队开 ...

  8. 009_原理图中电气互连,Net alias,分页符,总线

    009_原理图中电气互连,Net alias,分页符,总线 1.电气互连,就是画线. 2.端口名,适用同一页相连的端口. 3.分页符off page connector,适用于不同页的端口连接. 4. ...

  9. 【图形数据集】CIFAR-10 dataset数据集

    文献引用:https://www.cs.toronto.edu/~kriz/cifar.html The CIFAR-10 dataset The CIFAR-10 dataset consists ...

  10. 【简说Python WEB】Jinja2模板

    目录 [简说Python WEB]Jinja2模板 目前环境的代码树 抽离出来的Html模板 渲染模板 条件语句 循环语句 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境 ...