Dapr 长程测试和混沌测试(上)

举报
小云悠悠zZ 发表于 2023/01/29 17:52:10 2023/01/29
【摘要】 所测试应用程序将模拟在社交网络中发布的消息,以便通过情绪分析进行评分。不采用外部依赖来更好地控制环境。可以删除某些组件,并实现相同的结果。另一方面,这个测试设计是有意地执行Dapr的所有构建块。此应用程序中的所有组件使用相同的存储库和相同的编程语言实现,以便快速开发。由于此应用程序也使用 Actor 功能,因此可以用 .Net 或 Java 编写。

介绍

这是Dapr的特色项目,在全天候运行的应用程序中保持Dapr可靠性至关重要。在部署真正的应用程序之前,可以通过在受控的混沌环境中构建,部署和操作此类应用程序来实现这种信心。

测试应用程序

所测试应用程序将模拟在社交网络中发布的消息,以便通过情绪分析进行评分。不采用外部依赖来更好地控制环境。可以删除某些组件,并实现相同的结果。另一方面,这个测试设计是有意地执行Dapr的所有构建块。
此应用程序中的所有组件使用相同的存储库和相同的编程语言实现,以便快速开发。由于此应用程序也使用 Actor 功能,因此可以用 .Net 或 Java 编写。鉴于当前的项目维护者更熟悉 C#,因此使用带有 C# 的 .Net SDK来实现这个项目。
存储库应与现有存储库分开。建议创建一个名为“长程测试”的新存储库。

图像

Feed 流发生器

生成人工社交网络消息帖子,例如:“Dapr很棒。#DaprRocks #Kubernetes“。将在预定义的模板中自动生成这些消息“ is . <Hashtag 1> <Hashtag 2>” 名词和形容词的列表是预定义的,并且是随机选择的。与主题标签列表相同。
该消息使用 UUID 生成器获取随机生成的消息 Id 和相关 Id,并使用 Dapr 的 PubSub API 以下列格式发布:

{
  "correlationId": "<UUID>",
  "messageId": "<UUID>",
  "message": "<message>",
  "creationDate": "<creationDate>"
}
消息分析器

该组件通过Dapr 的PubSub功能订阅主题,查找形容词与情绪类型(正面,中性,负面)的映射,并使用识别的类型(或未知,如果找不到)并将该内容附加到消息中。最后,通过 Dapr 的输出绑定API 发布新的标记有效负载。
标记的有效负载采用以下格式:

{
  "correlationId": "<UUID>",
  "messageId": "<UUID>",
  "message": "<message>",
  "sentiment": "<sentiment type>",
  "creationDate": "<creationDate>"
}
Hashtag 计数器

此组件将通过 Dapr 的输入绑定调用接收消息。从邮件中提取主题标签。对于每个hashtag标识的# 标签,它都会进行一个Actor方法调用:标识为“HashtagActor”的执行组件实例中的方法increment(sentiment)。

Hashtag Actor 服务

此组件对于在 Dapr 中练习“Actor ”功能非常有用。它注册主题HashtagActor 程序类型,其中hashtag是标识符。这个Actor 有一个方法increment(String sentiment), 其目标是保持每个主题标签 - 情绪组合的计数器。在状态键中传递的情绪和状态值是前一个值(如果未找到,则为零),增量为 1。

Hashtag 快照服务

此组件将执行 Dapr 的状态 API(而不是在Actor 的上下文中)。它每分钟唤醒一次,并从 Redis 状态存储中检索所有Key - 不使用 Dapr 的状态 API,因为 Dapr 不提供 API 来从另一个 Dapr 应用程序的状态存储中查询一系列状态。预计只有几十个Key,因为此组件中预定义了主题标签列表。
现在,为所有状态生成键值对,并通过 Dapr 的状态存储 API 保存。此服务还提供了一个 API,用于通过 GET 方法检索所有密钥。

验证Worker

此组件将对应用程序的结果执行运行状况检查。鉴于最终的一致性和人为注入的故障,验证必须是模糊的。Worker应执行以下验证:

  • 每5分钟唤醒一次。
  • 通过在Hashtag 快照服务上调用 API 来获取所有键值对。
  • Sleep 2分钟。
  • 通过在Hashtag 快照服务上调用 API 来获取所有键值对。
  • 计算已更改的计数器数的比率。
  • 以 JSON 格式向标准输出指标:{ "longhaul-counters-changeratio": "<ratio>"}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。