首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊聊Akka

异步非阻塞:Akka-Actor消息通信都是基于异步非阻塞。 高容错性:为跨多JVM的分布式模型提供强劲的容错处理,号称永不宕机。...使用场景包括: 服务后端,比如rest web,websocket服务,分布式消息处理等。 并发&并行,比如日志异步处理,密集数据计算等。 总之,对高并发和密集计算的系统,Akka都是适用的!...在Akka中,整个Actor体系被抽象成一个ActorSystem,它是一个层级的结构,拥有公共行为的配置和管理。...另外,当JVM崩溃时,为了避免Actor状态的丢失,我们可以借助持久化方案来对状态进行持久化操作。...HTTP模块 Akka提供了简单易用的Http模块,支持完整的Http服务端与客户端开发,可以帮助我们快速构建性能极强的Rest Web服务。

2.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ElasticMQ 0.7.0:使用Akka和Spray的长轮询,非阻塞实现

    这是一次重要的重写,核心部分是使用Akka Actor和REST层则采用Spray。目前为止,只有核心部分和SQS模块被重写;SQL后端和复制(Replication)尚在进行中。...当然,接口和端口是可配置的,详情请参阅自述文件。像以前一样,您也可以使用任何基于JVM的语言来运行嵌入式服务器。...如前所述,ElasticMQ现在使用Akka和Spray实现,并且不包含任何阻塞调用。一切都是异步的。 核心 核心系统是基于Actor的。...层 SQS查询/ REST层是使用Spray实现的,这是一个基于Akka的轻量级REST/HTTP工具包。...除了基于Actor的非阻塞IO实现外,Spray还提供了强大的路由库spray-routing。它包含一些内置的指令,用于在请求方法(get/post等),提取表单参数的查询或请求路径上的匹配。

    1.6K90

    Akka 指南 之「调度器」

    文章目录 调度器 依赖 简介 默认调度器 查找调度器 为 Actor 设置调度器 调度器类型 更多调度器配置示例 阻塞需要小心管理 问题:在默认调度器上阻塞 解决方案:用于阻塞操作的专用调度器 阻止操作的可用解决方案...尝试寻找或构建Reactive API,以便将阻塞最小化,或者将其转移到专用的调度器。通常在与现有库或系统集成时,不可能避免阻塞 API,下面的解决方案解释了如何正确处理阻塞操作。...解决方案:用于阻塞操作的专用调度器 隔离阻塞行为以使其不影响系统其余部分的最有效方法之一是,为所有这些阻塞操作准备和使用专用调度器。...在my-blocking-dispatcher上运行阻塞操作时,它使用线程(达到配置的限制)来处理这些操作。...阻止操作的可用解决方案 针对“阻塞问题”的充分解决方案的非详尽清单包括以下建议: 在由路由器管理的 Actor(或一组 Actor)内执行阻塞调用,确保配置专门用于此目的或足够大的线程池。

    1.9K21

    Flink REST API 的设计指南

    Flink REST API 介绍Flink REST API 是 JobManager 提供的 HTTP 接口,用户可以通过 GET、POST 等 REST 定义的方法,请求获取作业、JobManager...作为平台方,我们会给 Flink 增加各项新功能,例如提交 SQL 代码、动态调整作业配置、实时开启或关闭某些特性、下发调试指令等等,都可以通过扩展 REST API 来实现。...非阻塞的 Flink REST API 设计要点关于拓展 Flink REST API 的方法,我们可以在 Flink 官网文档、各类技术社区文章中得到详细的指引,因而这里不再赘述基础的细节,而是更侧重于讲解遇到的一些常见的问题和解决方案...→ TaskManager → 用户定义的 Task请求体、返回体设计通常对于接受 GET 方法的 REST API 而言,可以直接使用 EmptyRequestBody 类作为请求体的结构,方便快捷...JobManager 和 TaskManager 的通讯机制与超时处理Flink 使用 Akka 的 Actor 模型来实现 JobManager 与 TaskManager 的命令下发与执行。

    1.7K20

    2019-05-31 使用 REST-Assured 测试 REST API 的进阶技巧和最佳实践

    各种针对 REST API 的测试工具也应运而生,《使用 Rest-Assured 测试 REST API》已进行了初步的介绍。...从本质上说,REST API 的测试主要是测试 HTTP 的 GET/POST/DELETE/PUT 这几个方法。其中,最复杂的主要是 GET 和 POST/PUT 两种情况。...它的安装和简单的使用本文就不再赘述,请参考《使用 Rest-Assured 测试 REST API》。 我们首先看前面提到的第一个复杂点--验证返回体。JSON 返回体因为其结构简单,非常常用。...我们可以使用 Combinatorial Testing(又称 All-pairs testing)的方法来得到参数组合,然后使用 Rest-Assured 进行测试。...小结: 本文介绍了如何使用 Rest-Assured 和 JSON Schema 测试 REST API 的方法及其他技巧。

    1.8K20

    鸟瞰 Java 并发框架

    分析并发框架的示例用例 3. 快速更新线程配置 4. 性能测试结果 5. 使用执行器服务并行化 IO 任务 6. 使用执行器服务并行化 IO 任务(CompletableFuture) 7....这个理论适用于所有框架,并且在所有框架中使用相同的线程配置来度量性能。 对于内存任务,线程的数量大约等于具有最佳性能的内核的数量,尽管它可以根据各自处理器中的超线程特性进行一些更改。...对于 I/O 任务,ExecutorService 中配置的线程数应该取决于外部服务的延迟。 与内存中的任务不同,I/O 任务中涉及的线程将被阻塞,并处于等待状态,直到外部服务响应或超时。...因此,以非阻塞方式保持线程所带来的好处非常少,而且在此模式中处理请求所涉及的成本似乎很高。 通常,对这里讨论采用的例子使用异步非阻塞方法会降低应用程序的性能。 7.1 何时使用?...如果用例类似于服务器端聊天应用程序,在客户端响应之前,线程不需要保持连接,那么异步、非阻塞方法比同步通信更受欢迎。在这些用例中,系统资源可以通过异步、非阻塞方法得到更好的利用,而不仅仅是等待。

    1K40

    来,带你鸟瞰 Java 中的并发框架!

    本文中用到的术语在这里有更详细的描述。 2. 分析并发框架的示例用例 3. 快速更新线程配置 在开始比较并发框架的之前,让我们快速复习一下如何配置最佳线程数以提高并行任务的性能。...这个理论适用于所有框架,并且在所有框架中使用相同的线程配置来度量性能。 对于内存任务,线程的数量大约等于具有最佳性能的内核的数量,尽管它可以根据各自处理器中的超线程特性进行一些更改。...对于 I/O 任务,ExecutorService 中配置的线程数应该取决于外部服务的延迟。 与内存中的任务不同,I/O 任务中涉及的线程将被阻塞,并处于等待状态,直到外部服务响应或超时。...因此,以非阻塞方式保持线程所带来的好处非常少,而且在此模式中处理请求所涉及的成本似乎很高。 通常,对这里讨论采用的例子使用异步非阻塞方法会降低应用程序的性能。 7.1 何时使用?...如果用例类似于服务器端聊天应用程序,在客户端响应之前,线程不需要保持连接,那么异步、非阻塞方法比同步通信更受欢迎。在这些用例中,系统资源可以通过异步、非阻塞方法得到更好的利用,而不仅仅是等待。

    62540

    鸟瞰 Java 并发框架

    本文中用到的术语在这里有更详细的描述。 2. 分析并发框架的示例用例 ? 3. 快速更新线程配置 在开始比较并发框架的之前,让我们快速复习一下如何配置最佳线程数以提高并行任务的性能。...这个理论适用于所有框架,并且在所有框架中使用相同的线程配置来度量性能。 对于内存任务,线程的数量大约等于具有最佳性能的内核的数量,尽管它可以根据各自处理器中的超线程特性进行一些更改。...对于 I/O 任务,ExecutorService 中配置的线程数应该取决于外部服务的延迟。 与内存中的任务不同,I/O 任务中涉及的线程将被阻塞,并处于等待状态,直到外部服务响应或超时。...因此,以非阻塞方式保持线程所带来的好处非常少,而且在此模式中处理请求所涉及的成本似乎很高。 通常,对这里讨论采用的例子使用异步非阻塞方法会降低应用程序的性能。 7.1 何时使用?...如果用例类似于服务器端聊天应用程序,在客户端响应之前,线程不需要保持连接,那么异步、非阻塞方法比同步通信更受欢迎。在这些用例中,系统资源可以通过异步、非阻塞方法得到更好的利用,而不仅仅是等待。

    83230

    PowerJob 原理剖析之 Akka Toolkit

    Akka 本身提供了完整的 Actor 模型支持,包括对并发/并行程序的简单的、高级别的抽象、异步、非阻塞、高性能的事件驱动编程模型和非常轻量的事件驱动处理。...、非阻塞的背压流处理。...akka-remote(artery-remoting):通讯组件,也是 PowerJob 所使用的核心组件,然而官网并不推荐直接使用(直接使用 remote 启动还会警告使用了过于底层的 API),普通分布式应用推荐直接使用...三、Akka 简单使用 接下来是关于 Akka 的一个超简明教程,帮助大家初步理解并入门 Akka,其内容涵盖了所有 PowerJob 中用到的 API,也就是说,看懂这部分,源码中的 Akka 就不再可怕喽...解释了那么多,终于可以点明主旨了~作者比较喜欢 classic,因此 PowerJob 只使用 AKKA classic API,本文也只涉及 AKKA classic API,反正官网说了会长期维护~

    1.4K20

    异步编程 - 14 异步、分布式、基于消息驱动的框架 Akka

    它是基于 JVM(Java虚拟机)的,主要使用 Scala 编程语言开发,但也提供了 Java API,因此可以在 Java 和 Scala 中使用。...它提供了监督策略,允许在 Actor 发生故障时采取自定义的恢复操作。这有助于系统在故障时继续运行,提高了系统的可用性。...下面看下Akka的特性: 可以更简单地构建并发和分布式系统 Akka基于Actor模型和Streams,让我们可以构建可伸缩的,并且可以高效使用服务器资源,使用多个服务器进行扩展的系统。...使用CRDT(Conflict-free Replicated Data Types,无冲突的复制数据类型)实现最终一致性的分布式数据。 反应流数据 具有回压的异步非阻塞流处理。...Actor模型允许构建分布式系统,不限于单个JVM内。 【Actor系统图】 使用消息传递避免锁和阻塞 Actor之间通信通过消息传递而不是方法调用,不会导致发送消息的调用线程被阻塞。

    1.4K40

    快速入门 Akka Java 指南

    相反,它的公共 API 是通过 Actor 处理的消息来定义的。这可以防止 Actor 之间共享状态;观察另一个 Actor 状态的唯一方法是向其发送请求状态的消息。...让我们看看在Hello World示例中使用 Actor 和消息一起工作的一些最佳实践。...在 Actor 类中使用静态props方法来描述如何构造 Actor 也是一种常见的模式。 让我们看看 Actor 如何实现Greeter和Printer来演示这些最佳实践。...Props是一个配置类,用于指定创建 Actor 的选项,将其视为不可变的,因此可以自由共享用于创建包含相关部署信息的 Actor 的方法。这个例子简单地传递了 Actor 在构造时需要的参数。...actorOf工厂方法创建 Actor 并接受两个参数,一个名为props的配置对象和一个String类型的 Actor 名称。 Actor 和 ActorSystem 的名字在 Akka 中很重要。

    10K31

    Java一分钟之-Akka:反应式编程框架

    每个Actor都有自己的邮箱,通过发送消息而非直接调用方法来与其他Actor通信,这使得并发控制变得简单且安全。此外,Akka提供了故障处理机制,支持Actor的生命周期管理和容错策略。...Props:用于创建Actor实例的配置对象。 常见问题与易错点 1. 阻塞Actor 问题描述:在Actor中执行耗时操作(如数据库查询、网络请求)会阻塞该Actor处理其他消息的能力。...解决方案:使用Future或ask模式异步处理耗时操作,保持Actor的非阻塞特性。...错误的消息处理 问题描述:不恰当的消息类型处理可能导致Actor行为异常。 解决方案:在Actor类中实现unhandled方法,捕获未处理的消息类型,并给出合理的响应或日志记录。...合理使用并发工具:如使用ActorSystem.scheduler()安排定时任务,避免直接使用线程池。 监控与日志:充分利用Akka的日志和监控功能,及时发现并解决问题。

    92510

    Akka 使用系列之一: 快速入门

    即工作流程可以是阻塞,也可以是非阻塞; Akka 用于简化编写容错的、高可伸缩性的 Actor 模型应用,即我们很容易用 Akka 实现上述学生老师的 Actor 模型。...其中服务端读入 RemoteServerSideActor 的配置,而客户端读入 RemoteClientSideActor 的配置。...} } } 从配置文件来看,如果我们在服务端启动两个老师 Actor, 他们会共用一个端口。...我们很容易理解,所有发往老师 Actor 的消息都发往了服务器的一个端口,Akka 内部有一套机制将消息分发到不同的 Actor 中。...Akka 系列系列文章 Akka 使用系列之一: 快速入门 Akka 使用系列之二: 测试 Akka 使用系列之三: 层次结构和容错机制 Akka 使用系列之四: Future

    1.1K100

    如何使用RESTler对云服务中的REST API进行模糊测试

    RESTler RESTler是目前第一款有状态的针对REST API的模糊测试工具,该工具可以通过云服务的REST API来对目标云服务进行自动化模糊测试,并查找目标服务中可能存在的安全漏洞以及其他威胁攻击面...如果目标云服务带有OpenAPI/Swagger规范,那么RESTler则会分析整个服务规范,然后通过其REST API来生成并执行完整的服务测试。...RESTler从Swagger规范智能地推断请求类型之间的生产者-消费者依赖关系。在测试期间,它会检查特定类型的漏洞,并从先前的服务响应中动态地解析服务的行为。...RESTler配置 RESTler目前仅支持在64位的Windows和Linux操作系统上运行。 构建指引 工具要求:安装Python 3.8.2和.NET Core SDK 3.1。...语法中,每个endpoints+methods都执行一次,并使用一组默认的checker来查看是否可以快速找到安全漏洞。

    5.1K10

    在Scala中构建Web API的4大框架

    Play 2是被动的,允许并行远程呼叫。这意味着它适用于WebSockets和其他相关的以服务器为中心的方法。 5. 它为资产汇编、格式处理、数据库集成等提供了广泛的框架支持结构 6....Akka HTTP ——Akka HTTP模块在akka-actor和akka-stream之上实现完整的服务器和客户端HTTP堆栈        Akka HTTP是Scala的高度模块化和极其强大的...Chaos ——用于在Scala中编写REST服务的轻量级框架        Chaos是Mesosphere的框架。...不幸的是,Chaos本质上是一个轻量级框架,虽然它做了一些有趣的事情,但它从根本上受到这种方法的限制。 2. 正如创作者所说,它确实做得很好 - REST。...如果您没有构建RESTful服务,或者您正在构建一个必须集成一些“怪癖”设计的服务,那么Chaos中的默认库可能不是您要求的最佳集成。

    2.1K40

    Akka 指南 之「Actors」

    Props Props是一个配置类,用于指定创建 Actor 的选项,将其视为不可变的,因此可以自由共享用于创建 Actor 的方法,包括关联的部署信息(例如,要使用哪个调度程序,请参阅下面的更多内容)...API AbstractActor类定义了一个名为createReceive的方法,该方法用于设置 Actor 的“初始行为”。...这可以用于注册回调以便在完成时获取通知,从而提供避免阻塞的方法。...,可以在应用程序的配置中添加更多的阶段(phases),方法是使用附加的depends-on覆盖阶段。...要启用硬System.exit作为最终操作,可以配置: akka.coordinated-shutdown.exit-jvm = on 当使用「Akka 集群」时,当集群节点将自己视为Exiting时,

    4.2K30

    Akka 指南 之「邮箱」

    然后确定邮箱如下: 如果 Actor 的部署配置节(section)包含mailbox键,那么它将命名一个描述要使用的邮箱类型的配置节。...请注意,这需要绝对配置路径,例如myapp.special-mailbox,并且不嵌套在akka命名空间中。 如果调度器的配置节包含mailbox-type键,则将使用相同的节来配置邮箱类型。...如果调度器需要如上所述的邮箱类型,那么将使用该要求的映射来确定要使用的邮箱类型。 将使用默认邮箱akka.actor.default-mailbox。...由多个生产商单个使用者队列支持,不能与BalancingDispatcher一起使用 是否阻塞:No 是否有界:No 配置名称:akka.dispatch.SingleConsumerOnlyUnboundedMailbox...支持,如果达到容量,则在排队时阻塞 是否阻塞:如果与非零mailbox-push-timeout-time一起使用,则为Yes,否则为NO 是否有界:Yes 配置名称:akka.dispatch.BoundedControlAwareMailbox

    1.6K30
    领券