译文那些事儿
安正勋
点点滴滴,皆是学问,看到了、学会了、记住了,便是收获、便是进步。
展开
-
Akka 指南 之「分布式数据」
当需要在 Akka 集群中的节点之间共享数据时,Akka 分布式数据非常有用。通过提供类似 API 的键值存储的 Actor 访问数据。键是具有数据值类型信息的唯一标识符。这些值是无冲突的复制数据类型(`Conflict Free Replicated Data Types (CRDTs)`)。所有数据条目都通过直接复制和基于`gossip`的协议传播到集群中的所有节点或具有特定角色的节点。你可以对读写的一致性级别进行细粒度控制。自然`CRDTs`可以在不协调的情况下从任何节点执行更新。来自不同节点翻译 2019-06-04 14:03:58 · 3951 阅读 · 1 评论 -
Akka 指南 之「调度器」
正如在 Actor System 中所解释的,每个 Actor 都是其子级的监督者,因此每个 Actor 定义了故障处理的监督策略。这一策略不能在 Actor 系统启动之后改变,因为它是 Actor 系统结构的一个组成部分。翻译 2019-04-03 13:33:26 · 1512 阅读 · 0 评论 -
Akka 指南 之「容错」
正如在「Actor System」中所解释的,每个 Actor 都是其子级的监督者,因此每个 Actor 定义了故障处理的监督策略。这一策略不能在 Actor 系统启动之后改变,因为它是 Actor 系统结构的一个组成部分。翻译 2019-04-01 13:36:05 · 2748 阅读 · 3 评论 -
Akka 指南 之「FSM」
FSM(有限状态机)是一个抽象的基类,它实现了一个 Akka Actor,并在「Erlang设 计原则」中得到了最好的描述。翻译 2019-04-05 08:32:23 · 3185 阅读 · 4 评论 -
Akka 指南 之「邮箱」
Akka 的邮箱中保存着发给 Actor 的信息。通常,每个 Actor 都有自己的邮箱,但也有例外,如使用`BalancingPool`,则所有路由器(`routees`)将共享一个邮箱实例。翻译 2019-04-04 09:42:23 · 4786 阅读 · 0 评论 -
Akka 指南 之「消息传递可靠性」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录消息传递可靠性一般规则讨论:“至多一次”是什么意思?讨论:为什么不保证传递?讨论:消息排序通信故障在 JVM(本地)消息发送的规则小心你对这部分的操作!本地消息发送的可靠性本地消息发送顺序本地顺序与网络顺序有什么关系?高级抽象消息模式事件源带明确确认的邮箱死信应该用死信做什...翻译 2019-03-22 17:15:28 · 1908 阅读 · 0 评论 -
Akka 指南 之「Actors」
Actor Model 为编写并发和分布式系统提供了更高级别的抽象。它减少了开发人员必须处理显式锁和线程管理的问题,使编写正确的并发和并行系统变得更容易。1973 年卡尔·休伊特(`Carl Hewitt`)在论文中定义了 Actors,然后通过 Erlang 语言所普及,并且在爱立信(`Ericsson`)成功地建立了高度并发和可靠的电信系统。翻译 2019-04-02 09:01:52 · 53753 阅读 · 5 评论 -
Akka 指南 之「集群规范」
Akka 集群(`Cluster`)提供了一种容错的、分散的、基于点对点(`peer-to-peer`)的集群成员(`membership`)服务,不存在单点故障或单点瓶颈。它使用`Gossip`协议和自动故障检测器(`failure detector`)来实现这一点。翻译 2019-04-06 00:50:58 · 3153 阅读 · 0 评论 -
Akka 指南 之「集群指标扩展」
集群的成员节点可以收集系统健康指标,并在集群指标扩展的帮助下将其发布到其他集群节点和系统事件总线上注册的订阅者。集群指标信息主要用于负载均衡路由器(`load-balancing routers`),也可用于实现基于指标的高级节点生命周期,例如当 CPU 窃取时间过多时“节点让它崩溃”。如果启用了该功能,状态为「[WeaklyUp](https://doc.akka.io/docs/akka/current/cluster-usage.html#weakly-up)」的集群成员将参与集群指标收集和分翻译 2019-05-28 09:36:23 · 2178 阅读 · 1 评论 -
Akka 指南 之「跨多个数据中心集群」
本章介绍如何跨多个数据中心、可用性`zones`或区域使用 Akka 集群。了解使用 Akka 集群时数据中心边界的原因是,与同一数据中心中的节点之间的通信相比,跨数据中心的通信通常具有更高的延迟和更高的故障率。然而,节点的分组并不局限于数据中心的物理边界,即使这是主要的使用情况。由于其他原因,它也可以用作逻辑分组,例如隔离某些节点以提高稳定性,或者将大型集群拆分为较小的节点组以获得更好的可伸缩性。翻译 2019-05-30 19:54:03 · 18449 阅读 · 7 评论 -
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 · 2840 阅读 · 1 评论 -
Elasticsearch 6.6 官方文档 之「集群」
`master`的一个主要角色是决定分配哪些分片给哪些节点,以及何时在节点之间移动分片以重新平衡集群。有许多设置可用于控制分片分配过程:- 集群等级分片分配(`Cluster Level Shard Allocation`)列出了控制分配和重新平衡操作的设置。- 基于磁盘的分片分配(`Disk-based Shard Allocation`)解释了 Elasticsearch 如何考虑可用磁盘空间以及相关设置。- 分片分配感知(`Shard Allocation Awareness`)和强制感知翻译 2019-05-07 21:43:41 · 5232 阅读 · 1 评论 -
Elasticsearch 6.6 官方文档 之「索引分片分配」
在本模块中,提供每个索引的设置,以控制分片到节点的分配:- [分片分配过滤](https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-allocation-filtering.html):`Shard allocation filtering`,控制将哪些分片(`shard`)分配(`allocation`)给哪些节点。- [延迟分配](https://www.elastic.co/guide/en/elasticse翻译 2019-05-14 15:18:12 · 5278 阅读 · 6 评论 -
Elasticsearch 5.x 版本中的冷热数据架构
当使用 Elasticsearch 进行更大的时间数据分析用例时,我们建议使用基于时间(`time-based`)的索引和具有 3 种不同类型节点(主节点、热节点和冷节点)的分层架构,我们称之为`Hot-Warm`架构。每个节点都有自己的特性,如下所述。翻译 2019-04-20 09:47:12 · 2384 阅读 · 0 评论 -
Akka 指南 之「集群中的分布式发布订阅」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录集群中的分布式发布订阅依赖简介发布主题组发送集群中的分布式发布订阅依赖为了使用分布式发布订阅(Distributed Publish Subscribe),你需要将以下依赖添加到你的项目中:<!-- Maven --><dependency>...翻译 2019-05-02 15:51:12 · 2903 阅读 · 1 评论 -
Elasticsearch 6.6 官方文档 之「节点」
每次启动 Elasticsearch 实例时,都会启动一个节点。连接节点的集合称之为「集群」。如果你运行的是单个 Elasticsearch 节点,那么你也就拥有一个由一个节点组成的集群。翻译 2019-04-23 09:35:48 · 4486 阅读 · 2 评论 -
Elasticsearch 6.6 官方文档 之「快照和还原」
快照(`snapshot`)是从正在运行的 Elasticsearch 集群中获取的备份。你可以获取单个索引(`indices`)或整个集群的快照,并将其存储在共享文件系统上的存储库中,并且有支持 S3、HDFS、Azure、Google 云存储等远程存储库的插件。快照是递增的。这意味着,创建索引快照时,Elasticsearch 将避免复制存储库中已存储的任何数据,作为同一索引的早期快照的一部分。因此,频繁地对集群进行快照是很有效的。翻译 2019-04-22 15:10:50 · 9897 阅读 · 0 评论 -
Akka 指南 之「集群分片」
当你需要将 Actor 分布在集群中的多个节点上,并且希望能够使用它们的逻辑标识符与它们进行交互,但不必关心它们在集群中的物理位置时,集群分片(`Cluster sharding`)非常有用,这也可能随着时间的推移而改变。例如,它可以是表示域驱动设计(`Domain-Driven Design`)术语中聚合根(`Aggregate Roots`)的 Actor。在这里,我们称这些 Actor 为“实体”。这些 Actor 通常具有持久(`durable`)状态,但此功能不限于具有持久状态的 Actor。翻译 2019-04-10 08:13:16 · 2105 阅读 · 0 评论 -
Akka 指南 之「集群单例」
集群单例模式由`akka.cluster.singleton.ClusterSingletonManager`实现。它在所有集群节点或标记有特定角色的一组节点中管理一个单实例 Actor 实例。`ClusterSingletonManager`是一个 Actor,它应该在集群中的所有节点或具有指定角色的所有节点上尽早启动。实际的单例 Actor 是由最老节点上的`ClusterSingletonManager`通过从提供的`Props`创建子 Actor 来启动的。`ClusterSingletonMana翻译 2019-04-09 09:46:56 · 3192 阅读 · 1 评论 -
Akka 指南 之「集群感知路由器」
所有「routers」都可以知道集群中的成员节点,即部署新的路由(`routees`)或在集群中的节点上查找路由。当一个节点无法访问或离开集群时,该节点的路由将自动从路由器中注销。当新节点加入集群时,会根据配置向路由器添加额外的路由。当一个节点在不可访问之后再次可访问时,也会添加路由。翻译 2019-04-08 08:53:52 · 2112 阅读 · 4 评论 -
Akka 指南 之「集群的使用方法」
有关 Akka 集群概念的介绍,请参阅「[集群规范]」。Akka 集群的核心是集群成员(`cluster membership`),以跟踪哪些节点是集群的一部分以及它们的健康状况。翻译 2019-04-07 21:30:10 · 4513 阅读 · 2 评论 -
Akka 指南 之「配置」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。文章目录配置从哪里读取配置?使用 JarJar、OneJar、Assembly 或任何 jar-bundler 时自定义 application.conf包括文件配置日志记录关于类加载器的一句话应用程序特定设置配置多个 ActorSystem从自定义位置读取配置Actor 部署配...翻译 2019-02-13 22:09:13 · 4469 阅读 · 0 评论 -
Akka 指南 之「Akka 简介」
Akka 简介欢迎来到 Akka,它是一组用于设计跨越处理器和网络的可扩展、弹性系统的开源库。Akka 允许你专注于满足业务需求,而不是编写初级代码来提供可靠的行为、容错性和高性能。许多常见的实践和公认的编程模型并不能解决现代计算机体系结构所固有的重要挑战。为了取得成功,分布式系统必须在组件崩溃而没有响应、消息丢失而没有在线跟踪以及网络延迟波动的环境中进行处理。这些问题经常发生在精心管理的数据...翻译 2019-01-13 15:01:48 · 1064 阅读 · 0 评论 -
Akka 指南 之「安全公告」
安全公告接收安全建议接收所有安全公告的最好方法是订阅 Akka 安全列表。发送安全邮件列表的频繁非常低,只有在安全报告被核心团队接收和修复后才会发送通知。报告漏洞我们强烈鼓励人们在公共论坛上披露这些问题之前,先向我们的私人安全邮件列表报告这些问题。根据最佳实践,我们强烈建议任何人在公共论坛如邮件列表或者 Github 问题上披露安全漏洞之前,先向 security@akka.io 报告...翻译 2019-01-13 13:57:26 · 566 阅读 · 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 · 1147 阅读 · 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 · 469 阅读 · 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 · 4190 阅读 · 3 评论 -
深入理解 GitHub Flow
GitHub Flow 是一个轻量级,基于分支的工作流,其支持团队和项目的定期部署。本指南介绍了 GitHub Flow 的工作原理。1. 创建分支(Create a branch)2. 添加提交(Add commit)3. 提出 Pull 请求(Open a pull request)4. 讨论和评估你的代码(Discuss and review your code)5. 发布(Deploy)6.翻译 2017-03-24 19:14:29 · 13105 阅读 · 2 评论 -
Hello World · GitHub 指南
前言Hello World 项目是计算机编程历史中悠久的传统。在咱们学习新知识的时候,她也是一个简单的练习。现在,就让咱们一起了解 GitHub 吧!你将学会,如何:创建和使用仓库;启用和管理一个新的分支;修改一个文件并将其提交到 GitHub;打开并合并一个 pull 请求。翻译 2017-03-24 11:33:14 · 17752 阅读 · 8 评论 -
Google Guava 中文指南
温馨提示:Guava 中文指南的 GitHub 地址为 guava-guide,欢迎大家Star、Fork,纠错。Guava 中文指南 Guava 项目包含若干被 Google 的 Java 项目依赖的核心类库,例如:集合、缓存、原生类型支持、并发库、通用注解、字符串处理、I/O 等等。Google 的开发者们每天都在使用这些工具进行项目的开发。但是查阅 Javadoc 并不总是最有效的学习这些原创 2017-09-13 20:08:47 · 15770 阅读 · 2 评论 -
Guava 指南 之「通用 Object 方法」
通用 Object 方法equals当你的对象含有的多个字段可能为null的时候,实现Object.equals会很痛苦,因为你不得不分别对它们进行null检查。使用Objects.equal能够帮助你用一个对null敏感的方式执行equals检查,而不必冒着抛出NullPointerException的风险。例如:Objects.equal("a", "a"); // returns tru翻译 2017-09-24 12:32:28 · 1050 阅读 · 0 评论 -
Guava 指南 之「Throwable」
异常传播有时候,当你捕获一个异常时,你想将其返回到下一个try/catch块。这样的例子有很多,例如在出现RuntimeException和Error的情况下,不需要try/catch块,你也不想捕获它们,但是它们仍然被try/catch块捕获。Guava 提供了一些工具类来简化异常传播。例如:try { someMethodThatCouldThrowAnything();} catc翻译 2017-09-15 22:09:46 · 1404 阅读 · 0 评论 -
Guava 指南 之「使用和避免 null」
使用和避免null “null,糟糕透啦!” —— Doug Lea. “我称呼null为百亿美金的错误!” —— C. A. R. Hoare.轻率地使用null可能导致很多令人惊愕的问题。通过研究谷歌的代码,我们发现:95% 的集合不接受null作为元素,因此相比于默默地接受null,使用快速失败的操作拒绝null值对开发者更有帮助。此外,null的模糊性会让人很不爽。我们很难知道返翻译 2017-09-16 15:42:47 · 5730 阅读 · 1 评论 -
Guava 指南 之「前置条件」
前置条件Guava 提供了很多用于进行前置条件检查的工具,我们强烈建议静态导入这些方法。每个方法都用三种形式:没有额外的参数。抛出的任何异常都没有错误信息。有一个额外的Object参数。抛出的任何异常都带有一个object.toString()的错误信息。有一个额外的String参数以及任意数量的附加Object参数。这些行为类似于printf,但是为了 GWT 兼容性和高效性仅允许%s,例如翻译 2017-09-22 18:20:28 · 1384 阅读 · 0 评论 -
19+ JavaScript 常用的简写技巧
博主说:对于任何基于 JavaScript 的开发人员来说,这绝对是一篇必读的文章,此乃提升开发效率之神器也。正文1. 三元操作符当你想用一行代码来写if...else语句的时候,使用三元操作符是非常好的选择,例如:const x = 20;let answer;if (x > 10) { answer = 'is greater';} else { answer = 'is翻译 2017-07-26 21:53:33 · 10042 阅读 · 18 评论 -
作为一个开发人员,你需要知道的 15 个 Chrome 扩展
1 前言 Chrome,是一个由 Google 公司开发的网页浏览器。该浏览器是基于其他开源软件所撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。但是 Chrome 的优点并不局限于此,称其为一个优秀的开发者伴侣也不过为,因为其为开放者提供了丰富的扩展工具,咱们可以通过访问“ Google Developer ”来获取更为详细的内容。在本篇博文中,通过翻译翻译 2017-03-11 21:32:35 · 2411 阅读 · 0 评论 -
Akka 指南 之「为什么现代系统需要新的编程模型?」
为什么现代系统需要新的编程模型?几十年前,卡尔·休伊特(Carl Hewitt)提出了 Actor 模型,将其作为在高性能网络中处理并行任务的一种方法——当时还没有这种环境。如今,硬件和基础设施能力已经赶上并超过了休伊特的设想。因此,构建高性能(demanding requirements)的分布式系统会遇到传统面向对象编程(OOP)模型无法完全解决的挑战,但这可以从 Actor 模型中获益。...翻译 2019-01-15 07:50:21 · 1103 阅读 · 4 评论 -
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 · 1408 阅读 · 0 评论 -
Akka 指南 之「位置透明」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。位置透明上一节描述了如何使用 Actor 路径来启用位置透明(location transparency)。这个特殊的特性需要一些额外的解释,因为在编程语言、平台和技术的上下文中,相关术语“透明远程处理(transparent remoting)”的使用方式非常不同。默认分布...翻译 2019-02-12 22:33:26 · 1025 阅读 · 0 评论 -
Akka 指南 之「Actor 引用、路径和地址」
温馨提示:Akka 中文指南的 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。Actor 引用、路径和地址本章描述如何在可能的分布式 Actor 系统中标识和定位 Actor。它与这样一个核心理念紧密相连:「Actor 系统」形成了内在的监督层次结构,并且 Actor 之间的通信在跨多个网络节点的位置方面是透明的。上图显示了 Actor 系统中最重要的...翻译 2019-02-12 21:00:47 · 1447 阅读 · 0 评论