Akka 中文指南
Akka 是一个用 Scala 编写的库,用于在 JVM 平台上简化编写可容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用,其同时提供了Java 和 Scala 的开发接口。Akka 允许我们专注于满足业务需求,而不是编写初级代码。
安正勋
点点滴滴,皆是学问,看到了、学会了、记住了,便是收获、便是进步。
展开
-
Akka 指南 之「断路器」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录断路器为什么要使用它们?它们做什么?示例初始化基于 Future 和同步的 API显式控制失败计数底层 API断路器为什么要使用它们?在分布式系统中,断路器(circuit breaker)用于提供稳定性和防止级联故障(cascading failures)。这些应该...翻译 2019-10-24 10:07:11 · 861 阅读 · 0 评论 -
Akka 指南 之「分布式数据」
当需要在 Akka 集群中的节点之间共享数据时,Akka 分布式数据非常有用。通过提供类似 API 的键值存储的 Actor 访问数据。键是具有数据值类型信息的唯一标识符。这些值是无冲突的复制数据类型(`Conflict Free Replicated Data Types (CRDTs)`)。所有数据条目都通过直接复制和基于`gossip`的协议传播到集群中的所有节点或具有特定角色的节点。你可以对读写的一致性级别进行细粒度控制。自然`CRDTs`可以在不协调的情况下从任何节点执行更新。来自不同节点翻译 2019-06-04 14:03:58 · 3989 阅读 · 1 评论 -
Akka 指南 之「跨多个数据中心集群」
本章介绍如何跨多个数据中心、可用性`zones`或区域使用 Akka 集群。了解使用 Akka 集群时数据中心边界的原因是,与同一数据中心中的节点之间的通信相比,跨数据中心的通信通常具有更高的延迟和更高的故障率。然而,节点的分组并不局限于数据中心的物理边界,即使这是主要的使用情况。由于其他原因,它也可以用作逻辑分组,例如隔离某些节点以提高稳定性,或者将大型集群拆分为较小的节点组以获得更好的可伸缩性。翻译 2019-05-30 19:54:03 · 18486 阅读 · 7 评论 -
Akka 指南 之「集群指标扩展」
集群的成员节点可以收集系统健康指标,并在集群指标扩展的帮助下将其发布到其他集群节点和系统事件总线上注册的订阅者。集群指标信息主要用于负载均衡路由器(`load-balancing routers`),也可用于实现基于指标的高级节点生命周期,例如当 CPU 窃取时间过多时“节点让它崩溃”。如果启用了该功能,状态为「[WeaklyUp](https://doc.akka.io/docs/akka/current/cluster-usage.html#weakly-up)」的集群成员将参与集群指标收集和分翻译 2019-05-28 09:36:23 · 2215 阅读 · 1 评论 -
Akka 指南 之「集群客户端」
不属于集群的 Actor 系统可以通过「[ClusterClient](https://doc.akka.io/japi/akka/2.5/?akka/cluster/client/ClusterClient.html)」与集群中的某个 Actor 通信,客户端可以在属于另一个集群的`ActorSystem`中运行。它只需要知道一个(或多个)节点的位置,用作初始接触点。它将与集群中的某个「[ClusterReceptionist](https://doc.akka.io/japi/akka/2.5/?akk翻译 2019-05-20 17:56:27 · 2884 阅读 · 1 评论 -
Akka 指南 之「集群中的分布式发布订阅」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录集群中的分布式发布订阅依赖简介发布主题组发送集群中的分布式发布订阅依赖为了使用分布式发布订阅(Distributed Publish Subscribe),你需要将以下依赖添加到你的项目中:<!-- Maven --><dependency>...翻译 2019-05-02 15:51:12 · 2928 阅读 · 1 评论 -
Akka 指南 之「FSM」
FSM(有限状态机)是一个抽象的基类,它实现了一个 Akka Actor,并在「Erlang设 计原则」中得到了最好的描述。翻译 2019-04-05 08:32:23 · 3223 阅读 · 4 评论 -
Akka 指南 之「邮箱」
Akka 的邮箱中保存着发给 Actor 的信息。通常,每个 Actor 都有自己的邮箱,但也有例外,如使用`BalancingPool`,则所有路由器(`routees`)将共享一个邮箱实例。翻译 2019-04-04 09:42:23 · 4825 阅读 · 0 评论 -
Akka 指南 之「集群分片」
当你需要将 Actor 分布在集群中的多个节点上,并且希望能够使用它们的逻辑标识符与它们进行交互,但不必关心它们在集群中的物理位置时,集群分片(`Cluster sharding`)非常有用,这也可能随着时间的推移而改变。例如,它可以是表示域驱动设计(`Domain-Driven Design`)术语中聚合根(`Aggregate Roots`)的 Actor。在这里,我们称这些 Actor 为“实体”。这些 Actor 通常具有持久(`durable`)状态,但此功能不限于具有持久状态的 Actor。翻译 2019-04-10 08:13:16 · 2137 阅读 · 0 评论 -
Akka 指南 之「集群单例」
集群单例模式由`akka.cluster.singleton.ClusterSingletonManager`实现。它在所有集群节点或标记有特定角色的一组节点中管理一个单实例 Actor 实例。`ClusterSingletonManager`是一个 Actor,它应该在集群中的所有节点或具有指定角色的所有节点上尽早启动。实际的单例 Actor 是由最老节点上的`ClusterSingletonManager`通过从提供的`Props`创建子 Actor 来启动的。`ClusterSingletonMana翻译 2019-04-09 09:46:56 · 3211 阅读 · 1 评论 -
Akka 指南 之「集群感知路由器」
所有「routers」都可以知道集群中的成员节点,即部署新的路由(`routees`)或在集群中的节点上查找路由。当一个节点无法访问或离开集群时,该节点的路由将自动从路由器中注销。当新节点加入集群时,会根据配置向路由器添加额外的路由。当一个节点在不可访问之后再次可访问时,也会添加路由。翻译 2019-04-08 08:53:52 · 2130 阅读 · 4 评论 -
Akka 指南 之「集群的使用方法」
有关 Akka 集群概念的介绍,请参阅「[集群规范]」。Akka 集群的核心是集群成员(`cluster membership`),以跟踪哪些节点是集群的一部分以及它们的健康状况。翻译 2019-04-07 21:30:10 · 4558 阅读 · 2 评论 -
Akka 指南 之「集群规范」
Akka 集群(`Cluster`)提供了一种容错的、分散的、基于点对点(`peer-to-peer`)的集群成员(`membership`)服务,不存在单点故障或单点瓶颈。它使用`Gossip`协议和自动故障检测器(`failure detector`)来实现这一点。翻译 2019-04-06 00:50:58 · 3187 阅读 · 0 评论 -
Akka 指南 之「Actors」
Actor Model 为编写并发和分布式系统提供了更高级别的抽象。它减少了开发人员必须处理显式锁和线程管理的问题,使编写正确的并发和并行系统变得更容易。1973 年卡尔·休伊特(`Carl Hewitt`)在论文中定义了 Actors,然后通过 Erlang 语言所普及,并且在爱立信(`Ericsson`)成功地建立了高度并发和可靠的电信系统。翻译 2019-04-02 09:01:52 · 53820 阅读 · 5 评论 -
Akka 指南 之「容错」
正如在「Actor System」中所解释的,每个 Actor 都是其子级的监督者,因此每个 Actor 定义了故障处理的监督策略。这一策略不能在 Actor 系统启动之后改变,因为它是 Actor 系统结构的一个组成部分。翻译 2019-04-01 13:36:05 · 2772 阅读 · 3 评论 -
Akka 指南 之「消息传递可靠性」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录消息传递可靠性一般规则讨论:“至多一次”是什么意思?讨论:为什么不保证传递?讨论:消息排序通信故障在 JVM(本地)消息发送的规则小心你对这部分的操作!本地消息发送的可靠性本地消息发送顺序本地顺序与网络顺序有什么关系?高级抽象消息模式事件源带明确确认的邮箱死信应该用死信做什...翻译 2019-03-22 17:15:28 · 1942 阅读 · 0 评论 -
Akka 指南 之「持久化」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录持久化依赖示例项目简介体系结构事件源持久化依赖为了使用 Akka 持久化(Persistence)功能,你必须在项目中添加如下依赖:&amp;amp;amp;lt;!-- Maven --&amp;amp;amp;gt;&amp;amp;amp;lt;dependency&amp;amp;amp翻译 2019-02-14 22:02:46 · 1632 阅读 · 0 评论 -
Akka 指南 之「配置」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录配置从哪里读取配置?使用 JarJar、OneJar、Assembly 或任何 jar-bundler 时自定义 application.conf包括文件配置日志记录关于类加载器的一句话应用程序特定设置配置多个 ActorSystem从自定义位置读取配置Actor 部署配...翻译 2019-02-13 22:09:13 · 4547 阅读 · 0 评论 -
Akka 指南 之「Akka 和 Java 内存模型」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。Akka 和 Java 内存模型使用 LightBend 平台(包括 Scala 和 Akka)的一个主要好处是简化了并发软件的编写过程。本文讨论了 LightBend 平台,特别是 Akka 如何在并发应用程序中处理共享内存。Java 内存模型在 Java 5 之前,Jav...翻译 2019-02-12 23:07:38 · 1435 阅读 · 0 评论 -
Akka 指南 之「位置透明」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。位置透明上一节描述了如何使用 Actor 路径来启用位置透明(location transparency)。这个特殊的特性需要一些额外的解释,因为在编程语言、平台和技术的上下文中,相关术语“透明远程处理(transparent remoting)”的使用方式非常不同。默认分布...翻译 2019-02-12 22:33:26 · 1040 阅读 · 0 评论 -
Akka 指南 之「Actor 引用、路径和地址」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。Actor 引用、路径和地址本章描述如何在可能的分布式 Actor 系统中标识和定位 Actor。它与这样一个核心理念紧密相连:「Actor 系统」形成了内在的监督层次结构,并且 Actor 之间的通信在跨多个网络节点的位置方面是透明的。上图显示了 Actor 系统中最重要的...翻译 2019-02-12 21:00:47 · 1504 阅读 · 0 评论 -
Akka 指南 之「监督和监控」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。监督和监控关于「Actor Systems」的前一节解释了 Actor 如何形成层次结构,以及在构建应用程序时是最小的单元。本节将孤立地研究一个这样的 Actor,解释在实现它时遇到的概念。有关所有细节的更深入参考,请参考「Actors」。Actor 是状态、行为、邮箱、子 A...翻译 2019-02-11 22:09:10 · 1401 阅读 · 1 评论 -
Akka 指南 之「什么是 Actor?」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。什么是 Actor?关于「Actor Systems」的前一节解释了 Actor 如何形成层次结构,以及在构建应用程序时是最小的单元。本节将孤立地研究一个这样的 Actor,解释在实现它时遇到的概念。有关所有细节的更深入参考,请参考「Actors」。Actor 是状态、行为、邮...翻译 2019-01-30 22:02:38 · 1125 阅读 · 0 评论 -
Akka 指南 之「Actor 系统」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。Actor 系统Actor 是封装状态和行为的对象,它们通过交换放在收件人邮箱中的消息进行专门的通信。从某种意义上说,Actor 是面向对象编程最严格的形式,但最好将其视为“人”:当与 Actor 一起建模解决方案时,设想一组人员并为其分配子任务,将其功能安排到组织结构中,并考虑...翻译 2019-01-30 20:06:02 · 859 阅读 · 0 评论 -
Akka 指南 之「术语及概念」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。术语及概念在本章中,我们试图建立一个通用的术语来定义一个坚实的基础,用于交流 Akka 所针对的并发和分布式系统。请注意,对于这些术语中的许多,并没有一个统一的定义。我们试图给出将在 Akka 文档范围内使用的定义。并发 vs. 并行并发和并行是相关的概念,但有一些小的区别。...翻译 2019-01-28 21:49:59 · 458 阅读 · 0 评论 -
Akka 指南 之「第 5 部分: 查询设备组」
第 5 部分: 查询设备组依赖在你项目中添加如下依赖:&amp;amp;lt;!-- Maven --&amp;amp;gt;&amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;com.typesafe.akka&amp;amp;lt;/groupId&amp;amp;gt;翻译 2019-01-17 23:28:56 · 1168 阅读 · 0 评论 -
Akka 指南 之「第 4 部分: 使用设备组」
第 4 部分: 使用设备组依赖在你项目中添加如下依赖:&amp;amp;lt;!-- Maven --&amp;amp;gt;&amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;com.typesafe.akka&amp;amp;lt;/groupId&amp;amp;gt;翻译 2019-01-17 21:57:21 · 488 阅读 · 0 评论 -
Akka 指南 之「第 3 部分: 使用设备 Actors」
第 3 部分: 使用设备 Actors依赖在你项目中添加如下依赖:&amp;lt;!-- Maven --&amp;gt;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.typesafe.akka&amp;lt;/groupId&amp;gt; &amp;lt;artifactI翻译 2019-01-17 07:51:23 · 526 阅读 · 3 评论 -
Akka 指南 之「第 2 部分: 创建第一个 Actor」
第 2 部分: 创建第一个 Actor依赖在你项目中添加如下依赖:&amp;lt;!-- Maven --&amp;gt;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.typesafe.akka&amp;lt;/groupId&amp;gt; &amp;lt;artifactI翻译 2019-01-16 22:36:02 · 1378 阅读 · 3 评论 -
Akka 指南 之「第 1 部分: Actor 的体系结构」
第 1 部分: Actor 的体系结构依赖在你项目中添加如下依赖:&amp;amp;amp;lt;!-- Maven --&amp;amp;amp;gt;&amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&amp;amp;amp;gt;com.typesafe.akka&amp;amp;amp;翻译 2019-01-16 20:21:54 · 1091 阅读 · 0 评论 -
Akka 指南 之「Akka 应用程序示例简介」
Akka 应用程序示例简介写散文时,最难的部分往往是写前几句话。在开始构建 Akka 系统时,也有类似的“空白画布(blank canvas)”感觉。你可能会想:哪个应该是第一个 Actor?它应该保存在哪里?它应该做什么?幸运的是,与散文不同,既定的最佳实践可以指导我们完成这些初始步骤。在本文的其余部分中,我们将研究一个简单的 Akka 应用程序的核心逻辑,以向你介绍 Actors,并向您展示...翻译 2019-01-16 09:02:10 · 733 阅读 · 0 评论 -
Akka 指南 之「Akka 库和模块概述」
Akka 库和模块概述在深入研究 Actors 编程的一些最佳实践之前,预览最常用的 Akka 库会很有帮助。这将帮助你开始考虑你要在系统中使用的功能。所有核心的 Akka 功能都可以作为开源软件(OSS)提供。Lightbend 支持 Akka 开发,但也可以给你提供「商业服务」,如培训、咨询、支持和「企业套件」,这是一套用于管理 Akka 系统的综合工具。Akka OSS 包含以下功能,稍...翻译 2019-01-16 08:10:35 · 1558 阅读 · 1 评论 -
Akka 指南 之「Actor 模型如何满足现代分布式系统的需求?」
Actor 模型如何满足现代分布式系统的需求?如前一主题所述,常见的编程实践不能合适地满足现代系统的需求。幸运的是,我们不需要放弃我们所知道的一切。相反,Actor 模型以一种原则性的方式解决了这些缺点,允许系统以更好地匹配我们的构思模型(mental model)的方式运行。Actor 模型抽象允许你从通信的角度来考虑你的代码,这与大型组织中人员之间发生的交换没有什么不同。As descri...翻译 2019-01-15 22:36:16 · 1532 阅读 · 0 评论 -
Akka 指南 之「为什么现代系统需要新的编程模型?」
为什么现代系统需要新的编程模型?几十年前,卡尔·休伊特(Carl Hewitt)提出了 Actor 模型,将其作为在高性能网络中处理并行任务的一种方法——当时还没有这种环境。如今,硬件和基础设施能力已经赶上并超过了休伊特的设想。因此,构建高性能(demanding requirements)的分布式系统会遇到传统面向对象编程(OOP)模型无法完全解决的挑战,但这可以从 Actor 模型中获益。...翻译 2019-01-15 07:50:21 · 1135 阅读 · 4 评论 -
Akka 指南 之「Akka 简介」
Akka 简介欢迎来到 Akka,它是一组用于设计跨越处理器和网络的可扩展、弹性系统的开源库。Akka 允许你专注于满足业务需求,而不是编写初级代码来提供可靠的行为、容错性和高性能。许多常见的实践和公认的编程模型并不能解决现代计算机体系结构所固有的重要挑战。为了取得成功,分布式系统必须在组件崩溃而没有响应、消息丢失而没有在线跟踪以及网络延迟波动的环境中进行处理。这些问题经常发生在精心管理的数据...翻译 2019-01-13 15:01:48 · 1083 阅读 · 0 评论 -
Akka 指南 之「安全公告」
安全公告接收安全建议接收所有安全公告的最好方法是订阅 Akka 安全列表。发送安全邮件列表的频繁非常低,只有在安全报告被核心团队接收和修复后才会发送通知。报告漏洞我们强烈鼓励人们在公共论坛上披露这些问题之前,先向我们的私人安全邮件列表报告这些问题。根据最佳实践,我们强烈建议任何人在公共论坛如邮件列表或者 Github 问题上披露安全漏洞之前,先向 security@akka.io 报告...翻译 2019-01-13 13:57:26 · 584 阅读 · 0 评论 -
Akka 中文指南
目录安全公告(Security Announcements)入门指南(Getting Started Guide)Akka简介(Introduction to Akka)原文链接:https://doc.akka.io/docs/akka/current/guide/introduction.html原创 2019-01-11 11:33:45 · 4244 阅读 · 3 评论