Akka学习笔记(六):消息传递可靠性

简介: <div style="margin:0px; padding:0px; border:0px; line-height:1.6; font-family:'Helvetica Neue',Arial,'Hiragino Sans GB',STHeiti,'Microsoft YaHei','WenQuanYi Micro Hei',SimSun,Song,sans-serif; font


Akka学习笔记(六):消息传递可靠性

一般规则

关于消息发送,有两条基本规则:

  • 最多一次,即不保证消息传递可靠性
  • message ordering per sender–receiver pair

消息传递机制

  • 最多一次,意味消息有可能丢失
  • 最少一次,保证消息传递可靠,但可能冗余
  • 保证只成功一次,性能最差,消息成功传递,不冗余

为什么不保证传递可靠性

问题是,我们要保证消息传递在什么环节可靠:

  1. 消息已经发到网络上了?
  2. 消息被远程主机接收到了?
  3. 消息已经在接收者actor的邮箱里了?
  4. 目标actor是否能处理这个消息?
  5. 消息在目标actor上开始处理了?
  6. 消息在目标actor上已经处理完毕了?

上面每一条都有不同的挑战和成本。为什么不需要那么可靠?查看这篇文章

Akka拥抱分布式计算和分布式网络,并通过消息传递来明确实现它,因此它不说谎,而是模拟一个有漏洞的抽象方式。这是在Erlang中取得了重大成功的模型,并要求用户基于此为应用建模。你可以阅读Erlang 文档(10.9, 10.10)了解更多。Akka与它非常相似。

底线:你是一个开发者,知道你的应用中需要提供哪些保证,那么你可以飞快又可靠地使用专门的ACK和RETRY来实现(如果你真的需要,大多数情况你并不需要)。使用Akka的Durable邮箱会有帮助。

消息次序

Actor A1 发送消息 M1, M2, M3 给 A2 Actor A3 发送消息 M4, M5, M6 给 A2

意味着:

  1. 如果 M1 被投递了,那么它一定在 M2 和 M3之前被投递
  2. 如果 M2 被投递了,那么它一定在 M3之前被投递
  3. 如果 M4 被投递了,那么它一定在 M5 and M6之前被投递
  4. 如果 M5 被投递了,那么它一定在 M6之前被投递
  5. A2 收到 A1 的消息会与收到的 A3的消息交织在一起
  6. 因为没有投递保证,所以可能会“没有”,或有“一些”,或“全部”消息到达 A2
目录
相关文章
|
人工智能 算法框架/工具 Anolis
Anolis OS 23 基于 AMD 实例的 AI 推理优化实践 | 龙蜥技术
如何使用龙蜥社区容器镜像加速 AI 应用推理部署?
|
分布式计算 网络协议 大数据
大数据Spark Structured Streaming 2
大数据Spark Structured Streaming
235 0
|
11月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
438 6
|
10月前
|
安全 前端开发 JavaScript
如何检查和验证 HTML 中的 CSP 策略是否有效
本文介绍如何检查和验证 HTML 中的 Content Security Policy (CSP) 策略是否有效,包括使用浏览器开发者工具、在线验证工具和常见问题排查方法。
|
6月前
|
人工智能 小程序 算法
【01】AI制作音乐之三款AI音乐软件推荐,包含AI编曲-AI伴奏-AI混音合成remix等-其次关于音乐版权的阐述-跟随卓伊凡学习如何AI制作音乐-优雅草卓伊凡
【01】AI制作音乐之三款AI音乐软件推荐,包含AI编曲-AI伴奏-AI混音合成remix等-其次关于音乐版权的阐述-跟随卓伊凡学习如何AI制作音乐-优雅草卓伊凡
1019 14
|
机器学习/深度学习 编解码 PyTorch
训练Sora模型,你可能需要这些(开源代码,模型,数据集及算力评估)
在之前的文章《复刻Sora有多难?一张图带你读懂Sora的技术路径》,《一文看Sora技术推演》我们总结了Sora模型上用到的一些核心技术和论文,今天这篇文章我们将整理和总结现有的一些开源代码、模型、数据集,以及初步训练的算力评估,希望可以帮助到国内的创业公司和个人开发者展开更深的研究。
|
11月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
164 3
|
安全 Java 数据库
Spring Boot中集成 Shiro
本节主要介绍了 Shiro 安全框架与 Spring Boot 的整合。先介绍了 Shiro 的三大核心组件已经它们的作用;然后介绍了 Shiro 的身份认证、角色认证和权限认证;最后结合代码,详细介绍了 Spring Boot 中是如何整合 Shiro 的,并设计了一套测试流程,逐步分析 Shiro 的工作流程和原理,让读者更直观地体会出 Shiro 的整套工作流程。Shiro 使用的很广泛,希望读者将其掌握,并能运用到实际项目中。
|
分布式计算 算法 安全
点对点(P2P)模式
点对点(P2P)模式
|
算法
MATLAB | 插值算法 | 二维interp2插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 二维interp2插值法 | 附数据和出图代码 | 直接上手
1282 0