`
wbj0110
  • 浏览: 1602121 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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

    博客分类:
  • 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

http://blog.csdn.net/wsscy2004/article/details/38421333

 

分享到:
评论

相关推荐

    Akka应用模式-分布式应用程序设计实践指南.pdf

    另外,本书介绍了 Actor 模型的一个实现框架 Akka 以及它的工具,而后讨论了在充分利用 actor 架构的基础上使用 Akka 框架来设计软件系统的方法,以及使用它来开发并发性和分布式应用程序的方怯。本书还介绍了领域 ...

    Akka应用模式.分布式应用程序设计实践指南

    1. **Actor模型**:Akka的核心是Actor模型,它是一种并发计算的抽象,每个Actor都是独立的工作单元,通过消息传递进行通信。理解Actor如何工作,以及它们如何与其他Actor交互,是学习Akka的基础。 2. **并发与并行*...

    Akka应用模式+分布式应用程序设计实践指南.

    在Actor模型中,实体(即Actor)通过发送消息来进行交互,而无需共享内存,从而避免了竞争条件、死锁和并发修改等问题,极大提高了并发程序的可靠性和伸缩性。 2. Akka框架:Akka是一个基于Scala和Java语言开发的...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成

    它基于Actor模型,这是一种并发计算的概念,将计算过程抽象为彼此独立的实体——Actor,这些实体通过传递消息进行通信,而不是共享状态,从而减少了竞态条件和死锁的可能性。 在Akka中,每个Actor都有自己的邮箱,...

    读书笔记:Scala支持的著名的并发编程框架Akka的学习记录.zip

    读书笔记:Scala支持的著名的并发编程框架Akka的学习记录

    akka学习入门实践

    ### Akka 学习入门实践知识点详解 #### 一、Akka 概述 - **定义**:Akka 是一个用于构建高度并发、分布式、容错性...通过学习 Akka,开发者能够更加轻松地面对现代软件开发中的挑战,构建出既高效又可靠的分布式应用。

    akka_notes:Akka在学习AkkaReact框架的同时注意

    Akka笔记 Akka消息 文档 源代码 从 Akka记录 文档 源代码 从 Akka测试 文档 源代码 从 Akka消息传递请求和响应 文档 源代码 从arunma / AkkaMessagingRequestResponse分叉

    akka-learning:用Akka要点书学习Akka

    2. **消息传递**:在Akka中,Actor之间的通信是通过消息传递实现的,这确保了线程安全。消息是不可变的,发送后不会被修改,降低了并发时的复杂性。消息传递有两种方式:同步(ask模式)和异步(tell模式)。 3. **...

    读书笔记:以Scala带动对异步编程webflux、akka、pulsar、gRpc等框架学习.zip

    读书笔记:以Scala带动对异步编程webflux、akka、pulsar、gRpc等框架学习

    akka-zio:kka Akka:rocket:ZIO:high_voltage:

    Akka ZIO应用 该项目的目的是将Akka Toolkit与ZIO一起使用,以构建高度并发,分布式和弹性消息驱动的应用程序 云 当地的 sbt run open http://0.0.0.0:8080

    读书笔记:基于Akka编写的RPC通讯程序Demo以Scala为开发语言.zip

    读书笔记:基于Akka编写的RPC通讯程序Demo以Scala为开发语言

    typesafe-akka-talk:来自关于 Akka 的网络研讨会的示例代码

    **Akka 概述** Akka 是一个用 Scala 编写的开源框架,它提供了一种在 ...在学习过程中,你将遇到如 Actor 创建、消息传递、Actor 系统配置、故障处理和监控等相关知识点,这些都是理解和使用 Akka 必不可少的部分。

    akka-study:akkaの勉强

    5. **消息传递**:在Akka中,Actor之间的通信是异步的,通过发送不可变的消息进行。消息是不可变的,这意味着一旦创建,就不能更改,这有助于保持系统的线程安全。 6. **Receive行为**:每个Actor都有一个或多个`...

    akka-samples:Akka示例项目

    Actor通过发送消息来交互,这种异步、非阻塞的消息传递方式确保了系统的高并发性和可扩展性。 **Actor** Actor是Akka中的基本构建块,它是一个轻量级的并发实体,有自己的状态并能处理消息。Actor之间的通信遵循...

    akka-gameserver:我在Akka的游戏服务器的游乐场

    2. **消息传递**:设计有效的消息协议,确保Actor之间的通信清晰、可靠。 3. **状态管理**:如何在Actor之间共享和同步游戏状态,同时保持数据的一致性。 4. **网络通信**:使用Akka的Remoting或Akka HTTP模块来...

    akka-http:Akka的流式第一个HTTP服务器模块

    这意味着,如果您在使用高级API实现某件事时遇到困难,则很有可能可以通过低级API完成该操作,这提供了更大的灵活性,但可能需要您编写更多的应用程序代码。 在了解更多。 文献资料 该文档可在,用于和 。 社区 您...

    akka-in-action完整源代码

    Actor是Akka中的基本单元,每个Actor都有自己的状态和行为,它们通过异步消息传递进行通信。 - **消息传递**:Actor之间的通信基于消息,确保了线程安全且无阻塞。消息传递是异步的,提高了系统的并行性。 - **...

    Akka 基础学习pdf中文文档

    第 3 章 传递消息:消息传递模式。 第 4 章 Actor 的生命周期—处理状态与错误:Actor 生命周期、监督机制、Stash/ Unstash、Become/Unbecome 以及有限自动机。 第 5 章 纵向扩展:并发编程、Router Group/Pool、...

    Akka Scala 学习高清原版pdf

    - 消息传递可靠性,保证消息能够被准确地发送和接收。 - 位置透明性,这表明actor可以在不改变程序代码的情况下在分布式系统中移动。 - actor的分发器(Dispatchers)负责消息的负载均衡和调度。 - mailbox是...

Global site tag (gtag.js) - Google Analytics